@bonkit/airdrop-sdk 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +10540 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +4850 -0
- package/dist/index.d.ts +4850 -0
- package/dist/index.js +10466 -0
- package/dist/index.js.map +1 -0
- package/package.json +44 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../sdk-core/src/client-base.ts","../../sdk-core/src/accounts.ts","../../sdk-core/src/constants.ts","../../sdk-core/src/onchain-list.ts","../../sdk-core/src/priority-fee.ts","../../sdk-core/src/instructions/builders-shared.ts","../../sdk-core/src/instructions/append-onchain-recipients.ts","../../sdk-core/src/instructions/cancel-merkle-airdrop.ts","../../sdk-core/src/instructions/cancel-onchain-airdrop.ts","../../sdk-core/src/instructions/claim-merkle-tokens.ts","../../sdk-core/src/instructions/claim-onchain-tokens.ts","../../sdk-core/src/instructions/create-merkle-airdrop.ts","../../sdk-core/src/instructions/create-onchain-airdrop.ts","../../sdk-core/src/instructions/deposit-merkle-airdrop.ts","../../sdk-core/src/instructions/deposit-onchain-airdrop.ts","../../sdk-core/src/instructions/register-merkle-root.ts","../../sdk-core/src/instructions/start-merkle-airdrop.ts","../../sdk-core/src/instructions/start-onchain-airdrop.ts","../../sdk-core/src/instructions/withdraw-merkle-airdrop.ts","../../sdk-core/src/instructions/withdraw-onchain-airdrop.ts","../idl/airdrop-studio-contract.json","../src/deployments.ts","../src/client.ts","../../sdk-core/src/errors.ts","../../sdk-core/idl/airdrop-studio-contract.json","../../sdk-core/src/merkle.ts","../../../node_modules/.pnpm/@noble+hashes@1.8.0/node_modules/@noble/hashes/src/_u64.ts","../../../node_modules/.pnpm/@noble+hashes@1.8.0/node_modules/@noble/hashes/src/utils.ts","../../../node_modules/.pnpm/@noble+hashes@1.8.0/node_modules/@noble/hashes/src/sha3.ts","../../sdk-core/src/mint-validation.ts"],"sourcesContent":["import { Program } from '@coral-xyz/anchor'\nimport type { Idl } from '@coral-xyz/anchor'\nimport type { Commitment, Connection, Signer, TransactionInstruction } from '@solana/web3.js'\nimport {\n AddressLookupTableAccount,\n PublicKey,\n TransactionMessage,\n VersionedTransaction,\n} from '@solana/web3.js'\n\nimport type { AirdropStudioContract } from '../idl/airdrop-studio-contract'\nimport { createPdas, type AirdropStudioPdas } from './accounts'\nimport type { AirdropStudioAccounts } from './types'\nimport type { AirdropStudioNetwork } from './constants'\nimport type { AirdropStudioDeploymentConfig } from './deployment-config'\nimport { parseListChunk, type OnchainRecipient } from './onchain-list'\nimport {\n appendOnchainRecipientsInstruction,\n cancelMerkleAirdropInstruction,\n cancelOnchainAirdropInstruction,\n claimMerkleTokensInstruction,\n claimOnchainTokensInstruction,\n createMerkleAirdropInstruction,\n createOnchainAirdropInstruction,\n depositMerkleAirdropInstruction,\n depositOnchainAirdropInstruction,\n registerMerkleRootInstruction,\n startMerkleAirdropInstruction,\n startOnchainAirdropInstruction,\n withdrawMerkleAirdropInstruction,\n withdrawOnchainAirdropInstruction,\n type AppendOnchainRecipientsArgs,\n type CancelMerkleAirdropArgs,\n type CancelOnchainAirdropArgs,\n type ClaimMerkleTokensArgs,\n type ClaimOnchainTokensArgs,\n type CreateMerkleAirdropArgs,\n type CreateOnchainAirdropArgs,\n type DepositMerkleAirdropArgs,\n type DepositOnchainAirdropArgs,\n type RegisterMerkleRootArgs,\n type StartMerkleAirdropArgs,\n type StartOnchainAirdropArgs,\n type WithdrawMerkleAirdropArgs,\n type WithdrawOnchainAirdropArgs,\n type AutoInstructionContext,\n} from './instructions'\n\nexport type AirdropStudioProgram = Program<AirdropStudioContract>\n\nexport type AirdropStudioClientConfig<TDeployment extends string> = {\n connection: Connection\n network: AirdropStudioNetwork\n deployment?: TDeployment\n defaultCommitment?: Commitment\n lookupTableAddress?: PublicKey\n}\n\nexport type LookupTableUsage = 'use' | 'none'\n\nexport type TransactionBuildOptions = {\n payer: PublicKey\n commitment?: Commitment\n signers?: Signer[]\n useLookupTable?: LookupTableUsage\n}\n\nexport type ListOnchainRecipientsArgs = {\n airdrop: PublicKey\n offset?: number\n limit?: number\n commitment?: Commitment\n}\n\nexport type FetchClaimStatusFromLeafArgs = {\n airdrop: PublicKey\n leaf: Uint8Array\n commitment?: Commitment\n}\n\nexport type FetchClaimStatusFromIndexArgs = {\n airdrop: PublicKey\n entryIndex: number\n commitment?: Commitment\n}\n\ntype BuildTransactionParams = {\n payer: PublicKey\n instructions: TransactionInstruction[]\n commitment?: Commitment\n signers?: Signer[]\n useLookupTable?: LookupTableUsage\n}\n\nexport class AirdropStudioClientBase<TDeployment extends string> {\n readonly program: AirdropStudioProgram\n readonly pdas: AirdropStudioPdas\n readonly connection: Connection\n readonly deployment: TDeployment\n readonly network: Exclude<AirdropStudioNetwork, 'mainnet'>\n lookupTableAddress: PublicKey | null\n readonly defaultCommitment: Commitment\n private lookupTableAccount: AddressLookupTableAccount | null = null\n\n protected constructor(\n config: AirdropStudioClientConfig<TDeployment>,\n program: AirdropStudioProgram,\n deploymentConfig: AirdropStudioDeploymentConfig<TDeployment>,\n ) {\n this.connection = config.connection\n this.deployment = deploymentConfig.deployment\n this.network = AirdropStudioClientBase.normalizeNetwork(config.network)\n const isLocalnet = AirdropStudioClientBase.isLocalRpcEndpoint(config.connection.rpcEndpoint)\n this.lookupTableAddress = isLocalnet\n ? (config.lookupTableAddress ?? null)\n : (config.lookupTableAddress ?? deploymentConfig.networkAltAddresses[this.network] ?? null)\n this.defaultCommitment = config.defaultCommitment ?? 'confirmed'\n this.program = program\n this.pdas = createPdas(program.programId)\n }\n\n static createProgram(\n connection: Connection,\n deploymentConfig: AirdropStudioDeploymentConfig<string>,\n ) {\n return new Program<AirdropStudioContract>(deploymentConfig.idl as Idl, {\n connection,\n })\n }\n\n static assertProgramIdMatchesDeployment(\n program: AirdropStudioProgram,\n deploymentConfig: AirdropStudioDeploymentConfig<string>,\n ) {\n if (!program.programId.equals(deploymentConfig.programId)) {\n throw new Error(\n `Deployment ${deploymentConfig.deployment} program id mismatch between IDL and constants.`,\n )\n }\n }\n\n async fetchStudioConfig(\n commitment?: Commitment,\n ): Promise<AirdropStudioAccounts['airdropStudioConfig']> {\n try {\n return await this.program.account.airdropStudioConfig.fetch(\n this.pdas.studioConfig(),\n commitment,\n )\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n throw new Error(`Unable to fetch AirdropStudioConfig: ${message}`)\n }\n }\n\n async fetchProtocolVault(commitment?: Commitment) {\n const config = await this.fetchStudioConfig(commitment)\n return config.protocolVault\n }\n\n async appendOnchainRecipients(args: AppendOnchainRecipientsArgs & TransactionBuildOptions) {\n const { payer, commitment, signers, useLookupTable, ...instructionArgs } = args\n const resolvedCommitment = this.resolveCommitment(commitment)\n const instructions = await appendOnchainRecipientsInstruction(\n instructionArgs,\n this.autoInstructionContext(resolvedCommitment),\n )\n return this.buildVersionedTransaction({\n payer,\n instructions,\n commitment: resolvedCommitment,\n signers,\n useLookupTable: useLookupTable ?? 'none',\n })\n }\n\n async listOnchainRecipients({\n airdrop,\n offset = 0,\n limit,\n commitment,\n }: ListOnchainRecipientsArgs): Promise<OnchainRecipient[]> {\n if (offset < 0) {\n throw new Error('Offset must be non-negative.')\n }\n if (typeof limit === 'number' && limit < 0) {\n throw new Error('Limit must be non-negative.')\n }\n\n const resolvedCommitment = this.resolveCommitment(commitment)\n const listRoot = this.pdas.listRoot(airdrop)\n const listChunk = this.pdas.listChunk(airdrop)\n const [listRootInfo, listChunkInfo] = await Promise.all([\n this.connection.getAccountInfo(listRoot, resolvedCommitment),\n this.connection.getAccountInfo(listChunk, resolvedCommitment),\n ])\n\n if (!listRootInfo) {\n throw new Error('List root account not found.')\n }\n if (!listChunkInfo) {\n return []\n }\n\n const listRootAccount = this.program.coder.accounts.decode(\n 'listRoot',\n listRootInfo.data,\n ) as AirdropStudioAccounts['listRoot']\n const totalCount = listRootAccount.totalCount\n const recipients = parseListChunk(listChunkInfo.data, totalCount)\n\n if (offset >= recipients.length) {\n return []\n }\n if (typeof limit === 'number') {\n return recipients.slice(offset, offset + limit)\n }\n return recipients.slice(offset)\n }\n\n async fetchClaimStatusFromLeaf({\n airdrop,\n leaf,\n commitment,\n }: FetchClaimStatusFromLeafArgs): Promise<AirdropStudioAccounts['claimStatus'] | null> {\n const resolvedCommitment = this.resolveCommitment(commitment)\n const claimStatus = this.pdas.claimStatusFromLeaf(airdrop, leaf)\n return this.program.account.claimStatus.fetchNullable(claimStatus, resolvedCommitment)\n }\n\n async fetchClaimStatusFromIndex({\n airdrop,\n entryIndex,\n commitment,\n }: FetchClaimStatusFromIndexArgs): Promise<AirdropStudioAccounts['claimStatus'] | null> {\n const resolvedCommitment = this.resolveCommitment(commitment)\n const claimStatus = this.pdas.claimStatusFromIndex(airdrop, entryIndex)\n return this.program.account.claimStatus.fetchNullable(claimStatus, resolvedCommitment)\n }\n\n async cancelMerkleAirdrop(args: CancelMerkleAirdropArgs & TransactionBuildOptions) {\n const { payer, commitment, signers, useLookupTable, ...instructionArgs } = args\n const resolvedCommitment = this.resolveCommitment(commitment)\n const instructions = await cancelMerkleAirdropInstruction(\n instructionArgs,\n this.autoInstructionContext(resolvedCommitment),\n )\n return this.buildVersionedTransaction({\n payer,\n instructions,\n commitment: resolvedCommitment,\n signers,\n useLookupTable: useLookupTable ?? 'none',\n })\n }\n\n async cancelOnchainAirdrop(args: CancelOnchainAirdropArgs & TransactionBuildOptions) {\n const { payer, commitment, signers, useLookupTable, ...instructionArgs } = args\n const resolvedCommitment = this.resolveCommitment(commitment)\n const instructions = await cancelOnchainAirdropInstruction(\n instructionArgs,\n this.autoInstructionContext(resolvedCommitment),\n )\n return this.buildVersionedTransaction({\n payer,\n instructions,\n commitment: resolvedCommitment,\n signers,\n useLookupTable: useLookupTable ?? 'none',\n })\n }\n\n async claimMerkleTokens(args: ClaimMerkleTokensArgs & TransactionBuildOptions) {\n const { payer, commitment, signers, useLookupTable, ...instructionArgs } = args\n const resolvedCommitment = this.resolveCommitment(commitment)\n const instructions = await claimMerkleTokensInstruction(\n instructionArgs,\n this.autoInstructionContext(resolvedCommitment),\n )\n return this.buildVersionedTransaction({\n payer,\n instructions,\n commitment: resolvedCommitment,\n signers,\n useLookupTable: useLookupTable ?? 'use',\n })\n }\n\n async claimOnchainTokens(args: ClaimOnchainTokensArgs & TransactionBuildOptions) {\n const { payer, commitment, signers, useLookupTable, ...instructionArgs } = args\n const resolvedCommitment = this.resolveCommitment(commitment)\n const instructions = await claimOnchainTokensInstruction(\n instructionArgs,\n this.autoInstructionContext(resolvedCommitment),\n )\n return this.buildVersionedTransaction({\n payer,\n instructions,\n commitment: resolvedCommitment,\n signers,\n useLookupTable: useLookupTable ?? 'none',\n })\n }\n\n async createMerkleAirdrop(args: CreateMerkleAirdropArgs & TransactionBuildOptions) {\n const { payer, commitment, signers, useLookupTable, ...instructionArgs } = args\n const resolvedCommitment = this.resolveCommitment(commitment)\n const instructions = await createMerkleAirdropInstruction(\n instructionArgs,\n this.autoInstructionContext(resolvedCommitment),\n )\n return this.buildVersionedTransaction({\n payer,\n instructions,\n commitment: resolvedCommitment,\n signers,\n useLookupTable: useLookupTable ?? 'none',\n })\n }\n\n async createOnchainAirdrop(args: CreateOnchainAirdropArgs & TransactionBuildOptions) {\n const { payer, commitment, signers, useLookupTable, ...instructionArgs } = args\n const resolvedCommitment = this.resolveCommitment(commitment)\n const instructions = await createOnchainAirdropInstruction(\n instructionArgs,\n this.autoInstructionContext(resolvedCommitment),\n )\n return this.buildVersionedTransaction({\n payer,\n instructions,\n commitment: resolvedCommitment,\n signers,\n useLookupTable: useLookupTable ?? 'none',\n })\n }\n\n async depositMerkleAirdrop(args: DepositMerkleAirdropArgs & TransactionBuildOptions) {\n const { payer, commitment, signers, useLookupTable, ...instructionArgs } = args\n const resolvedCommitment = this.resolveCommitment(commitment)\n const instructions = await depositMerkleAirdropInstruction(\n instructionArgs,\n this.autoInstructionContext(resolvedCommitment),\n )\n return this.buildVersionedTransaction({\n payer,\n instructions,\n commitment: resolvedCommitment,\n signers,\n useLookupTable: useLookupTable ?? 'none',\n })\n }\n\n async depositOnchainAirdrop(args: DepositOnchainAirdropArgs & TransactionBuildOptions) {\n const { payer, commitment, signers, useLookupTable, ...instructionArgs } = args\n const resolvedCommitment = this.resolveCommitment(commitment)\n const instructions = await depositOnchainAirdropInstruction(\n instructionArgs,\n this.autoInstructionContext(resolvedCommitment),\n )\n return this.buildVersionedTransaction({\n payer,\n instructions,\n commitment: resolvedCommitment,\n signers,\n useLookupTable: useLookupTable ?? 'none',\n })\n }\n\n async registerMerkleRoot(args: RegisterMerkleRootArgs & TransactionBuildOptions) {\n const { payer, commitment, signers, useLookupTable, ...instructionArgs } = args\n const resolvedCommitment = this.resolveCommitment(commitment)\n const instructions = await registerMerkleRootInstruction(\n instructionArgs,\n this.autoInstructionContext(resolvedCommitment),\n )\n return this.buildVersionedTransaction({\n payer,\n instructions,\n commitment: resolvedCommitment,\n signers,\n useLookupTable: useLookupTable ?? 'none',\n })\n }\n\n async startMerkleAirdrop(args: StartMerkleAirdropArgs & TransactionBuildOptions) {\n const { payer, commitment, signers, useLookupTable, ...instructionArgs } = args\n const resolvedCommitment = this.resolveCommitment(commitment)\n const instructions = await startMerkleAirdropInstruction(\n instructionArgs,\n this.autoInstructionContext(resolvedCommitment),\n )\n return this.buildVersionedTransaction({\n payer,\n instructions,\n commitment: resolvedCommitment,\n signers,\n useLookupTable: useLookupTable ?? 'none',\n })\n }\n\n async startOnchainAirdrop(args: StartOnchainAirdropArgs & TransactionBuildOptions) {\n const { payer, commitment, signers, useLookupTable, ...instructionArgs } = args\n const resolvedCommitment = this.resolveCommitment(commitment)\n const instructions = await startOnchainAirdropInstruction(\n instructionArgs,\n this.autoInstructionContext(resolvedCommitment),\n )\n return this.buildVersionedTransaction({\n payer,\n instructions,\n commitment: resolvedCommitment,\n signers,\n useLookupTable: useLookupTable ?? 'none',\n })\n }\n\n async withdrawMerkleAirdrop(args: WithdrawMerkleAirdropArgs & TransactionBuildOptions) {\n const { payer, commitment, signers, useLookupTable, ...instructionArgs } = args\n const resolvedCommitment = this.resolveCommitment(commitment)\n const instructions = await withdrawMerkleAirdropInstruction(\n instructionArgs,\n this.autoInstructionContext(resolvedCommitment),\n )\n return this.buildVersionedTransaction({\n payer,\n instructions,\n commitment: resolvedCommitment,\n signers,\n useLookupTable: useLookupTable ?? 'none',\n })\n }\n\n async withdrawOnchainAirdrop(args: WithdrawOnchainAirdropArgs & TransactionBuildOptions) {\n const { payer, commitment, signers, useLookupTable, ...instructionArgs } = args\n const resolvedCommitment = this.resolveCommitment(commitment)\n const instructions = await withdrawOnchainAirdropInstruction(\n instructionArgs,\n this.autoInstructionContext(resolvedCommitment),\n )\n return this.buildVersionedTransaction({\n payer,\n instructions,\n commitment: resolvedCommitment,\n signers,\n useLookupTable: useLookupTable ?? 'none',\n })\n }\n\n private resolveCommitment(commitment?: Commitment) {\n return commitment ?? this.defaultCommitment\n }\n\n private static normalizeNetwork(\n network: AirdropStudioNetwork,\n ): Exclude<AirdropStudioNetwork, 'mainnet'> {\n return network === 'mainnet' ? 'mainnet-beta' : network\n }\n\n private static isLocalRpcEndpoint(endpoint: string): boolean {\n const value = endpoint.toLowerCase()\n return value.includes('127.0.0.1') || value.includes('localhost')\n }\n\n private autoInstructionContext(commitment?: Commitment): AutoInstructionContext {\n const resolvedCommitment = this.resolveCommitment(commitment)\n return {\n program: this.program,\n pdas: this.pdas,\n fetchProtocolVault: () => this.fetchProtocolVault(resolvedCommitment),\n }\n }\n\n private async buildVersionedTransaction({\n payer,\n instructions,\n commitment,\n signers,\n useLookupTable,\n }: BuildTransactionParams): Promise<VersionedTransaction> {\n const resolvedCommitment = this.resolveCommitment(commitment)\n const { blockhash } = await this.connection.getLatestBlockhash(resolvedCommitment)\n const lookupTableAccounts = await this.resolveLookupTableAccounts({\n commitment: resolvedCommitment,\n useLookupTable,\n })\n const message = new TransactionMessage({\n payerKey: payer,\n recentBlockhash: blockhash,\n instructions,\n }).compileToV0Message(lookupTableAccounts)\n const transaction = new VersionedTransaction(message)\n if (signers?.length) {\n transaction.sign(signers)\n }\n return transaction\n }\n\n private async resolveLookupTableAccounts({\n commitment,\n useLookupTable,\n }: {\n commitment: Commitment\n useLookupTable?: LookupTableUsage\n }): Promise<AddressLookupTableAccount[]> {\n const mode = useLookupTable ?? 'none'\n if (mode === 'none') {\n return []\n }\n\n const lookupTableAccount = await this.fetchLookupTableAccount(commitment)\n return [lookupTableAccount]\n }\n\n private async fetchLookupTableAccount(\n commitment: Commitment,\n ): Promise<AddressLookupTableAccount> {\n if (this.lookupTableAccount) {\n return this.lookupTableAccount\n }\n\n if (!this.lookupTableAddress) {\n throw new Error(\n `Lookup table address is required for endpoint ${this.connection.rpcEndpoint}.`,\n )\n }\n\n const response = await this.connection.getAddressLookupTable(this.lookupTableAddress, {\n commitment,\n })\n if (!response.value) {\n throw new Error(\n `Lookup table account not found for endpoint ${this.connection.rpcEndpoint}: ${this.lookupTableAddress.toBase58()}`,\n )\n }\n\n this.lookupTableAccount = response.value\n return response.value\n }\n}\n","import { BN } from '@coral-xyz/anchor'\nimport {\n ASSOCIATED_TOKEN_PROGRAM_ID,\n getAssociatedTokenAddressSync,\n TOKEN_PROGRAM_ID,\n} from '@solana/spl-token'\nimport { PublicKey } from '@solana/web3.js'\n\nimport { AIRDROP_STUDIO_PROGRAM_ID, AirdropStudioSeed } from './constants'\n\nconst toU32Seed = (value: number | BN) => new BN(value).toArrayLike(Buffer, 'le', 4)\n\nconst toU8Seed = (value: number | BN) => new BN(value).toArrayLike(Buffer, 'le', 1)\n\nconst toFixedBuffer = (value: Uint8Array, length: number) => {\n if (value.length !== length) {\n throw new Error(`Expected ${length} bytes, got ${value.length}.`)\n }\n\n return Buffer.from(value)\n}\n\nexport function createPdas(programId: PublicKey = AIRDROP_STUDIO_PROGRAM_ID) {\n return {\n protocolConfig: (action: number | BN) =>\n PublicKey.findProgramAddressSync(\n [Buffer.from(AirdropStudioSeed.ProtocolConfig), toU8Seed(action)],\n programId,\n )[0],\n studioConfig: () =>\n PublicKey.findProgramAddressSync([Buffer.from(AirdropStudioSeed.StudioConfig)], programId)[0],\n draftRegistry: (creator: PublicKey) =>\n PublicKey.findProgramAddressSync(\n [Buffer.from(AirdropStudioSeed.DraftRegistry), creator.toBuffer()],\n programId,\n )[0],\n airdrop: (creator: PublicKey, draftIndex: number | BN) =>\n PublicKey.findProgramAddressSync(\n [Buffer.from(AirdropStudioSeed.Airdrop), creator.toBuffer(), toU32Seed(draftIndex)],\n programId,\n )[0],\n draftIndex: (creator: PublicKey, draftIndex: number | BN) =>\n PublicKey.findProgramAddressSync(\n [Buffer.from(AirdropStudioSeed.DraftIndex), creator.toBuffer(), toU32Seed(draftIndex)],\n programId,\n )[0],\n listRoot: (airdrop: PublicKey) =>\n PublicKey.findProgramAddressSync(\n [Buffer.from(AirdropStudioSeed.ListRoot), airdrop.toBuffer()],\n programId,\n )[0],\n listChunk: (airdrop: PublicKey) =>\n PublicKey.findProgramAddressSync(\n [Buffer.from(AirdropStudioSeed.ListChunk), airdrop.toBuffer()],\n programId,\n )[0],\n claimStatusFromLeaf: (airdrop: PublicKey, leaf: Uint8Array) =>\n PublicKey.findProgramAddressSync(\n [Buffer.from(AirdropStudioSeed.ClaimStatus), airdrop.toBuffer(), toFixedBuffer(leaf, 32)],\n programId,\n )[0],\n claimStatusFromIndex: (airdrop: PublicKey, entryIndex: number | BN) =>\n PublicKey.findProgramAddressSync(\n [Buffer.from(AirdropStudioSeed.ClaimStatus), airdrop.toBuffer(), toU32Seed(entryIndex)],\n programId,\n )[0],\n eventAuthority: () =>\n PublicKey.findProgramAddressSync(\n [Buffer.from(AirdropStudioSeed.EventAuthority)],\n programId,\n )[0],\n vaultAta: (\n airdrop: PublicKey,\n mint: PublicKey,\n tokenProgramId: PublicKey = TOKEN_PROGRAM_ID,\n associatedTokenProgramId: PublicKey = ASSOCIATED_TOKEN_PROGRAM_ID,\n ) =>\n getAssociatedTokenAddressSync(mint, airdrop, true, tokenProgramId, associatedTokenProgramId),\n }\n}\n\nexport type AirdropStudioPdas = ReturnType<typeof createPdas>\n","import { PublicKey } from '@solana/web3.js'\n\nexport const AIRDROP_STUDIO_PROGRAM_ID = new PublicKey(\n 'bonkAZceSmwJCcBXknvMjqdUSVJUjnj211w68d2VCei',\n)\n\nexport type AirdropStudioNetwork = 'devnet' | 'mainnet-beta' | 'mainnet'\n\nexport const NETWORK_ALT_ADDRESSES: Record<AirdropStudioNetwork, PublicKey> = {\n devnet: new PublicKey('5jkWrqGsDsFvtMKwXv2Cvjyr85txhnkEJsYSiQeKs9KH'),\n 'mainnet-beta': new PublicKey('CvzpP7phMzVcnmErPwYiWvuvu2ejvE8EqJtYEcYBom9B'),\n mainnet: new PublicKey('CvzpP7phMzVcnmErPwYiWvuvu2ejvE8EqJtYEcYBom9B'),\n}\n\nexport type AirdropStudioAltAddresses = Partial<Record<AirdropStudioNetwork, PublicKey>>\n\nexport enum AirdropStudioSeed {\n StudioConfig = 'airdrop-studio-config',\n DraftRegistry = 'draft-reg',\n Airdrop = 'airdrop',\n DraftIndex = 'draft-idx',\n ListRoot = 'list-root',\n ListChunk = 'list-chunk',\n ClaimStatus = 'claim-status',\n EventAuthority = '__event_authority',\n ProtocolConfig = 'cost-config',\n}\n","import { BN } from '@coral-xyz/anchor'\nimport { PublicKey } from '@solana/web3.js'\n\nexport const LIST_VERSION = 1\nexport const RECIPIENT_LEN = 41\nexport const MAX_RECIPIENTS = 10_000\nexport const MAX_LIST_BYTES = MAX_RECIPIENTS * RECIPIENT_LEN\n\nexport type ListChunkLocation = {\n chunkIndex: number\n offset: number\n}\n\nexport type OnchainRecipient = {\n wallet: PublicKey\n amount: BN\n claimed: boolean\n}\n\nexport const getListChunkIndex = (entryIndex: number, chunkSize: number) => {\n if (chunkSize <= 0) {\n throw new Error('Chunk size must be greater than zero.')\n }\n\n return Math.floor(entryIndex / chunkSize)\n}\n\nexport const getListChunkOffset = (entryIndex: number, chunkSize: number) => {\n if (chunkSize <= 0) {\n throw new Error('Chunk size must be greater than zero.')\n }\n\n return entryIndex % chunkSize\n}\n\nexport const getListChunkLocation = (entryIndex: number, chunkSize: number): ListChunkLocation => ({\n chunkIndex: getListChunkIndex(entryIndex, chunkSize),\n offset: getListChunkOffset(entryIndex, chunkSize),\n})\n\nexport const getListEntryIndex = (chunkIndex: number, offset: number, chunkSize: number) => {\n if (chunkSize <= 0) {\n throw new Error('Chunk size must be greater than zero.')\n }\n\n return chunkIndex * chunkSize + offset\n}\n\nexport const getListChunkRange = (chunkIndex: number, chunkSize: number) => {\n if (chunkSize <= 0) {\n throw new Error('Chunk size must be greater than zero.')\n }\n\n const start = chunkIndex * chunkSize\n return {\n start,\n endExclusive: start + chunkSize,\n }\n}\n\nexport const getRecipientRange = (entryIndex: number) => {\n if (entryIndex < 0) {\n throw new Error('Entry index must be non-negative.')\n }\n const start = entryIndex * RECIPIENT_LEN\n return {\n start,\n endExclusive: start + RECIPIENT_LEN,\n }\n}\n\nexport const parseRecipient = (data: Uint8Array, offset = 0): OnchainRecipient => {\n if (offset < 0 || offset + RECIPIENT_LEN > data.length) {\n throw new Error('Recipient data is out of bounds.')\n }\n\n const wallet = new PublicKey(data.slice(offset, offset + 32))\n const amount = new BN(data.slice(offset + 32, offset + 40), 'le')\n const claimed = data[offset + 40] !== 0\n\n return { wallet, amount, claimed }\n}\n\nexport const parseRecipientAtIndex = (data: Uint8Array, entryIndex: number): OnchainRecipient => {\n const { start } = getRecipientRange(entryIndex)\n return parseRecipient(data, start)\n}\n\nexport const parseListChunk = (data: Uint8Array, totalCount?: number): OnchainRecipient[] => {\n if (data.length % RECIPIENT_LEN !== 0) {\n throw new Error('List chunk length is not aligned to recipient size.')\n }\n\n const maxEntries = data.length / RECIPIENT_LEN\n const count = typeof totalCount === 'number' ? Math.min(totalCount, maxEntries) : maxEntries\n\n const entries: OnchainRecipient[] = []\n for (let i = 0; i < count; i += 1) {\n entries.push(parseRecipientAtIndex(data, i))\n }\n return entries\n}\n","import { ComputeBudgetProgram, TransactionInstruction } from '@solana/web3.js'\n\nexport type PriorityFeeConfig = {\n computeUnitLimit?: number\n microLamports?: number\n}\n\nexport const createPriorityFeeInstructions = (\n config?: PriorityFeeConfig,\n): TransactionInstruction[] => {\n if (!config) {\n return []\n }\n\n const instructions: TransactionInstruction[] = []\n\n if (typeof config.computeUnitLimit === 'number') {\n instructions.push(\n ComputeBudgetProgram.setComputeUnitLimit({\n units: config.computeUnitLimit,\n }),\n )\n }\n\n if (typeof config.microLamports === 'number') {\n instructions.push(\n ComputeBudgetProgram.setComputeUnitPrice({\n microLamports: config.microLamports,\n }),\n )\n }\n\n return instructions\n}\n\nexport const withPriorityFee = (\n instruction: TransactionInstruction | TransactionInstruction[],\n config?: PriorityFeeConfig,\n): TransactionInstruction[] => {\n const priorityInstructions = createPriorityFeeInstructions(config)\n const list = Array.isArray(instruction) ? instruction : [instruction]\n\n return [...priorityInstructions, ...list]\n}\n","import type { Program } from '@coral-xyz/anchor'\nimport { PublicKey } from '@solana/web3.js'\n\nimport type { AirdropStudioContract } from 'idl/airdrop-studio-contract'\nimport type { AirdropStudioPdas } from '../accounts'\nimport type { PriorityFeeConfig } from '../priority-fee'\n\nexport type AutoAccounts<T, K extends keyof T> = Partial<T> & Pick<T, K>\n\nexport type AutoInstructionOptions = {\n priorityFee?: PriorityFeeConfig\n}\n\nexport type AutoInstructionContext = {\n program: Program<AirdropStudioContract>\n pdas: AirdropStudioPdas\n fetchProtocolVault?: () => Promise<PublicKey>\n}\n\nexport const AirdropActionIndex = {\n CreateOnchainAirdrop: 0,\n CreateMerkleAirdrop: 1,\n RegisterMerkleRoot: 2,\n DepositMerkleAirdrop: 3,\n StartMerkleAirdrop: 4,\n AppendOnchainRecipients: 5,\n DepositOnchainAirdrop: 6,\n StartOnchainAirdrop: 7,\n} as const\n\nexport const resolvePriorityFee = (options?: AutoInstructionOptions) => options?.priorityFee\n","import { withPriorityFee } from '../priority-fee'\nimport type { PublicKey } from '@solana/web3.js'\n\nimport type { AppendOnchainRecipientsParams } from '@/types'\nimport type { AutoInstructionContext, AutoInstructionOptions } from './builders-shared'\nimport { AirdropActionIndex, resolvePriorityFee } from './builders-shared'\n\nexport type AppendOnchainRecipientsAutoAccounts = {\n creator: PublicKey\n airdrop: PublicKey\n}\n\nexport type AppendOnchainRecipientsArgs = {\n params: AppendOnchainRecipientsParams\n accounts: AppendOnchainRecipientsAutoAccounts\n options?: AutoInstructionOptions\n}\n\nexport const appendOnchainRecipientsInstruction = async (\n { params, accounts, options }: AppendOnchainRecipientsArgs,\n ctx: AutoInstructionContext,\n) => {\n const priorityFee = resolvePriorityFee(options)\n if (!ctx.fetchProtocolVault) {\n throw new Error('Missing fetchProtocolVault in instruction context.')\n }\n const protocolVault = await ctx.fetchProtocolVault()\n\n const instruction = await ctx.program.methods\n .appendOnchainRecipients(params)\n .accounts({\n creator: accounts.creator,\n protocolConfig: ctx.pdas.protocolConfig(AirdropActionIndex.AppendOnchainRecipients),\n airdrop: accounts.airdrop,\n protocolVault,\n program: ctx.program.programId,\n })\n .instruction()\n\n return withPriorityFee(instruction, priorityFee)\n}\n","import { getAssociatedTokenAddressSync } from '@solana/spl-token'\n\nimport { withPriorityFee } from '../priority-fee'\nimport type { PublicKey } from '@solana/web3.js'\n\nimport type { AutoInstructionContext, AutoInstructionOptions } from './builders-shared'\nimport { resolvePriorityFee } from './builders-shared'\n\nexport type CancelMerkleAirdropAutoAccounts = {\n creator: PublicKey\n airdrop: PublicKey\n mint: PublicKey\n tokenProgram: PublicKey\n}\n\nexport type CancelMerkleAirdropArgs = {\n accounts: CancelMerkleAirdropAutoAccounts\n options?: AutoInstructionOptions\n}\n\nexport const cancelMerkleAirdropInstruction = async (\n { accounts, options }: CancelMerkleAirdropArgs,\n ctx: AutoInstructionContext,\n) => {\n const priorityFee = resolvePriorityFee(options)\n const vault = ctx.pdas.vaultAta(accounts.airdrop, accounts.mint, accounts.tokenProgram)\n const creatorTokenAccount = getAssociatedTokenAddressSync(\n accounts.mint,\n accounts.creator,\n true,\n accounts.tokenProgram,\n )\n\n const instruction = await ctx.program.methods\n .cancelMerkleAirdrop()\n .accounts({\n creator: accounts.creator,\n airdrop: accounts.airdrop,\n mint: accounts.mint,\n vault,\n creatorTokenAccount,\n tokenProgram: accounts.tokenProgram,\n program: ctx.program.programId,\n })\n .instruction()\n\n return withPriorityFee(instruction, priorityFee)\n}\n","import { getAssociatedTokenAddressSync } from '@solana/spl-token'\n\nimport { withPriorityFee } from '../priority-fee'\nimport type { PublicKey } from '@solana/web3.js'\n\nimport type { AutoInstructionContext, AutoInstructionOptions } from './builders-shared'\nimport { resolvePriorityFee } from './builders-shared'\n\nexport type CancelOnchainAirdropAutoAccounts = {\n creator: PublicKey\n airdrop: PublicKey\n mint: PublicKey\n tokenProgram: PublicKey\n}\n\nexport type CancelOnchainAirdropArgs = {\n accounts: CancelOnchainAirdropAutoAccounts\n options?: AutoInstructionOptions\n}\n\nexport const cancelOnchainAirdropInstruction = async (\n { accounts, options }: CancelOnchainAirdropArgs,\n ctx: AutoInstructionContext,\n) => {\n const priorityFee = resolvePriorityFee(options)\n const vault = ctx.pdas.vaultAta(accounts.airdrop, accounts.mint, accounts.tokenProgram)\n const creatorTokenAccount = getAssociatedTokenAddressSync(\n accounts.mint,\n accounts.creator,\n true,\n accounts.tokenProgram,\n )\n\n const instruction = await ctx.program.methods\n .cancelOnchainAirdrop()\n .accounts({\n creator: accounts.creator,\n airdrop: accounts.airdrop,\n mint: accounts.mint,\n vault,\n creatorTokenAccount,\n tokenProgram: accounts.tokenProgram,\n program: ctx.program.programId,\n })\n .instruction()\n\n return withPriorityFee(instruction, priorityFee)\n}\n","import { getAssociatedTokenAddressSync } from '@solana/spl-token'\n\nimport { withPriorityFee } from '../priority-fee'\nimport type { PublicKey } from '@solana/web3.js'\n\nimport type { ClaimMerkleParams } from '@/types'\nimport type { AutoInstructionContext, AutoInstructionOptions } from './builders-shared'\nimport { resolvePriorityFee } from './builders-shared'\n\nexport type ClaimMerkleTokensAutoAccounts = {\n airdrop: PublicKey\n claimer: PublicKey\n mint: PublicKey\n tokenProgram: PublicKey\n}\n\nexport type ClaimMerkleTokensArgs = {\n params: ClaimMerkleParams\n accounts: ClaimMerkleTokensAutoAccounts\n options?: AutoInstructionOptions\n}\n\nexport const claimMerkleTokensInstruction = async (\n { params, accounts, options }: ClaimMerkleTokensArgs,\n ctx: AutoInstructionContext,\n) => {\n const priorityFee = resolvePriorityFee(options)\n if (!ctx.fetchProtocolVault) {\n throw new Error('Missing fetchProtocolVault in instruction context.')\n }\n const protocolVault = await ctx.fetchProtocolVault()\n const vault = ctx.pdas.vaultAta(accounts.airdrop, accounts.mint, accounts.tokenProgram)\n const studioConfig = ctx.pdas.studioConfig()\n const claimStatus = ctx.pdas.claimStatusFromLeaf(accounts.airdrop, params.leaf)\n const claimerAta = getAssociatedTokenAddressSync(\n accounts.mint,\n accounts.claimer,\n true,\n accounts.tokenProgram,\n )\n\n const instruction = await ctx.program.methods\n .claimMerkleTokens(params)\n .accountsPartial({\n airdrop: accounts.airdrop,\n claimer: accounts.claimer,\n studioConfig,\n protocolVault,\n claimerAta,\n mint: accounts.mint,\n vault,\n claimStatus,\n tokenProgram: accounts.tokenProgram,\n })\n .instruction()\n\n return withPriorityFee(instruction, priorityFee)\n}\n","import { getAssociatedTokenAddressSync } from '@solana/spl-token'\n\nimport { withPriorityFee } from '../priority-fee'\nimport type { PublicKey } from '@solana/web3.js'\n\nimport type { ClaimOnchainParams } from '@/types'\nimport type { AutoInstructionContext, AutoInstructionOptions } from './builders-shared'\nimport { resolvePriorityFee } from './builders-shared'\n\nexport type ClaimOnchainTokensAutoAccounts = {\n airdrop: PublicKey\n claimer: PublicKey\n mint: PublicKey\n tokenProgram: PublicKey\n}\n\nexport type ClaimOnchainTokensArgs = {\n params: ClaimOnchainParams\n accounts: ClaimOnchainTokensAutoAccounts\n options?: AutoInstructionOptions\n}\n\nexport const claimOnchainTokensInstruction = async (\n { params, accounts, options }: ClaimOnchainTokensArgs,\n ctx: AutoInstructionContext,\n) => {\n const priorityFee = resolvePriorityFee(options)\n if (!ctx.fetchProtocolVault) {\n throw new Error('Missing fetchProtocolVault in instruction context.')\n }\n const protocolVault = await ctx.fetchProtocolVault()\n const vault = ctx.pdas.vaultAta(accounts.airdrop, accounts.mint, accounts.tokenProgram)\n const listRoot = ctx.pdas.listRoot(accounts.airdrop)\n const listChunk = ctx.pdas.listChunk(accounts.airdrop)\n const studioConfig = ctx.pdas.studioConfig()\n const claimStatus = ctx.pdas.claimStatusFromIndex(accounts.airdrop, params.entryIndex)\n const eventAuthority = ctx.pdas.eventAuthority()\n const claimerAta = getAssociatedTokenAddressSync(\n accounts.mint,\n accounts.claimer,\n true,\n accounts.tokenProgram,\n )\n\n const instruction = await ctx.program.methods\n .claimOnchainTokens(params)\n .accountsPartial({\n airdrop: accounts.airdrop,\n listRoot,\n listChunk,\n claimer: accounts.claimer,\n studioConfig,\n protocolVault,\n claimerAta,\n mint: accounts.mint,\n vault,\n claimStatus,\n tokenProgram: accounts.tokenProgram,\n eventAuthority,\n program: ctx.program.programId,\n })\n .instruction()\n\n return withPriorityFee(instruction, priorityFee)\n}\n","import { withPriorityFee } from '../priority-fee'\nimport type { PublicKey } from '@solana/web3.js'\n\nimport type { CreateMerkleAirdropParams } from '@/types'\nimport type { AutoInstructionContext, AutoInstructionOptions } from './builders-shared'\nimport { AirdropActionIndex, resolvePriorityFee } from './builders-shared'\n\nexport type CreateMerkleAirdropAutoAccounts = {\n creator: PublicKey\n mint: PublicKey\n tokenProgram: PublicKey\n}\n\nexport type CreateMerkleAirdropArgs = {\n params: CreateMerkleAirdropParams\n accounts: CreateMerkleAirdropAutoAccounts\n options?: AutoInstructionOptions\n}\n\nexport const createMerkleAirdropInstruction = async (\n { params, accounts, options }: CreateMerkleAirdropArgs,\n ctx: AutoInstructionContext,\n) => {\n const priorityFee = resolvePriorityFee(options)\n if (!ctx.fetchProtocolVault) {\n throw new Error('Missing fetchProtocolVault in instruction context.')\n }\n const protocolVault = await ctx.fetchProtocolVault()\n\n const instruction = await ctx.program.methods\n .createMerkleAirdrop(params)\n .accounts({\n protocolConfig: ctx.pdas.protocolConfig(AirdropActionIndex.CreateMerkleAirdrop),\n creator: accounts.creator,\n mint: accounts.mint,\n protocolVault,\n tokenProgram: accounts.tokenProgram,\n program: ctx.program.programId,\n })\n .instruction()\n\n return withPriorityFee(instruction, priorityFee)\n}\n","import { withPriorityFee } from '../priority-fee'\nimport type { CreateOnchainAirdropParams } from '@/types'\nimport type { PublicKey } from '@solana/web3.js'\n\nimport type { AutoInstructionContext, AutoInstructionOptions } from './builders-shared'\nimport { AirdropActionIndex, resolvePriorityFee } from './builders-shared'\n\nexport type CreateOnchainAirdropAutoAccounts = {\n creator: PublicKey\n mint: PublicKey\n tokenProgram: PublicKey\n}\n\nexport type CreateOnchainAirdropArgs = {\n params: CreateOnchainAirdropParams\n accounts: CreateOnchainAirdropAutoAccounts\n options?: AutoInstructionOptions\n}\n\nexport const createOnchainAirdropInstruction = async (\n { params, accounts, options }: CreateOnchainAirdropArgs,\n ctx: AutoInstructionContext,\n) => {\n const priorityFee = resolvePriorityFee(options)\n if (!ctx.fetchProtocolVault) {\n throw new Error('Missing fetchProtocolVault in instruction context.')\n }\n const protocolVault = await ctx.fetchProtocolVault()\n const instruction = await ctx.program.methods\n .createOnchainAirdrop(params)\n .accounts({\n protocolConfig: ctx.pdas.protocolConfig(AirdropActionIndex.CreateOnchainAirdrop),\n creator: accounts.creator,\n mint: accounts.mint,\n protocolVault,\n tokenProgram: accounts.tokenProgram,\n program: ctx.program.programId,\n })\n .instruction()\n\n return withPriorityFee(instruction, priorityFee)\n}\n","import { withPriorityFee } from '../priority-fee'\nimport type { PublicKey } from '@solana/web3.js'\n\nimport type { AutoInstructionContext, AutoInstructionOptions } from './builders-shared'\nimport { AirdropActionIndex, resolvePriorityFee } from './builders-shared'\n\nexport type DepositMerkleAirdropAutoAccounts = {\n creator: PublicKey\n airdrop: PublicKey\n mint: PublicKey\n payerTokenAccount: PublicKey\n tokenProgram: PublicKey\n}\n\nexport type DepositMerkleAirdropArgs = {\n accounts: DepositMerkleAirdropAutoAccounts\n options?: AutoInstructionOptions\n}\n\nexport const depositMerkleAirdropInstruction = async (\n { accounts, options }: DepositMerkleAirdropArgs,\n ctx: AutoInstructionContext,\n) => {\n const priorityFee = resolvePriorityFee(options)\n if (!ctx.fetchProtocolVault) {\n throw new Error('Missing fetchProtocolVault in instruction context.')\n }\n const protocolVault = await ctx.fetchProtocolVault()\n const vault = ctx.pdas.vaultAta(accounts.airdrop, accounts.mint, accounts.tokenProgram)\n\n const instruction = await ctx.program.methods\n .depositMerkleAirdrop()\n .accounts({\n creator: accounts.creator,\n protocolConfig: ctx.pdas.protocolConfig(AirdropActionIndex.DepositMerkleAirdrop),\n airdrop: accounts.airdrop,\n mint: accounts.mint,\n vault,\n payerTokenAccount: accounts.payerTokenAccount,\n protocolVault,\n tokenProgram: accounts.tokenProgram,\n program: ctx.program.programId,\n })\n .instruction()\n\n return withPriorityFee(instruction, priorityFee)\n}\n","import { withPriorityFee } from '../priority-fee'\nimport type { PublicKey } from '@solana/web3.js'\n\nimport type { AutoInstructionContext, AutoInstructionOptions } from './builders-shared'\nimport { AirdropActionIndex, resolvePriorityFee } from './builders-shared'\n\nexport type DepositOnchainAirdropAutoAccounts = {\n creator: PublicKey\n airdrop: PublicKey\n mint: PublicKey\n payerTokenAccount: PublicKey\n tokenProgram: PublicKey\n}\n\nexport type DepositOnchainAirdropArgs = {\n accounts: DepositOnchainAirdropAutoAccounts\n options?: AutoInstructionOptions\n}\n\nexport const depositOnchainAirdropInstruction = async (\n { accounts, options }: DepositOnchainAirdropArgs,\n ctx: AutoInstructionContext,\n) => {\n const priorityFee = resolvePriorityFee(options)\n if (!ctx.fetchProtocolVault) {\n throw new Error('Missing fetchProtocolVault in instruction context.')\n }\n const protocolVault = await ctx.fetchProtocolVault()\n const vault = ctx.pdas.vaultAta(accounts.airdrop, accounts.mint, accounts.tokenProgram)\n\n const instruction = await ctx.program.methods\n .depositOnchainAirdrop()\n .accounts({\n creator: accounts.creator,\n protocolConfig: ctx.pdas.protocolConfig(AirdropActionIndex.DepositOnchainAirdrop),\n airdrop: accounts.airdrop,\n mint: accounts.mint,\n vault,\n payerTokenAccount: accounts.payerTokenAccount,\n protocolVault,\n tokenProgram: accounts.tokenProgram,\n program: ctx.program.programId,\n })\n .instruction()\n\n return withPriorityFee(instruction, priorityFee)\n}\n","import { withPriorityFee } from '../priority-fee'\nimport type { PublicKey } from '@solana/web3.js'\n\nimport type { RegisterMerkleRootParams } from '@/types'\nimport type { AutoInstructionContext, AutoInstructionOptions } from './builders-shared'\nimport { AirdropActionIndex, resolvePriorityFee } from './builders-shared'\n\nexport type RegisterMerkleRootAutoAccounts = {\n airdrop: PublicKey\n mint: PublicKey\n creator: PublicKey\n}\n\nexport type RegisterMerkleRootArgs = {\n params: RegisterMerkleRootParams\n accounts: RegisterMerkleRootAutoAccounts\n options?: AutoInstructionOptions\n}\n\nexport const registerMerkleRootInstruction = async (\n { params, accounts, options }: RegisterMerkleRootArgs,\n ctx: AutoInstructionContext,\n) => {\n const priorityFee = resolvePriorityFee(options)\n if (!ctx.fetchProtocolVault) {\n throw new Error('Missing fetchProtocolVault in instruction context.')\n }\n const protocolVault = await ctx.fetchProtocolVault()\n\n const instruction = await ctx.program.methods\n .registerMerkleRoot(params)\n .accounts({\n airdrop: accounts.airdrop,\n mint: accounts.mint,\n creator: accounts.creator,\n protocolConfig: ctx.pdas.protocolConfig(AirdropActionIndex.RegisterMerkleRoot),\n protocolVault,\n program: ctx.program.programId,\n })\n .instruction()\n\n return withPriorityFee(instruction, priorityFee)\n}\n","import { withPriorityFee } from '../priority-fee'\nimport type { PublicKey } from '@solana/web3.js'\n\nimport type { StartMerkleAirdropParams } from '@/types'\nimport type { AutoInstructionContext, AutoInstructionOptions } from './builders-shared'\nimport { AirdropActionIndex, resolvePriorityFee } from './builders-shared'\n\nexport type StartMerkleAirdropAutoAccounts = {\n airdrop: PublicKey\n creator: PublicKey\n}\n\nexport type StartMerkleAirdropArgs = {\n params: StartMerkleAirdropParams\n accounts: StartMerkleAirdropAutoAccounts\n options?: AutoInstructionOptions\n}\n\nexport const startMerkleAirdropInstruction = async (\n { params, accounts, options }: StartMerkleAirdropArgs,\n ctx: AutoInstructionContext,\n) => {\n const priorityFee = resolvePriorityFee(options)\n if (!ctx.fetchProtocolVault) {\n throw new Error('Missing fetchProtocolVault in instruction context.')\n }\n const protocolVault = await ctx.fetchProtocolVault()\n\n const instruction = await ctx.program.methods\n .startMerkleAirdrop(params)\n .accounts({\n protocolConfig: ctx.pdas.protocolConfig(AirdropActionIndex.StartMerkleAirdrop),\n airdrop: accounts.airdrop,\n creator: accounts.creator,\n protocolVault,\n program: ctx.program.programId,\n })\n .instruction()\n\n return withPriorityFee(instruction, priorityFee)\n}\n","import { withPriorityFee } from '../priority-fee'\nimport type { PublicKey } from '@solana/web3.js'\n\nimport type { StartOnchainAirdropParams } from '@/types'\nimport type { AutoInstructionContext, AutoInstructionOptions } from './builders-shared'\nimport { AirdropActionIndex, resolvePriorityFee } from './builders-shared'\n\nexport type StartOnchainAirdropAutoAccounts = {\n creator: PublicKey\n airdrop: PublicKey\n}\n\nexport type StartOnchainAirdropArgs = {\n params: StartOnchainAirdropParams\n accounts: StartOnchainAirdropAutoAccounts\n options?: AutoInstructionOptions\n}\n\nexport const startOnchainAirdropInstruction = async (\n { params, accounts, options }: StartOnchainAirdropArgs,\n ctx: AutoInstructionContext,\n) => {\n const priorityFee = resolvePriorityFee(options)\n if (!ctx.fetchProtocolVault) {\n throw new Error('Missing fetchProtocolVault in instruction context.')\n }\n const protocolVault = await ctx.fetchProtocolVault()\n\n const instruction = await ctx.program.methods\n .startOnchainAirdrop(params)\n .accounts({\n creator: accounts.creator,\n protocolConfig: ctx.pdas.protocolConfig(AirdropActionIndex.StartOnchainAirdrop),\n airdrop: accounts.airdrop,\n protocolVault,\n program: ctx.program.programId,\n })\n .instruction()\n\n return withPriorityFee(instruction, priorityFee)\n}\n","import { getAssociatedTokenAddressSync } from '@solana/spl-token'\n\nimport { withPriorityFee } from '../priority-fee'\nimport type { PublicKey } from '@solana/web3.js'\n\nimport type { AutoInstructionContext, AutoInstructionOptions } from './builders-shared'\nimport { resolvePriorityFee } from './builders-shared'\n\nexport type WithdrawMerkleAirdropAutoAccounts = {\n creator: PublicKey\n airdrop: PublicKey\n mint: PublicKey\n tokenProgram: PublicKey\n}\n\nexport type WithdrawMerkleAirdropArgs = {\n accounts: WithdrawMerkleAirdropAutoAccounts\n options?: AutoInstructionOptions\n}\n\nexport const withdrawMerkleAirdropInstruction = async (\n { accounts, options }: WithdrawMerkleAirdropArgs,\n ctx: AutoInstructionContext,\n) => {\n const priorityFee = resolvePriorityFee(options)\n const vault = ctx.pdas.vaultAta(accounts.airdrop, accounts.mint, accounts.tokenProgram)\n const creatorTokenAccount = getAssociatedTokenAddressSync(\n accounts.mint,\n accounts.creator,\n true,\n accounts.tokenProgram,\n )\n\n const instruction = await ctx.program.methods\n .withdrawMerkleAirdrop()\n .accounts({\n creator: accounts.creator,\n airdrop: accounts.airdrop,\n mint: accounts.mint,\n vault,\n creatorTokenAccount,\n tokenProgram: accounts.tokenProgram,\n program: ctx.program.programId,\n })\n .instruction()\n\n return withPriorityFee(instruction, priorityFee)\n}\n","import { getAssociatedTokenAddressSync } from '@solana/spl-token'\n\nimport { withPriorityFee } from '../priority-fee'\nimport type { PublicKey } from '@solana/web3.js'\n\nimport type { AutoInstructionContext, AutoInstructionOptions } from './builders-shared'\nimport { resolvePriorityFee } from './builders-shared'\n\nexport type WithdrawOnchainAirdropAutoAccounts = {\n creator: PublicKey\n airdrop: PublicKey\n mint: PublicKey\n tokenProgram: PublicKey\n}\n\nexport type WithdrawOnchainAirdropArgs = {\n accounts: WithdrawOnchainAirdropAutoAccounts\n options?: AutoInstructionOptions\n}\n\nexport const withdrawOnchainAirdropInstruction = async (\n { accounts, options }: WithdrawOnchainAirdropArgs,\n ctx: AutoInstructionContext,\n) => {\n const priorityFee = resolvePriorityFee(options)\n const vault = ctx.pdas.vaultAta(accounts.airdrop, accounts.mint, accounts.tokenProgram)\n const creatorTokenAccount = getAssociatedTokenAddressSync(\n accounts.mint,\n accounts.creator,\n true,\n accounts.tokenProgram,\n )\n\n const instruction = await ctx.program.methods\n .withdrawOnchainAirdrop()\n .accounts({\n creator: accounts.creator,\n airdrop: accounts.airdrop,\n mint: accounts.mint,\n vault,\n creatorTokenAccount,\n tokenProgram: accounts.tokenProgram,\n program: ctx.program.programId,\n })\n .instruction()\n\n return withPriorityFee(instruction, priorityFee)\n}\n","{\n \"address\": \"bonkAZceSmwJCcBXknvMjqdUSVJUjnj211w68d2VCei\",\n \"metadata\": {\n \"name\": \"airdrop_studio_contract\",\n \"version\": \"0.1.0\",\n \"spec\": \"0.1.0\",\n \"description\": \"Airdrop studio for bonkit.dev\"\n },\n \"instructions\": [\n {\n \"name\": \"append_onchain_recipients\",\n \"discriminator\": [\n 88,\n 187,\n 192,\n 252,\n 105,\n 199,\n 193,\n 33\n ],\n \"accounts\": [\n {\n \"name\": \"creator\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"studio_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112,\n 45,\n 115,\n 116,\n 117,\n 100,\n 105,\n 111,\n 45,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"protocol_config\"\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true\n },\n {\n \"name\": \"list_root\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 108,\n 105,\n 115,\n 116,\n 45,\n 114,\n 111,\n 111,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"airdrop\"\n }\n ]\n }\n },\n {\n \"name\": \"list_chunk\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 108,\n 105,\n 115,\n 116,\n 45,\n 99,\n 104,\n 117,\n 110,\n 107\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"airdrop\"\n }\n ]\n }\n },\n {\n \"name\": \"protocol_vault\",\n \"writable\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"event_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 95,\n 95,\n 101,\n 118,\n 101,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"program\"\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": {\n \"name\": \"AppendOnchainRecipientsParams\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"cancel_merkle_airdrop\",\n \"discriminator\": [\n 208,\n 155,\n 251,\n 61,\n 70,\n 56,\n 14,\n 106\n ],\n \"accounts\": [\n {\n \"name\": \"creator\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true\n },\n {\n \"name\": \"mint\"\n },\n {\n \"name\": \"vault\",\n \"writable\": true\n },\n {\n \"name\": \"creator_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"token_program\"\n },\n {\n \"name\": \"memo_program\",\n \"address\": \"MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"event_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 95,\n 95,\n 101,\n 118,\n 101,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"program\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"cancel_onchain_airdrop\",\n \"discriminator\": [\n 180,\n 220,\n 146,\n 21,\n 119,\n 240,\n 183,\n 34\n ],\n \"accounts\": [\n {\n \"name\": \"creator\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true\n },\n {\n \"name\": \"mint\"\n },\n {\n \"name\": \"vault\",\n \"writable\": true\n },\n {\n \"name\": \"creator_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"token_program\"\n },\n {\n \"name\": \"memo_program\",\n \"address\": \"MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"event_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 95,\n 95,\n 101,\n 118,\n 101,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"program\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"claim_merkle_tokens\",\n \"discriminator\": [\n 84,\n 58,\n 147,\n 32,\n 78,\n 173,\n 23,\n 246\n ],\n \"accounts\": [\n {\n \"name\": \"airdrop\",\n \"docs\": [\n \"Airdrop round – must be `Approved`\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"claimer\",\n \"docs\": [\n \"Claimant\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"studio_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112,\n 45,\n 115,\n 116,\n 117,\n 100,\n 105,\n 111,\n 45,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"protocol_vault\",\n \"docs\": [\n \"Protocol vault receiving claim costs.\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"claimer_ata\",\n \"docs\": [\n \"Claimant's ATA\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"mint\"\n },\n {\n \"name\": \"vault\",\n \"docs\": [\n \"Vault holding undistributed tokens\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"claim_status\",\n \"docs\": [\n \"Claim status PDA: prevents double-claim per leaf hash\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 108,\n 97,\n 105,\n 109,\n 45,\n 115,\n 116,\n 97,\n 116,\n 117,\n 115\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"airdrop\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"params.leaf\"\n }\n ]\n }\n },\n {\n \"name\": \"token_program\"\n },\n {\n \"name\": \"memo_program\",\n \"address\": \"MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": {\n \"name\": \"ClaimMerkleParams\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"claim_onchain_tokens\",\n \"discriminator\": [\n 118,\n 57,\n 121,\n 11,\n 13,\n 43,\n 180,\n 105\n ],\n \"accounts\": [\n {\n \"name\": \"airdrop\",\n \"writable\": true\n },\n {\n \"name\": \"list_root\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 108,\n 105,\n 115,\n 116,\n 45,\n 114,\n 111,\n 111,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"airdrop\"\n }\n ]\n }\n },\n {\n \"name\": \"list_chunk\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 108,\n 105,\n 115,\n 116,\n 45,\n 99,\n 104,\n 117,\n 110,\n 107\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"airdrop\"\n }\n ]\n }\n },\n {\n \"name\": \"claimer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"studio_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112,\n 45,\n 115,\n 116,\n 117,\n 100,\n 105,\n 111,\n 45,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"protocol_vault\",\n \"docs\": [\n \"Protocol vault receiving claim costs.\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"claimer_ata\",\n \"writable\": true\n },\n {\n \"name\": \"mint\"\n },\n {\n \"name\": \"vault\",\n \"writable\": true\n },\n {\n \"name\": \"claim_status\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 108,\n 97,\n 105,\n 109,\n 45,\n 115,\n 116,\n 97,\n 116,\n 117,\n 115\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"airdrop\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"params.entry_index\"\n }\n ]\n }\n },\n {\n \"name\": \"token_program\"\n },\n {\n \"name\": \"memo_program\",\n \"address\": \"MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"event_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 95,\n 95,\n 101,\n 118,\n 101,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"program\"\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": {\n \"name\": \"ClaimOnchainParams\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"create_merkle_airdrop\",\n \"discriminator\": [\n 90,\n 140,\n 123,\n 107,\n 48,\n 144,\n 3,\n 37\n ],\n \"accounts\": [\n {\n \"name\": \"studio_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112,\n 45,\n 115,\n 116,\n 117,\n 100,\n 105,\n 111,\n 45,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"protocol_config\"\n },\n {\n \"name\": \"creator\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"draft_registry\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 100,\n 114,\n 97,\n 102,\n 116,\n 45,\n 114,\n 101,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"creator\"\n }\n ]\n }\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"creator\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"params.draft_index\"\n }\n ]\n }\n },\n {\n \"name\": \"draft_index\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 100,\n 114,\n 97,\n 102,\n 116,\n 45,\n 105,\n 100,\n 120\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"creator\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"params.draft_index\"\n }\n ]\n }\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"airdrop\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"mint\"\n },\n {\n \"name\": \"protocol_vault\",\n \"docs\": [\n \"Protocol vault receiving creation costs.\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"token_program\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"event_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 95,\n 95,\n 101,\n 118,\n 101,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"program\"\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": {\n \"name\": \"CreateMerkleAirdropParams\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"create_onchain_airdrop\",\n \"discriminator\": [\n 30,\n 165,\n 141,\n 73,\n 117,\n 1,\n 123,\n 246\n ],\n \"accounts\": [\n {\n \"name\": \"studio_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112,\n 45,\n 115,\n 116,\n 117,\n 100,\n 105,\n 111,\n 45,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"protocol_config\"\n },\n {\n \"name\": \"creator\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"draft_registry\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 100,\n 114,\n 97,\n 102,\n 116,\n 45,\n 114,\n 101,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"creator\"\n }\n ]\n }\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"creator\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"params.draft_index\"\n }\n ]\n }\n },\n {\n \"name\": \"draft_index\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 100,\n 114,\n 97,\n 102,\n 116,\n 45,\n 105,\n 100,\n 120\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"creator\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"params.draft_index\"\n }\n ]\n }\n },\n {\n \"name\": \"list_root\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 108,\n 105,\n 115,\n 116,\n 45,\n 114,\n 111,\n 111,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"airdrop\"\n }\n ]\n }\n },\n {\n \"name\": \"list_chunk\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 108,\n 105,\n 115,\n 116,\n 45,\n 99,\n 104,\n 117,\n 110,\n 107\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"airdrop\"\n }\n ]\n }\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"airdrop\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"mint\"\n },\n {\n \"name\": \"protocol_vault\",\n \"docs\": [\n \"Protocol vault receiving creation costs.\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"token_program\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"event_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 95,\n 95,\n 101,\n 118,\n 101,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"program\"\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": {\n \"name\": \"CreateOnchainAirdropParams\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"deposit_merkle_airdrop\",\n \"discriminator\": [\n 129,\n 9,\n 210,\n 176,\n 19,\n 33,\n 20,\n 148\n ],\n \"accounts\": [\n {\n \"name\": \"creator\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"studio_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112,\n 45,\n 115,\n 116,\n 117,\n 100,\n 105,\n 111,\n 45,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"protocol_config\"\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true\n },\n {\n \"name\": \"mint\"\n },\n {\n \"name\": \"vault\",\n \"writable\": true\n },\n {\n \"name\": \"payer_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"token_program\"\n },\n {\n \"name\": \"protocol_vault\",\n \"docs\": [\n \"Protocol vault receiving deposit costs.\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"event_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 95,\n 95,\n 101,\n 118,\n 101,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"program\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"deposit_onchain_airdrop\",\n \"discriminator\": [\n 194,\n 58,\n 250,\n 92,\n 1,\n 225,\n 91,\n 243\n ],\n \"accounts\": [\n {\n \"name\": \"creator\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"studio_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112,\n 45,\n 115,\n 116,\n 117,\n 100,\n 105,\n 111,\n 45,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"protocol_config\"\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true\n },\n {\n \"name\": \"list_root\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 108,\n 105,\n 115,\n 116,\n 45,\n 114,\n 111,\n 111,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"airdrop\"\n }\n ]\n }\n },\n {\n \"name\": \"mint\"\n },\n {\n \"name\": \"vault\",\n \"writable\": true\n },\n {\n \"name\": \"payer_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"token_program\"\n },\n {\n \"name\": \"protocol_vault\",\n \"docs\": [\n \"Protocol vault receiving deposit costs.\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"event_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 95,\n 95,\n 101,\n 118,\n 101,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"program\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"initialize_protocol_config\",\n \"discriminator\": [\n 28,\n 50,\n 43,\n 233,\n 244,\n 98,\n 123,\n 118\n ],\n \"accounts\": [\n {\n \"name\": \"protocol_config\",\n \"writable\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"studio_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112,\n 45,\n 115,\n 116,\n 117,\n 100,\n 105,\n 111,\n 45,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"event_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 95,\n 95,\n 101,\n 118,\n 101,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"program\"\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": {\n \"name\": \"InitProtocolConfigParams\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"initialize_studio_config\",\n \"discriminator\": [\n 167,\n 156,\n 148,\n 195,\n 148,\n 75,\n 152,\n 212\n ],\n \"accounts\": [\n {\n \"name\": \"config_account\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112,\n 45,\n 115,\n 116,\n 117,\n 100,\n 105,\n 111,\n 45,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"airdrop_program\",\n \"address\": \"bonkAZceSmwJCcBXknvMjqdUSVJUjnj211w68d2VCei\"\n },\n {\n \"name\": \"program_data\"\n },\n {\n \"name\": \"config_authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"event_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 95,\n 95,\n 101,\n 118,\n 101,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"program\"\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": {\n \"name\": \"InitStudioConfigParams\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"register_merkle_root\",\n \"discriminator\": [\n 51,\n 45,\n 179,\n 28,\n 97,\n 205,\n 185,\n 134\n ],\n \"accounts\": [\n {\n \"name\": \"studio_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112,\n 45,\n 115,\n 116,\n 117,\n 100,\n 105,\n 111,\n 45,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"protocol_config\"\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true\n },\n {\n \"name\": \"mint\"\n },\n {\n \"name\": \"creator\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"protocol_vault\",\n \"docs\": [\n \"Protocol vault receiving register costs.\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"event_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 95,\n 95,\n 101,\n 118,\n 101,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"program\"\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": {\n \"name\": \"RegisterMerkleRootParams\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"start_merkle_airdrop\",\n \"discriminator\": [\n 79,\n 91,\n 110,\n 101,\n 111,\n 34,\n 64,\n 221\n ],\n \"accounts\": [\n {\n \"name\": \"studio_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112,\n 45,\n 115,\n 116,\n 117,\n 100,\n 105,\n 111,\n 45,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"protocol_config\"\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true\n },\n {\n \"name\": \"creator\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"protocol_vault\",\n \"docs\": [\n \"Protocol vault receiving start costs.\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"event_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 95,\n 95,\n 101,\n 118,\n 101,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"program\"\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": {\n \"name\": \"StartMerkleAirdropParams\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"start_onchain_airdrop\",\n \"discriminator\": [\n 235,\n 97,\n 63,\n 215,\n 189,\n 18,\n 81,\n 175\n ],\n \"accounts\": [\n {\n \"name\": \"creator\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"studio_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112,\n 45,\n 115,\n 116,\n 117,\n 100,\n 105,\n 111,\n 45,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"protocol_config\"\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true\n },\n {\n \"name\": \"list_root\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 108,\n 105,\n 115,\n 116,\n 45,\n 114,\n 111,\n 111,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"airdrop\"\n }\n ]\n }\n },\n {\n \"name\": \"protocol_vault\",\n \"docs\": [\n \"Protocol vault receiving start costs.\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"event_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 95,\n 95,\n 101,\n 118,\n 101,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"program\"\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": {\n \"name\": \"StartOnchainAirdropParams\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"update_protocol_config\",\n \"discriminator\": [\n 197,\n 97,\n 123,\n 54,\n 221,\n 168,\n 11,\n 135\n ],\n \"accounts\": [\n {\n \"name\": \"protocol_config\",\n \"writable\": true\n },\n {\n \"name\": \"studio_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112,\n 45,\n 115,\n 116,\n 117,\n 100,\n 105,\n 111,\n 45,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"config_authority\",\n \"writable\": true,\n \"signer\": true,\n \"relations\": [\n \"studio_config\"\n ]\n },\n {\n \"name\": \"event_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 95,\n 95,\n 101,\n 118,\n 101,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"program\"\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": {\n \"name\": \"UpdateProtocolConfigParams\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"update_studio_config\",\n \"discriminator\": [\n 243,\n 146,\n 125,\n 172,\n 230,\n 187,\n 93,\n 123\n ],\n \"accounts\": [\n {\n \"name\": \"config_account\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112,\n 45,\n 115,\n 116,\n 117,\n 100,\n 105,\n 111,\n 45,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"config_authority\",\n \"writable\": true,\n \"signer\": true,\n \"relations\": [\n \"config_account\"\n ]\n },\n {\n \"name\": \"event_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 95,\n 95,\n 101,\n 118,\n 101,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"program\"\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": {\n \"name\": \"UpdateStudioConfigParams\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"withdraw_merkle_airdrop\",\n \"discriminator\": [\n 124,\n 134,\n 136,\n 135,\n 147,\n 213,\n 96,\n 207\n ],\n \"accounts\": [\n {\n \"name\": \"creator\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true\n },\n {\n \"name\": \"mint\"\n },\n {\n \"name\": \"vault\",\n \"writable\": true\n },\n {\n \"name\": \"creator_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"token_program\"\n },\n {\n \"name\": \"memo_program\",\n \"address\": \"MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"event_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 95,\n 95,\n 101,\n 118,\n 101,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"program\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"withdraw_onchain_airdrop\",\n \"discriminator\": [\n 152,\n 147,\n 37,\n 215,\n 194,\n 239,\n 180,\n 102\n ],\n \"accounts\": [\n {\n \"name\": \"creator\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true\n },\n {\n \"name\": \"mint\"\n },\n {\n \"name\": \"vault\",\n \"writable\": true\n },\n {\n \"name\": \"creator_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"token_program\"\n },\n {\n \"name\": \"memo_program\",\n \"address\": \"MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"event_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 95,\n 95,\n 101,\n 118,\n 101,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"program\"\n }\n ],\n \"args\": []\n }\n ],\n \"accounts\": [\n {\n \"name\": \"AirdropProtocolConfig\",\n \"discriminator\": [\n 182,\n 140,\n 212,\n 121,\n 236,\n 112,\n 171,\n 99\n ]\n },\n {\n \"name\": \"AirdropStudioConfig\",\n \"discriminator\": [\n 245,\n 76,\n 54,\n 47,\n 97,\n 125,\n 53,\n 141\n ]\n },\n {\n \"name\": \"ClaimStatus\",\n \"discriminator\": [\n 22,\n 183,\n 249,\n 157,\n 247,\n 95,\n 150,\n 96\n ]\n },\n {\n \"name\": \"DraftIndex\",\n \"discriminator\": [\n 210,\n 178,\n 236,\n 43,\n 98,\n 133,\n 119,\n 229\n ]\n },\n {\n \"name\": \"DraftRegistry\",\n \"discriminator\": [\n 39,\n 95,\n 131,\n 182,\n 236,\n 194,\n 11,\n 133\n ]\n },\n {\n \"name\": \"ListRoot\",\n \"discriminator\": [\n 245,\n 62,\n 57,\n 68,\n 97,\n 235,\n 172,\n 240\n ]\n },\n {\n \"name\": \"MerkleProofAirdrop\",\n \"discriminator\": [\n 57,\n 83,\n 229,\n 57,\n 46,\n 186,\n 81,\n 103\n ]\n },\n {\n \"name\": \"OnchainListAirdrop\",\n \"discriminator\": [\n 51,\n 172,\n 66,\n 52,\n 187,\n 222,\n 110,\n 7\n ]\n }\n ],\n \"events\": [\n {\n \"name\": \"AirdropCanceledEvent\",\n \"discriminator\": [\n 208,\n 168,\n 213,\n 213,\n 143,\n 189,\n 124,\n 74\n ]\n },\n {\n \"name\": \"AirdropDraftCreatedEvent\",\n \"discriminator\": [\n 48,\n 179,\n 191,\n 138,\n 132,\n 224,\n 243,\n 244\n ]\n },\n {\n \"name\": \"ClaimTokenEvent\",\n \"discriminator\": [\n 127,\n 10,\n 14,\n 49,\n 47,\n 171,\n 31,\n 127\n ]\n },\n {\n \"name\": \"CreateConfigEvent\",\n \"discriminator\": [\n 107,\n 52,\n 89,\n 129,\n 55,\n 226,\n 81,\n 22\n ]\n },\n {\n \"name\": \"CreateProtocolConfigEvent\",\n \"discriminator\": [\n 44,\n 74,\n 184,\n 0,\n 56,\n 102,\n 52,\n 171\n ]\n },\n {\n \"name\": \"MerkleAirdropDepositedEvent\",\n \"discriminator\": [\n 102,\n 107,\n 60,\n 163,\n 118,\n 171,\n 57,\n 172\n ]\n },\n {\n \"name\": \"MerkleAirdropStartedEvent\",\n \"discriminator\": [\n 251,\n 240,\n 64,\n 108,\n 102,\n 41,\n 135,\n 217\n ]\n },\n {\n \"name\": \"MerkleAirdropWithdrawnEvent\",\n \"discriminator\": [\n 19,\n 241,\n 82,\n 184,\n 118,\n 253,\n 149,\n 98\n ]\n },\n {\n \"name\": \"MerkleRootRegisteredEvent\",\n \"discriminator\": [\n 142,\n 111,\n 67,\n 50,\n 100,\n 45,\n 126,\n 44\n ]\n },\n {\n \"name\": \"OnchainAirdropDepositedEvent\",\n \"discriminator\": [\n 54,\n 224,\n 243,\n 194,\n 29,\n 104,\n 84,\n 57\n ]\n },\n {\n \"name\": \"OnchainAirdropStartedEvent\",\n \"discriminator\": [\n 219,\n 167,\n 202,\n 123,\n 151,\n 146,\n 78,\n 18\n ]\n },\n {\n \"name\": \"OnchainAirdropWithdrawnEvent\",\n \"discriminator\": [\n 188,\n 82,\n 32,\n 127,\n 174,\n 255,\n 67,\n 192\n ]\n },\n {\n \"name\": \"OnchainRecipientsAppendedEvent\",\n \"discriminator\": [\n 191,\n 140,\n 60,\n 224,\n 176,\n 199,\n 46,\n 39\n ]\n },\n {\n \"name\": \"UpdateConfigEvent\",\n \"discriminator\": [\n 96,\n 112,\n 253,\n 102,\n 59,\n 78,\n 75,\n 134\n ]\n }\n ],\n \"errors\": [\n {\n \"code\": 6000,\n \"name\": \"AccountNotFound\",\n \"msg\": \"Account not found\"\n },\n {\n \"code\": 6001,\n \"name\": \"InvalidConfigAuthority\",\n \"msg\": \"Invalid config authority\"\n },\n {\n \"code\": 6002,\n \"name\": \"AccountAlreadyInitialized\",\n \"msg\": \"Account already initialized\"\n },\n {\n \"code\": 6003,\n \"name\": \"InvalidAirdropType\",\n \"msg\": \"Invalid airdrop type\"\n },\n {\n \"code\": 6004,\n \"name\": \"InvalidActionType\",\n \"msg\": \"Invalid action type\"\n },\n {\n \"code\": 6005,\n \"name\": \"InvalidPubkey\",\n \"msg\": \"Invalid pubkey\"\n },\n {\n \"code\": 6006,\n \"name\": \"InvalidTimestamp\",\n \"msg\": \"Invalid timestamp\"\n },\n {\n \"code\": 6007,\n \"name\": \"InvalidAmount\",\n \"msg\": \"Invalid Amount\"\n },\n {\n \"code\": 6008,\n \"name\": \"UriTooLong\",\n \"msg\": \"Uri Too Long\"\n },\n {\n \"code\": 6009,\n \"name\": \"InvalidSourceAccount\",\n \"msg\": \"Invalid source account\"\n },\n {\n \"code\": 6010,\n \"name\": \"AirdropNotStarted\",\n \"msg\": \"Airdrop not started\"\n },\n {\n \"code\": 6011,\n \"name\": \"AirdropEnded\",\n \"msg\": \"Airdrop ended\"\n },\n {\n \"code\": 6012,\n \"name\": \"AirdropNotEnded\",\n \"msg\": \"Airdrop not ended\"\n },\n {\n \"code\": 6013,\n \"name\": \"AirdropHasNoEnd\",\n \"msg\": \"Airdrop has no end\"\n },\n {\n \"code\": 6014,\n \"name\": \"InvalidState\",\n \"msg\": \"Invalid state\"\n },\n {\n \"code\": 6015,\n \"name\": \"EndBeforeStart\",\n \"msg\": \"End before start\"\n },\n {\n \"code\": 6016,\n \"name\": \"StartTimeInPast\",\n \"msg\": \"Start time in past\"\n },\n {\n \"code\": 6017,\n \"name\": \"AlreadyClaimed\",\n \"msg\": \"Already claimed\"\n },\n {\n \"code\": 6018,\n \"name\": \"InvalidMerkleProof\",\n \"msg\": \"Invalid merkle proof\"\n },\n {\n \"code\": 6019,\n \"name\": \"MathOverflow\",\n \"msg\": \"Math overflow\"\n },\n {\n \"code\": 6020,\n \"name\": \"InsufficientVaultBalance\",\n \"msg\": \"Insufficient vault balance\"\n },\n {\n \"code\": 6021,\n \"name\": \"InsufficientFunds\",\n \"msg\": \"Insufficient funds\"\n },\n {\n \"code\": 6022,\n \"name\": \"InvalidCostLamports\",\n \"msg\": \"Creation cost exceeds the maximum allowed (1 SOL).\"\n },\n {\n \"code\": 6023,\n \"name\": \"UnsupportedMint\",\n \"msg\": \"Unsupported mint\"\n },\n {\n \"code\": 6024,\n \"name\": \"MintFreezeAuthorityNotAllowed\",\n \"msg\": \"Mint freeze authority is not allowed\"\n },\n {\n \"code\": 6025,\n \"name\": \"SourceCpiGuardEnabled\",\n \"msg\": \"Source token account has CPI Guard enabled\"\n },\n {\n \"code\": 6026,\n \"name\": \"InvalidAirdropAccount\",\n \"msg\": \"Invalid airdrop account\"\n },\n {\n \"code\": 6027,\n \"name\": \"MissingDraftRound\",\n \"msg\": \"Missing draft round\"\n },\n {\n \"code\": 6028,\n \"name\": \"InvalidCreator\",\n \"msg\": \"Invalid creator\"\n },\n {\n \"code\": 6029,\n \"name\": \"InvalidDraftRound\",\n \"msg\": \"Invalid draft round\"\n },\n {\n \"code\": 6030,\n \"name\": \"InvalidMint\",\n \"msg\": \"Invalid mint\"\n },\n {\n \"code\": 6031,\n \"name\": \"InvalidTokenProgram\",\n \"msg\": \"Invalid token program\"\n },\n {\n \"code\": 6032,\n \"name\": \"InvalidMemoProgram\",\n \"msg\": \"Invalid memo program\"\n },\n {\n \"code\": 6033,\n \"name\": \"Overflow\",\n \"msg\": \"Overflow\"\n },\n {\n \"code\": 6034,\n \"name\": \"InvalidAirdropStatus\",\n \"msg\": \"Invalid airdrop status\"\n },\n {\n \"code\": 6035,\n \"name\": \"InvalidProtocolVault\",\n \"msg\": \"Invalid protocol vault\"\n },\n {\n \"code\": 6036,\n \"name\": \"InvalidAirdropDraftIndex\",\n \"msg\": \"Invalid airdrop draft index\"\n },\n {\n \"code\": 6037,\n \"name\": \"InvalidPda\",\n \"msg\": \"Invalid PDA\"\n },\n {\n \"code\": 6038,\n \"name\": \"InvalidLeafData\",\n \"msg\": \"Invalid leaf data\"\n },\n {\n \"code\": 6039,\n \"name\": \"EmptyRecipientList\",\n \"msg\": \"Empty recipient list\"\n },\n {\n \"code\": 6040,\n \"name\": \"AppendRecipientsLimitExceeded\",\n \"msg\": \"Append recipients limit exceeded\"\n },\n {\n \"code\": 6041,\n \"name\": \"ListEmpty\",\n \"msg\": \"List is empty\"\n },\n {\n \"code\": 6042,\n \"name\": \"ListChunkOverflow\",\n \"msg\": \"List chunk overflow\"\n },\n {\n \"code\": 6043,\n \"name\": \"TransferFeeCalculationFailed\",\n \"msg\": \"Transfer fee calculation failed\"\n },\n {\n \"code\": 6044,\n \"name\": \"EmptyMerkleRoots\",\n \"msg\": \"Merkle roots list is empty\"\n },\n {\n \"code\": 6045,\n \"name\": \"MerkleRootsLimitExceeded\",\n \"msg\": \"Merkle roots list exceeds the maximum length\"\n },\n {\n \"code\": 6046,\n \"name\": \"InvalidMerkleRoot\",\n \"msg\": \"Invalid merkle root\"\n },\n {\n \"code\": 6047,\n \"name\": \"InvalidMerkleLeafCount\",\n \"msg\": \"Invalid merkle leaf count\"\n },\n {\n \"code\": 6048,\n \"name\": \"MerkleLeafCountExceeded\",\n \"msg\": \"Merkle leaf count exceeds the maximum allowed per root\"\n },\n {\n \"code\": 6049,\n \"name\": \"InvalidMerkleRootSum\",\n \"msg\": \"Invalid merkle root sum\"\n },\n {\n \"code\": 6050,\n \"name\": \"DuplicateMerkleRoot\",\n \"msg\": \"Duplicate merkle root\"\n },\n {\n \"code\": 6051,\n \"name\": \"MerkleRootsAlreadyRegistered\",\n \"msg\": \"Merkle roots already registered\"\n },\n {\n \"code\": 6052,\n \"name\": \"MerkleRootSumTotalMismatch\",\n \"msg\": \"Merkle root sum total mismatch\"\n },\n {\n \"code\": 6053,\n \"name\": \"AirdropDurationTooShort\",\n \"msg\": \"Airdrop duration is too short\"\n }\n ],\n \"types\": [\n {\n \"name\": \"AirdropAction\",\n \"repr\": {\n \"kind\": \"rust\"\n },\n \"type\": {\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"CreateOnchainAirdrop\"\n },\n {\n \"name\": \"CreateMerkleAirdrop\"\n },\n {\n \"name\": \"RegisterMerkleRoot\"\n },\n {\n \"name\": \"DepositMerkleAirdrop\"\n },\n {\n \"name\": \"StartMerkleAirdrop\"\n },\n {\n \"name\": \"AppendOnchainRecipients\"\n },\n {\n \"name\": \"DepositOnchainAirdrop\"\n },\n {\n \"name\": \"StartOnchainAirdrop\"\n }\n ]\n }\n },\n {\n \"name\": \"AirdropBase\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"is_initialized\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"airdrop_index\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"airdrop_type\",\n \"type\": {\n \"defined\": {\n \"name\": \"AirdropType\"\n }\n }\n },\n {\n \"name\": \"mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"total_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"claimed_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"created_at\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"starts_at\",\n \"type\": {\n \"option\": \"u64\"\n }\n },\n {\n \"name\": \"ends_at\",\n \"type\": {\n \"option\": \"u64\"\n }\n },\n {\n \"name\": \"status\",\n \"type\": {\n \"defined\": {\n \"name\": \"AirdropStatus\"\n }\n }\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"AirdropCanceledEvent\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"airdrop\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"canceled_by\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"created_at\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"AirdropDraftCreatedEvent\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"airdrop\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"airdrop_type\",\n \"type\": \"string\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"created_at\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"AirdropProtocolConfig\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"is_initialized\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"action\",\n \"type\": {\n \"defined\": {\n \"name\": \"AirdropAction\"\n }\n }\n },\n {\n \"name\": \"cost_lamports\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"AirdropStatus\",\n \"repr\": {\n \"kind\": \"rust\"\n },\n \"type\": {\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"Draft\"\n },\n {\n \"name\": \"Approved\"\n },\n {\n \"name\": \"Deposited\"\n },\n {\n \"name\": \"Canceled\"\n }\n ]\n }\n },\n {\n \"name\": \"AirdropStudioConfig\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"is_initialized\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"config_authority\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"claim_cost_lamports\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"protocol_vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"AirdropType\",\n \"repr\": {\n \"kind\": \"rust\"\n },\n \"type\": {\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"OnChainList\"\n },\n {\n \"name\": \"MerkleProof\"\n }\n ]\n }\n },\n {\n \"name\": \"AppendOnchainRecipientsParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"recipients\",\n \"type\": {\n \"vec\": {\n \"defined\": {\n \"name\": \"RecipientInput\"\n }\n }\n }\n }\n ]\n }\n },\n {\n \"name\": \"ClaimMerkleParams\",\n \"docs\": [\n \"Parameters supplied by claimer.\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"root_index\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"leaf_index\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"leaf\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"proof\",\n \"type\": {\n \"vec\": {\n \"defined\": {\n \"name\": \"MerkleProofNode\"\n }\n }\n }\n }\n ]\n }\n },\n {\n \"name\": \"ClaimOnchainParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"entry_index\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"ClaimStatus\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"is_initialized\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"is_claimed\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"claimed_at\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"ClaimTokenEvent\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"airdrop\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"claimer\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"created_at\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"CreateConfigEvent\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"config_account\",\n \"type\": \"string\"\n },\n {\n \"name\": \"config_authority\",\n \"type\": \"string\"\n },\n {\n \"name\": \"created_at\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"CreateMerkleAirdropParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"draft_index\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"starts_at\",\n \"type\": {\n \"option\": \"u64\"\n }\n },\n {\n \"name\": \"ends_at\",\n \"type\": {\n \"option\": \"u64\"\n }\n }\n ]\n }\n },\n {\n \"name\": \"CreateOnchainAirdropParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"draft_index\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"starts_at\",\n \"type\": {\n \"option\": \"u64\"\n }\n },\n {\n \"name\": \"ends_at\",\n \"type\": {\n \"option\": \"u64\"\n }\n }\n ]\n }\n },\n {\n \"name\": \"CreateProtocolConfigEvent\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"protocol_config_account\",\n \"type\": \"string\"\n },\n {\n \"name\": \"action_type\",\n \"type\": \"string\"\n },\n {\n \"name\": \"config_authority\",\n \"type\": \"string\"\n },\n {\n \"name\": \"created_at\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"DraftIndex\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"is_initialized\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"index\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"airdrop\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"DraftRegistry\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"is_initialized\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"total_count\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"InitProtocolConfigParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"action\",\n \"type\": {\n \"defined\": {\n \"name\": \"AirdropAction\"\n }\n }\n },\n {\n \"name\": \"cost_lamports\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"InitStudioConfigParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"claim_cost_lamports\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"protocol_vault\",\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"ListRoot\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"is_initialized\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"airdrop\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"total_count\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"total_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"MerkleAirdropDepositedEvent\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"airdrop\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"created_at\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"MerkleAirdropStartedEvent\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"airdrop\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"total_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"starts_at\",\n \"type\": {\n \"option\": \"u64\"\n }\n },\n {\n \"name\": \"ends_at\",\n \"type\": {\n \"option\": \"u64\"\n }\n },\n {\n \"name\": \"merkle_root_hashes\",\n \"type\": {\n \"vec\": \"string\"\n }\n },\n {\n \"name\": \"merkle_root_leaf_counts\",\n \"type\": {\n \"vec\": \"u32\"\n }\n },\n {\n \"name\": \"merkle_root_sums\",\n \"type\": {\n \"vec\": \"u64\"\n }\n },\n {\n \"name\": \"uri\",\n \"type\": {\n \"option\": \"string\"\n }\n },\n {\n \"name\": \"airdrop_type\",\n \"type\": {\n \"defined\": {\n \"name\": \"AirdropType\"\n }\n }\n },\n {\n \"name\": \"created_at\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"MerkleAirdropWithdrawnEvent\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"airdrop\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"created_at\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"MerkleProofAirdrop\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"base\",\n \"type\": {\n \"defined\": {\n \"name\": \"AirdropBase\"\n }\n }\n },\n {\n \"name\": \"merkle_roots\",\n \"type\": {\n \"vec\": {\n \"defined\": {\n \"name\": \"MerkleRootEntry\"\n }\n }\n }\n },\n {\n \"name\": \"merkle_tree_uri\",\n \"type\": {\n \"option\": \"string\"\n }\n }\n ]\n }\n },\n {\n \"name\": \"MerkleProofNode\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"sibling_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"sibling_sum\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"is_left\",\n \"type\": \"bool\"\n }\n ]\n }\n },\n {\n \"name\": \"MerkleRootEntry\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"root\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"leaf_count\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"root_sum\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"MerkleRootRegisteredEvent\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"airdrop\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"total_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"merkle_root_hashes\",\n \"type\": {\n \"vec\": \"string\"\n }\n },\n {\n \"name\": \"merkle_root_leaf_counts\",\n \"type\": {\n \"vec\": \"u32\"\n }\n },\n {\n \"name\": \"merkle_root_sums\",\n \"type\": {\n \"vec\": \"u64\"\n }\n },\n {\n \"name\": \"uri\",\n \"type\": {\n \"option\": \"string\"\n }\n },\n {\n \"name\": \"created_at\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"OnchainAirdropDepositedEvent\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"airdrop\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"created_at\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"OnchainAirdropStartedEvent\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"airdrop\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"total_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"starts_at\",\n \"type\": {\n \"option\": \"u64\"\n }\n },\n {\n \"name\": \"ends_at\",\n \"type\": {\n \"option\": \"u64\"\n }\n },\n {\n \"name\": \"created_at\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"OnchainAirdropWithdrawnEvent\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"airdrop\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"created_at\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"OnchainListAirdrop\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"base\",\n \"type\": {\n \"defined\": {\n \"name\": \"AirdropBase\"\n }\n }\n },\n {\n \"name\": \"list_root\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"list_version\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"total_recipients\",\n \"type\": \"u32\"\n }\n ]\n }\n },\n {\n \"name\": \"OnchainRecipientsAppendedEvent\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"airdrop\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"list_root\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"added_count\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"total_count\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"total_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"created_at\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"RecipientInput\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"wallet\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"RegisterMerkleRootParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"merkle_roots\",\n \"type\": {\n \"vec\": {\n \"defined\": {\n \"name\": \"MerkleRootEntry\"\n }\n }\n }\n },\n {\n \"name\": \"uri\",\n \"type\": {\n \"option\": \"string\"\n }\n }\n ]\n }\n },\n {\n \"name\": \"StartMerkleAirdropParams\",\n \"docs\": [\n \"Parameters for merkle airdrop start.\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"starts_at\",\n \"type\": {\n \"option\": \"u64\"\n }\n },\n {\n \"name\": \"ends_at\",\n \"type\": {\n \"option\": \"u64\"\n }\n }\n ]\n }\n },\n {\n \"name\": \"StartOnchainAirdropParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"starts_at\",\n \"type\": {\n \"option\": \"u64\"\n }\n },\n {\n \"name\": \"ends_at\",\n \"type\": {\n \"option\": \"u64\"\n }\n }\n ]\n }\n },\n {\n \"name\": \"UpdateConfigEvent\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"config_account\",\n \"type\": \"string\"\n },\n {\n \"name\": \"updated_by\",\n \"type\": \"string\"\n },\n {\n \"name\": \"created_at\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"UpdateProtocolConfigParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"action\",\n \"type\": {\n \"defined\": {\n \"name\": \"AirdropAction\"\n }\n }\n },\n {\n \"name\": \"cost_lamports\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"UpdateStudioConfigParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"new_config_authority\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"claim_cost_lamports\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"protocol_vault\",\n \"type\": \"pubkey\"\n }\n ]\n }\n }\n ]\n}","import type { Idl } from '@coral-xyz/anchor'\n\nimport productionIdl from '../idl/airdrop-studio-contract.json'\nimport {\n AIRDROP_STUDIO_PROGRAM_ID,\n NETWORK_ALT_ADDRESSES,\n type AirdropStudioAltAddresses,\n} from './constants'\nimport type { AirdropStudioDeploymentConfig as SharedDeploymentConfig } from '../../sdk-core/src/deployment-config'\n\nexport type AirdropStudioDeployment = 'production'\n\nexport type AirdropStudioDeploymentConfig = SharedDeploymentConfig<AirdropStudioDeployment>\n\nexport const DEFAULT_AIRDROP_STUDIO_DEPLOYMENT: AirdropStudioDeployment = 'production'\n\nexport const AIRDROP_STUDIO_DEPLOYMENTS: Record<\n AirdropStudioDeployment,\n AirdropStudioDeploymentConfig\n> = {\n production: {\n deployment: 'production',\n programId: AIRDROP_STUDIO_PROGRAM_ID,\n idl: productionIdl as Idl,\n networkAltAddresses: NETWORK_ALT_ADDRESSES as AirdropStudioAltAddresses,\n },\n}\n\nexport const getAirdropStudioDeployment = (\n deployment: AirdropStudioDeployment = DEFAULT_AIRDROP_STUDIO_DEPLOYMENT,\n) => AIRDROP_STUDIO_DEPLOYMENTS[deployment]\n","import {\n AirdropStudioClientBase,\n type AirdropStudioClientConfig as BaseAirdropStudioConfig,\n type AirdropStudioProgram,\n type FetchClaimStatusFromIndexArgs,\n type FetchClaimStatusFromLeafArgs,\n type ListOnchainRecipientsArgs,\n type LookupTableUsage,\n} from '../../sdk-core/src/client-base'\nimport {\n getAirdropStudioDeployment,\n type AirdropStudioDeployment,\n type AirdropStudioDeploymentConfig,\n} from './deployments'\n\nexport type AirdropStudioConfig = Omit<\n BaseAirdropStudioConfig<AirdropStudioDeployment>,\n 'deployment'\n> & {\n deployment?: AirdropStudioDeployment\n}\n\nexport { type AirdropStudioProgram, type FetchClaimStatusFromIndexArgs }\nexport { type FetchClaimStatusFromLeafArgs, type ListOnchainRecipientsArgs, type LookupTableUsage }\n\nexport class AirdropStudioClient extends AirdropStudioClientBase<AirdropStudioDeployment> {\n private constructor(\n config: AirdropStudioConfig,\n program: AirdropStudioProgram,\n deploymentConfig: AirdropStudioDeploymentConfig,\n ) {\n super(config, program, deploymentConfig)\n }\n\n static async init(config: AirdropStudioConfig): Promise<AirdropStudioClient> {\n const deploymentConfig = getAirdropStudioDeployment(config.deployment)\n const program = AirdropStudioClientBase.createProgram(config.connection, deploymentConfig)\n AirdropStudioClientBase.assertProgramIdMatchesDeployment(program, deploymentConfig)\n\n return new AirdropStudioClient(config, program, deploymentConfig)\n }\n}\n","import { AnchorError } from '@coral-xyz/anchor'\nimport type { SimulatedTransactionResponse } from '@solana/web3.js'\n\nimport idl from '../idl/airdrop-studio-contract.json'\n\nexport type AirdropStudioErrorDefinition = {\n code: number\n name: string\n msg: string\n}\n\ntype IdlWithErrors = {\n errors?: AirdropStudioErrorDefinition[]\n}\n\nconst idlErrors: AirdropStudioErrorDefinition[] = (idl as IdlWithErrors).errors ?? []\n\nexport const AIRDROP_STUDIO_ERROR_LIST = [...idlErrors]\n\nexport const AIRDROP_STUDIO_ERROR_BY_CODE = Object.fromEntries(\n idlErrors.map((error) => [error.code, error]),\n) as Record<number, AirdropStudioErrorDefinition>\n\nexport const AIRDROP_STUDIO_ERROR_BY_NAME = Object.fromEntries(\n idlErrors.map((error) => [error.name, error]),\n) as Record<string, AirdropStudioErrorDefinition>\n\nexport const getAirdropStudioErrorByCode = (code: number) => AIRDROP_STUDIO_ERROR_BY_CODE[code]\n\nexport const getAirdropStudioErrorByName = (name: string) => AIRDROP_STUDIO_ERROR_BY_NAME[name]\n\nexport const getAirdropStudioErrorMessage = (code: number) =>\n AIRDROP_STUDIO_ERROR_BY_CODE[code]?.msg\n\nexport type NormalizedProgramError =\n | {\n source: 'anchor'\n anchorError: AnchorError\n logs?: string[]\n originalError: unknown\n definition?: AirdropStudioErrorDefinition\n }\n | {\n source: 'generic'\n error: Error\n logs?: string[]\n originalError: unknown\n definition?: AirdropStudioErrorDefinition\n }\n\nexport function normalizeProgramError(error: unknown): NormalizedProgramError {\n if (error instanceof AnchorError) {\n const definition = getDefinitionFromAnchor(error)\n return {\n source: 'anchor',\n anchorError: error,\n logs: error.logs ?? extractLogs(error),\n originalError: error,\n definition,\n }\n }\n\n const logs = extractLogs(error)\n if (logs) {\n const parsed = AnchorError.parse(logs)\n if (parsed) {\n return {\n source: 'anchor',\n anchorError: parsed,\n logs: parsed.logs ?? logs,\n originalError: error,\n definition: getDefinitionFromAnchor(parsed),\n }\n }\n }\n\n const coerced = coerceError(error)\n return {\n source: 'generic',\n error: coerced,\n logs,\n originalError: error,\n definition: getDefinitionFromMessage(coerced.message),\n }\n}\n\nexport function isSimulatedTransactionErrorResponse(\n error: unknown,\n): error is SimulatedTransactionResponse {\n if (typeof error !== 'object' || error === null) {\n return false\n }\n return 'err' in error\n}\n\nfunction extractLogs(error: unknown): string[] | undefined {\n if (typeof error !== 'object' || error === null) {\n return undefined\n }\n\n if ('logs' in error) {\n const logs = (error as { logs?: unknown }).logs\n if (Array.isArray(logs) && logs.every((log) => typeof log === 'string')) {\n return logs\n }\n }\n return undefined\n}\n\nfunction coerceError(error: unknown): Error {\n if (error instanceof Error) {\n return error\n }\n\n if (isSimulatedTransactionErrorResponse(error)) {\n return new Error(formatSimulationError(error))\n }\n\n return new Error(error ? String(error) : 'Unknown error')\n}\n\nfunction formatSimulationError(response: SimulatedTransactionResponse): string {\n const err = response.err\n if (!err) {\n return 'Simulated transaction failed without error details'\n }\n if (typeof err === 'string') {\n return `Simulated transaction failed: ${err}`\n }\n if (typeof err === 'object') {\n try {\n return `Simulated transaction failed: ${JSON.stringify(err)}`\n } catch {\n return 'Simulated transaction failed with unknown error'\n }\n }\n return 'Simulated transaction failed with unknown error'\n}\n\nfunction getDefinitionFromAnchor(error: AnchorError): AirdropStudioErrorDefinition | undefined {\n const code = error.error?.errorCode?.number\n if (typeof code === 'number') {\n return getAirdropStudioErrorByCode(code)\n }\n const name = error.error?.errorCode?.code\n if (name) {\n return getAirdropStudioErrorByName(name)\n }\n return undefined\n}\n\nfunction getDefinitionFromMessage(message: string): AirdropStudioErrorDefinition | undefined {\n for (const error of AIRDROP_STUDIO_ERROR_LIST) {\n if (message.includes(error.name) || message.includes(error.msg)) {\n return error\n }\n }\n return undefined\n}\n","{\n \"address\": \"bonkAZceSmwJCcBXknvMjqdUSVJUjnj211w68d2VCei\",\n \"metadata\": {\n \"name\": \"airdrop_studio_contract\",\n \"version\": \"0.1.0\",\n \"spec\": \"0.1.0\",\n \"description\": \"Airdrop studio for bonkit.dev\"\n },\n \"instructions\": [\n {\n \"name\": \"append_onchain_recipients\",\n \"discriminator\": [\n 88,\n 187,\n 192,\n 252,\n 105,\n 199,\n 193,\n 33\n ],\n \"accounts\": [\n {\n \"name\": \"creator\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"studio_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112,\n 45,\n 115,\n 116,\n 117,\n 100,\n 105,\n 111,\n 45,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"protocol_config\"\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true\n },\n {\n \"name\": \"list_root\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 108,\n 105,\n 115,\n 116,\n 45,\n 114,\n 111,\n 111,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"airdrop\"\n }\n ]\n }\n },\n {\n \"name\": \"list_chunk\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 108,\n 105,\n 115,\n 116,\n 45,\n 99,\n 104,\n 117,\n 110,\n 107\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"airdrop\"\n }\n ]\n }\n },\n {\n \"name\": \"protocol_vault\",\n \"writable\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"event_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 95,\n 95,\n 101,\n 118,\n 101,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"program\"\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": {\n \"name\": \"AppendOnchainRecipientsParams\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"cancel_merkle_airdrop\",\n \"discriminator\": [\n 208,\n 155,\n 251,\n 61,\n 70,\n 56,\n 14,\n 106\n ],\n \"accounts\": [\n {\n \"name\": \"creator\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true\n },\n {\n \"name\": \"mint\"\n },\n {\n \"name\": \"vault\",\n \"writable\": true\n },\n {\n \"name\": \"creator_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"token_program\"\n },\n {\n \"name\": \"memo_program\",\n \"address\": \"MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"event_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 95,\n 95,\n 101,\n 118,\n 101,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"program\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"cancel_onchain_airdrop\",\n \"discriminator\": [\n 180,\n 220,\n 146,\n 21,\n 119,\n 240,\n 183,\n 34\n ],\n \"accounts\": [\n {\n \"name\": \"creator\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true\n },\n {\n \"name\": \"mint\"\n },\n {\n \"name\": \"vault\",\n \"writable\": true\n },\n {\n \"name\": \"creator_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"token_program\"\n },\n {\n \"name\": \"memo_program\",\n \"address\": \"MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"event_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 95,\n 95,\n 101,\n 118,\n 101,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"program\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"claim_merkle_tokens\",\n \"discriminator\": [\n 84,\n 58,\n 147,\n 32,\n 78,\n 173,\n 23,\n 246\n ],\n \"accounts\": [\n {\n \"name\": \"airdrop\",\n \"docs\": [\n \"Airdrop round – must be `Approved`\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"claimer\",\n \"docs\": [\n \"Claimant\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"studio_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112,\n 45,\n 115,\n 116,\n 117,\n 100,\n 105,\n 111,\n 45,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"protocol_vault\",\n \"docs\": [\n \"Protocol vault receiving claim costs.\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"claimer_ata\",\n \"docs\": [\n \"Claimant's ATA\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"mint\"\n },\n {\n \"name\": \"vault\",\n \"docs\": [\n \"Vault holding undistributed tokens\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"claim_status\",\n \"docs\": [\n \"Claim status PDA: prevents double-claim per leaf hash\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 108,\n 97,\n 105,\n 109,\n 45,\n 115,\n 116,\n 97,\n 116,\n 117,\n 115\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"airdrop\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"params.leaf\"\n }\n ]\n }\n },\n {\n \"name\": \"token_program\"\n },\n {\n \"name\": \"memo_program\",\n \"address\": \"MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": {\n \"name\": \"ClaimMerkleParams\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"claim_onchain_tokens\",\n \"discriminator\": [\n 118,\n 57,\n 121,\n 11,\n 13,\n 43,\n 180,\n 105\n ],\n \"accounts\": [\n {\n \"name\": \"airdrop\",\n \"writable\": true\n },\n {\n \"name\": \"list_root\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 108,\n 105,\n 115,\n 116,\n 45,\n 114,\n 111,\n 111,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"airdrop\"\n }\n ]\n }\n },\n {\n \"name\": \"list_chunk\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 108,\n 105,\n 115,\n 116,\n 45,\n 99,\n 104,\n 117,\n 110,\n 107\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"airdrop\"\n }\n ]\n }\n },\n {\n \"name\": \"claimer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"studio_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112,\n 45,\n 115,\n 116,\n 117,\n 100,\n 105,\n 111,\n 45,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"protocol_vault\",\n \"docs\": [\n \"Protocol vault receiving claim costs.\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"claimer_ata\",\n \"writable\": true\n },\n {\n \"name\": \"mint\"\n },\n {\n \"name\": \"vault\",\n \"writable\": true\n },\n {\n \"name\": \"claim_status\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 108,\n 97,\n 105,\n 109,\n 45,\n 115,\n 116,\n 97,\n 116,\n 117,\n 115\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"airdrop\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"params.entry_index\"\n }\n ]\n }\n },\n {\n \"name\": \"token_program\"\n },\n {\n \"name\": \"memo_program\",\n \"address\": \"MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"event_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 95,\n 95,\n 101,\n 118,\n 101,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"program\"\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": {\n \"name\": \"ClaimOnchainParams\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"create_merkle_airdrop\",\n \"discriminator\": [\n 90,\n 140,\n 123,\n 107,\n 48,\n 144,\n 3,\n 37\n ],\n \"accounts\": [\n {\n \"name\": \"studio_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112,\n 45,\n 115,\n 116,\n 117,\n 100,\n 105,\n 111,\n 45,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"protocol_config\"\n },\n {\n \"name\": \"creator\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"draft_registry\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 100,\n 114,\n 97,\n 102,\n 116,\n 45,\n 114,\n 101,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"creator\"\n }\n ]\n }\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"creator\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"params.draft_index\"\n }\n ]\n }\n },\n {\n \"name\": \"draft_index\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 100,\n 114,\n 97,\n 102,\n 116,\n 45,\n 105,\n 100,\n 120\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"creator\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"params.draft_index\"\n }\n ]\n }\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"airdrop\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"mint\"\n },\n {\n \"name\": \"protocol_vault\",\n \"docs\": [\n \"Protocol vault receiving creation costs.\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"token_program\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"event_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 95,\n 95,\n 101,\n 118,\n 101,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"program\"\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": {\n \"name\": \"CreateMerkleAirdropParams\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"create_onchain_airdrop\",\n \"discriminator\": [\n 30,\n 165,\n 141,\n 73,\n 117,\n 1,\n 123,\n 246\n ],\n \"accounts\": [\n {\n \"name\": \"studio_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112,\n 45,\n 115,\n 116,\n 117,\n 100,\n 105,\n 111,\n 45,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"protocol_config\"\n },\n {\n \"name\": \"creator\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"draft_registry\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 100,\n 114,\n 97,\n 102,\n 116,\n 45,\n 114,\n 101,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"creator\"\n }\n ]\n }\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"creator\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"params.draft_index\"\n }\n ]\n }\n },\n {\n \"name\": \"draft_index\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 100,\n 114,\n 97,\n 102,\n 116,\n 45,\n 105,\n 100,\n 120\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"creator\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"params.draft_index\"\n }\n ]\n }\n },\n {\n \"name\": \"list_root\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 108,\n 105,\n 115,\n 116,\n 45,\n 114,\n 111,\n 111,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"airdrop\"\n }\n ]\n }\n },\n {\n \"name\": \"list_chunk\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 108,\n 105,\n 115,\n 116,\n 45,\n 99,\n 104,\n 117,\n 110,\n 107\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"airdrop\"\n }\n ]\n }\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"airdrop\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"mint\"\n },\n {\n \"name\": \"protocol_vault\",\n \"docs\": [\n \"Protocol vault receiving creation costs.\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"token_program\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"event_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 95,\n 95,\n 101,\n 118,\n 101,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"program\"\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": {\n \"name\": \"CreateOnchainAirdropParams\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"deposit_merkle_airdrop\",\n \"discriminator\": [\n 129,\n 9,\n 210,\n 176,\n 19,\n 33,\n 20,\n 148\n ],\n \"accounts\": [\n {\n \"name\": \"creator\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"studio_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112,\n 45,\n 115,\n 116,\n 117,\n 100,\n 105,\n 111,\n 45,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"protocol_config\"\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true\n },\n {\n \"name\": \"mint\"\n },\n {\n \"name\": \"vault\",\n \"writable\": true\n },\n {\n \"name\": \"payer_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"token_program\"\n },\n {\n \"name\": \"protocol_vault\",\n \"docs\": [\n \"Protocol vault receiving deposit costs.\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"event_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 95,\n 95,\n 101,\n 118,\n 101,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"program\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"deposit_onchain_airdrop\",\n \"discriminator\": [\n 194,\n 58,\n 250,\n 92,\n 1,\n 225,\n 91,\n 243\n ],\n \"accounts\": [\n {\n \"name\": \"creator\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"studio_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112,\n 45,\n 115,\n 116,\n 117,\n 100,\n 105,\n 111,\n 45,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"protocol_config\"\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true\n },\n {\n \"name\": \"list_root\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 108,\n 105,\n 115,\n 116,\n 45,\n 114,\n 111,\n 111,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"airdrop\"\n }\n ]\n }\n },\n {\n \"name\": \"mint\"\n },\n {\n \"name\": \"vault\",\n \"writable\": true\n },\n {\n \"name\": \"payer_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"token_program\"\n },\n {\n \"name\": \"protocol_vault\",\n \"docs\": [\n \"Protocol vault receiving deposit costs.\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"event_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 95,\n 95,\n 101,\n 118,\n 101,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"program\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"initialize_protocol_config\",\n \"discriminator\": [\n 28,\n 50,\n 43,\n 233,\n 244,\n 98,\n 123,\n 118\n ],\n \"accounts\": [\n {\n \"name\": \"protocol_config\",\n \"writable\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"studio_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112,\n 45,\n 115,\n 116,\n 117,\n 100,\n 105,\n 111,\n 45,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"event_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 95,\n 95,\n 101,\n 118,\n 101,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"program\"\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": {\n \"name\": \"InitProtocolConfigParams\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"initialize_studio_config\",\n \"discriminator\": [\n 167,\n 156,\n 148,\n 195,\n 148,\n 75,\n 152,\n 212\n ],\n \"accounts\": [\n {\n \"name\": \"config_account\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112,\n 45,\n 115,\n 116,\n 117,\n 100,\n 105,\n 111,\n 45,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"airdrop_program\",\n \"address\": \"bonkAZceSmwJCcBXknvMjqdUSVJUjnj211w68d2VCei\"\n },\n {\n \"name\": \"program_data\"\n },\n {\n \"name\": \"config_authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"event_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 95,\n 95,\n 101,\n 118,\n 101,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"program\"\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": {\n \"name\": \"InitStudioConfigParams\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"register_merkle_root\",\n \"discriminator\": [\n 51,\n 45,\n 179,\n 28,\n 97,\n 205,\n 185,\n 134\n ],\n \"accounts\": [\n {\n \"name\": \"studio_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112,\n 45,\n 115,\n 116,\n 117,\n 100,\n 105,\n 111,\n 45,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"protocol_config\"\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true\n },\n {\n \"name\": \"mint\"\n },\n {\n \"name\": \"creator\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"protocol_vault\",\n \"docs\": [\n \"Protocol vault receiving register costs.\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"event_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 95,\n 95,\n 101,\n 118,\n 101,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"program\"\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": {\n \"name\": \"RegisterMerkleRootParams\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"start_merkle_airdrop\",\n \"discriminator\": [\n 79,\n 91,\n 110,\n 101,\n 111,\n 34,\n 64,\n 221\n ],\n \"accounts\": [\n {\n \"name\": \"studio_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112,\n 45,\n 115,\n 116,\n 117,\n 100,\n 105,\n 111,\n 45,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"protocol_config\"\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true\n },\n {\n \"name\": \"creator\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"protocol_vault\",\n \"docs\": [\n \"Protocol vault receiving start costs.\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"event_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 95,\n 95,\n 101,\n 118,\n 101,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"program\"\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": {\n \"name\": \"StartMerkleAirdropParams\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"start_onchain_airdrop\",\n \"discriminator\": [\n 235,\n 97,\n 63,\n 215,\n 189,\n 18,\n 81,\n 175\n ],\n \"accounts\": [\n {\n \"name\": \"creator\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"studio_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112,\n 45,\n 115,\n 116,\n 117,\n 100,\n 105,\n 111,\n 45,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"protocol_config\"\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true\n },\n {\n \"name\": \"list_root\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 108,\n 105,\n 115,\n 116,\n 45,\n 114,\n 111,\n 111,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"airdrop\"\n }\n ]\n }\n },\n {\n \"name\": \"protocol_vault\",\n \"docs\": [\n \"Protocol vault receiving start costs.\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"event_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 95,\n 95,\n 101,\n 118,\n 101,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"program\"\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": {\n \"name\": \"StartOnchainAirdropParams\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"update_protocol_config\",\n \"discriminator\": [\n 197,\n 97,\n 123,\n 54,\n 221,\n 168,\n 11,\n 135\n ],\n \"accounts\": [\n {\n \"name\": \"protocol_config\",\n \"writable\": true\n },\n {\n \"name\": \"studio_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112,\n 45,\n 115,\n 116,\n 117,\n 100,\n 105,\n 111,\n 45,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"config_authority\",\n \"writable\": true,\n \"signer\": true,\n \"relations\": [\n \"studio_config\"\n ]\n },\n {\n \"name\": \"event_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 95,\n 95,\n 101,\n 118,\n 101,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"program\"\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": {\n \"name\": \"UpdateProtocolConfigParams\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"update_studio_config\",\n \"discriminator\": [\n 243,\n 146,\n 125,\n 172,\n 230,\n 187,\n 93,\n 123\n ],\n \"accounts\": [\n {\n \"name\": \"config_account\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112,\n 45,\n 115,\n 116,\n 117,\n 100,\n 105,\n 111,\n 45,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"config_authority\",\n \"writable\": true,\n \"signer\": true,\n \"relations\": [\n \"config_account\"\n ]\n },\n {\n \"name\": \"event_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 95,\n 95,\n 101,\n 118,\n 101,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"program\"\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": {\n \"name\": \"UpdateStudioConfigParams\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"withdraw_merkle_airdrop\",\n \"discriminator\": [\n 124,\n 134,\n 136,\n 135,\n 147,\n 213,\n 96,\n 207\n ],\n \"accounts\": [\n {\n \"name\": \"creator\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true\n },\n {\n \"name\": \"mint\"\n },\n {\n \"name\": \"vault\",\n \"writable\": true\n },\n {\n \"name\": \"creator_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"token_program\"\n },\n {\n \"name\": \"memo_program\",\n \"address\": \"MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"event_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 95,\n 95,\n 101,\n 118,\n 101,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"program\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"withdraw_onchain_airdrop\",\n \"discriminator\": [\n 152,\n 147,\n 37,\n 215,\n 194,\n 239,\n 180,\n 102\n ],\n \"accounts\": [\n {\n \"name\": \"creator\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true\n },\n {\n \"name\": \"mint\"\n },\n {\n \"name\": \"vault\",\n \"writable\": true\n },\n {\n \"name\": \"creator_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"token_program\"\n },\n {\n \"name\": \"memo_program\",\n \"address\": \"MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"event_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 95,\n 95,\n 101,\n 118,\n 101,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"program\"\n }\n ],\n \"args\": []\n }\n ],\n \"accounts\": [\n {\n \"name\": \"AirdropProtocolConfig\",\n \"discriminator\": [\n 182,\n 140,\n 212,\n 121,\n 236,\n 112,\n 171,\n 99\n ]\n },\n {\n \"name\": \"AirdropStudioConfig\",\n \"discriminator\": [\n 245,\n 76,\n 54,\n 47,\n 97,\n 125,\n 53,\n 141\n ]\n },\n {\n \"name\": \"ClaimStatus\",\n \"discriminator\": [\n 22,\n 183,\n 249,\n 157,\n 247,\n 95,\n 150,\n 96\n ]\n },\n {\n \"name\": \"DraftIndex\",\n \"discriminator\": [\n 210,\n 178,\n 236,\n 43,\n 98,\n 133,\n 119,\n 229\n ]\n },\n {\n \"name\": \"DraftRegistry\",\n \"discriminator\": [\n 39,\n 95,\n 131,\n 182,\n 236,\n 194,\n 11,\n 133\n ]\n },\n {\n \"name\": \"ListRoot\",\n \"discriminator\": [\n 245,\n 62,\n 57,\n 68,\n 97,\n 235,\n 172,\n 240\n ]\n },\n {\n \"name\": \"MerkleProofAirdrop\",\n \"discriminator\": [\n 57,\n 83,\n 229,\n 57,\n 46,\n 186,\n 81,\n 103\n ]\n },\n {\n \"name\": \"OnchainListAirdrop\",\n \"discriminator\": [\n 51,\n 172,\n 66,\n 52,\n 187,\n 222,\n 110,\n 7\n ]\n }\n ],\n \"events\": [\n {\n \"name\": \"AirdropCanceledEvent\",\n \"discriminator\": [\n 208,\n 168,\n 213,\n 213,\n 143,\n 189,\n 124,\n 74\n ]\n },\n {\n \"name\": \"AirdropDraftCreatedEvent\",\n \"discriminator\": [\n 48,\n 179,\n 191,\n 138,\n 132,\n 224,\n 243,\n 244\n ]\n },\n {\n \"name\": \"ClaimTokenEvent\",\n \"discriminator\": [\n 127,\n 10,\n 14,\n 49,\n 47,\n 171,\n 31,\n 127\n ]\n },\n {\n \"name\": \"CreateConfigEvent\",\n \"discriminator\": [\n 107,\n 52,\n 89,\n 129,\n 55,\n 226,\n 81,\n 22\n ]\n },\n {\n \"name\": \"CreateProtocolConfigEvent\",\n \"discriminator\": [\n 44,\n 74,\n 184,\n 0,\n 56,\n 102,\n 52,\n 171\n ]\n },\n {\n \"name\": \"MerkleAirdropDepositedEvent\",\n \"discriminator\": [\n 102,\n 107,\n 60,\n 163,\n 118,\n 171,\n 57,\n 172\n ]\n },\n {\n \"name\": \"MerkleAirdropStartedEvent\",\n \"discriminator\": [\n 251,\n 240,\n 64,\n 108,\n 102,\n 41,\n 135,\n 217\n ]\n },\n {\n \"name\": \"MerkleAirdropWithdrawnEvent\",\n \"discriminator\": [\n 19,\n 241,\n 82,\n 184,\n 118,\n 253,\n 149,\n 98\n ]\n },\n {\n \"name\": \"MerkleRootRegisteredEvent\",\n \"discriminator\": [\n 142,\n 111,\n 67,\n 50,\n 100,\n 45,\n 126,\n 44\n ]\n },\n {\n \"name\": \"OnchainAirdropDepositedEvent\",\n \"discriminator\": [\n 54,\n 224,\n 243,\n 194,\n 29,\n 104,\n 84,\n 57\n ]\n },\n {\n \"name\": \"OnchainAirdropStartedEvent\",\n \"discriminator\": [\n 219,\n 167,\n 202,\n 123,\n 151,\n 146,\n 78,\n 18\n ]\n },\n {\n \"name\": \"OnchainAirdropWithdrawnEvent\",\n \"discriminator\": [\n 188,\n 82,\n 32,\n 127,\n 174,\n 255,\n 67,\n 192\n ]\n },\n {\n \"name\": \"OnchainRecipientsAppendedEvent\",\n \"discriminator\": [\n 191,\n 140,\n 60,\n 224,\n 176,\n 199,\n 46,\n 39\n ]\n },\n {\n \"name\": \"UpdateConfigEvent\",\n \"discriminator\": [\n 96,\n 112,\n 253,\n 102,\n 59,\n 78,\n 75,\n 134\n ]\n }\n ],\n \"errors\": [\n {\n \"code\": 6000,\n \"name\": \"AccountNotFound\",\n \"msg\": \"Account not found\"\n },\n {\n \"code\": 6001,\n \"name\": \"InvalidConfigAuthority\",\n \"msg\": \"Invalid config authority\"\n },\n {\n \"code\": 6002,\n \"name\": \"AccountAlreadyInitialized\",\n \"msg\": \"Account already initialized\"\n },\n {\n \"code\": 6003,\n \"name\": \"InvalidAirdropType\",\n \"msg\": \"Invalid airdrop type\"\n },\n {\n \"code\": 6004,\n \"name\": \"InvalidActionType\",\n \"msg\": \"Invalid action type\"\n },\n {\n \"code\": 6005,\n \"name\": \"InvalidPubkey\",\n \"msg\": \"Invalid pubkey\"\n },\n {\n \"code\": 6006,\n \"name\": \"InvalidTimestamp\",\n \"msg\": \"Invalid timestamp\"\n },\n {\n \"code\": 6007,\n \"name\": \"InvalidAmount\",\n \"msg\": \"Invalid Amount\"\n },\n {\n \"code\": 6008,\n \"name\": \"UriTooLong\",\n \"msg\": \"Uri Too Long\"\n },\n {\n \"code\": 6009,\n \"name\": \"InvalidSourceAccount\",\n \"msg\": \"Invalid source account\"\n },\n {\n \"code\": 6010,\n \"name\": \"AirdropNotStarted\",\n \"msg\": \"Airdrop not started\"\n },\n {\n \"code\": 6011,\n \"name\": \"AirdropEnded\",\n \"msg\": \"Airdrop ended\"\n },\n {\n \"code\": 6012,\n \"name\": \"AirdropNotEnded\",\n \"msg\": \"Airdrop not ended\"\n },\n {\n \"code\": 6013,\n \"name\": \"AirdropHasNoEnd\",\n \"msg\": \"Airdrop has no end\"\n },\n {\n \"code\": 6014,\n \"name\": \"InvalidState\",\n \"msg\": \"Invalid state\"\n },\n {\n \"code\": 6015,\n \"name\": \"EndBeforeStart\",\n \"msg\": \"End before start\"\n },\n {\n \"code\": 6016,\n \"name\": \"StartTimeInPast\",\n \"msg\": \"Start time in past\"\n },\n {\n \"code\": 6017,\n \"name\": \"AlreadyClaimed\",\n \"msg\": \"Already claimed\"\n },\n {\n \"code\": 6018,\n \"name\": \"InvalidMerkleProof\",\n \"msg\": \"Invalid merkle proof\"\n },\n {\n \"code\": 6019,\n \"name\": \"MathOverflow\",\n \"msg\": \"Math overflow\"\n },\n {\n \"code\": 6020,\n \"name\": \"InsufficientVaultBalance\",\n \"msg\": \"Insufficient vault balance\"\n },\n {\n \"code\": 6021,\n \"name\": \"InsufficientFunds\",\n \"msg\": \"Insufficient funds\"\n },\n {\n \"code\": 6022,\n \"name\": \"InvalidCostLamports\",\n \"msg\": \"Creation cost exceeds the maximum allowed (1 SOL).\"\n },\n {\n \"code\": 6023,\n \"name\": \"UnsupportedMint\",\n \"msg\": \"Unsupported mint\"\n },\n {\n \"code\": 6024,\n \"name\": \"MintFreezeAuthorityNotAllowed\",\n \"msg\": \"Mint freeze authority is not allowed\"\n },\n {\n \"code\": 6025,\n \"name\": \"SourceCpiGuardEnabled\",\n \"msg\": \"Source token account has CPI Guard enabled\"\n },\n {\n \"code\": 6026,\n \"name\": \"InvalidAirdropAccount\",\n \"msg\": \"Invalid airdrop account\"\n },\n {\n \"code\": 6027,\n \"name\": \"MissingDraftRound\",\n \"msg\": \"Missing draft round\"\n },\n {\n \"code\": 6028,\n \"name\": \"InvalidCreator\",\n \"msg\": \"Invalid creator\"\n },\n {\n \"code\": 6029,\n \"name\": \"InvalidDraftRound\",\n \"msg\": \"Invalid draft round\"\n },\n {\n \"code\": 6030,\n \"name\": \"InvalidMint\",\n \"msg\": \"Invalid mint\"\n },\n {\n \"code\": 6031,\n \"name\": \"InvalidTokenProgram\",\n \"msg\": \"Invalid token program\"\n },\n {\n \"code\": 6032,\n \"name\": \"InvalidMemoProgram\",\n \"msg\": \"Invalid memo program\"\n },\n {\n \"code\": 6033,\n \"name\": \"Overflow\",\n \"msg\": \"Overflow\"\n },\n {\n \"code\": 6034,\n \"name\": \"InvalidAirdropStatus\",\n \"msg\": \"Invalid airdrop status\"\n },\n {\n \"code\": 6035,\n \"name\": \"InvalidProtocolVault\",\n \"msg\": \"Invalid protocol vault\"\n },\n {\n \"code\": 6036,\n \"name\": \"InvalidAirdropDraftIndex\",\n \"msg\": \"Invalid airdrop draft index\"\n },\n {\n \"code\": 6037,\n \"name\": \"InvalidPda\",\n \"msg\": \"Invalid PDA\"\n },\n {\n \"code\": 6038,\n \"name\": \"InvalidLeafData\",\n \"msg\": \"Invalid leaf data\"\n },\n {\n \"code\": 6039,\n \"name\": \"EmptyRecipientList\",\n \"msg\": \"Empty recipient list\"\n },\n {\n \"code\": 6040,\n \"name\": \"AppendRecipientsLimitExceeded\",\n \"msg\": \"Append recipients limit exceeded\"\n },\n {\n \"code\": 6041,\n \"name\": \"ListEmpty\",\n \"msg\": \"List is empty\"\n },\n {\n \"code\": 6042,\n \"name\": \"ListChunkOverflow\",\n \"msg\": \"List chunk overflow\"\n },\n {\n \"code\": 6043,\n \"name\": \"TransferFeeCalculationFailed\",\n \"msg\": \"Transfer fee calculation failed\"\n },\n {\n \"code\": 6044,\n \"name\": \"EmptyMerkleRoots\",\n \"msg\": \"Merkle roots list is empty\"\n },\n {\n \"code\": 6045,\n \"name\": \"MerkleRootsLimitExceeded\",\n \"msg\": \"Merkle roots list exceeds the maximum length\"\n },\n {\n \"code\": 6046,\n \"name\": \"InvalidMerkleRoot\",\n \"msg\": \"Invalid merkle root\"\n },\n {\n \"code\": 6047,\n \"name\": \"InvalidMerkleLeafCount\",\n \"msg\": \"Invalid merkle leaf count\"\n },\n {\n \"code\": 6048,\n \"name\": \"MerkleLeafCountExceeded\",\n \"msg\": \"Merkle leaf count exceeds the maximum allowed per root\"\n },\n {\n \"code\": 6049,\n \"name\": \"InvalidMerkleRootSum\",\n \"msg\": \"Invalid merkle root sum\"\n },\n {\n \"code\": 6050,\n \"name\": \"DuplicateMerkleRoot\",\n \"msg\": \"Duplicate merkle root\"\n },\n {\n \"code\": 6051,\n \"name\": \"MerkleRootsAlreadyRegistered\",\n \"msg\": \"Merkle roots already registered\"\n },\n {\n \"code\": 6052,\n \"name\": \"MerkleRootSumTotalMismatch\",\n \"msg\": \"Merkle root sum total mismatch\"\n },\n {\n \"code\": 6053,\n \"name\": \"AirdropDurationTooShort\",\n \"msg\": \"Airdrop duration is too short\"\n }\n ],\n \"types\": [\n {\n \"name\": \"AirdropAction\",\n \"repr\": {\n \"kind\": \"rust\"\n },\n \"type\": {\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"CreateOnchainAirdrop\"\n },\n {\n \"name\": \"CreateMerkleAirdrop\"\n },\n {\n \"name\": \"RegisterMerkleRoot\"\n },\n {\n \"name\": \"DepositMerkleAirdrop\"\n },\n {\n \"name\": \"StartMerkleAirdrop\"\n },\n {\n \"name\": \"AppendOnchainRecipients\"\n },\n {\n \"name\": \"DepositOnchainAirdrop\"\n },\n {\n \"name\": \"StartOnchainAirdrop\"\n }\n ]\n }\n },\n {\n \"name\": \"AirdropBase\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"is_initialized\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"airdrop_index\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"airdrop_type\",\n \"type\": {\n \"defined\": {\n \"name\": \"AirdropType\"\n }\n }\n },\n {\n \"name\": \"mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"total_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"claimed_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"created_at\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"starts_at\",\n \"type\": {\n \"option\": \"u64\"\n }\n },\n {\n \"name\": \"ends_at\",\n \"type\": {\n \"option\": \"u64\"\n }\n },\n {\n \"name\": \"status\",\n \"type\": {\n \"defined\": {\n \"name\": \"AirdropStatus\"\n }\n }\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"AirdropCanceledEvent\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"airdrop\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"canceled_by\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"created_at\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"AirdropDraftCreatedEvent\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"airdrop\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"airdrop_type\",\n \"type\": \"string\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"created_at\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"AirdropProtocolConfig\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"is_initialized\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"action\",\n \"type\": {\n \"defined\": {\n \"name\": \"AirdropAction\"\n }\n }\n },\n {\n \"name\": \"cost_lamports\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"AirdropStatus\",\n \"repr\": {\n \"kind\": \"rust\"\n },\n \"type\": {\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"Draft\"\n },\n {\n \"name\": \"Approved\"\n },\n {\n \"name\": \"Deposited\"\n },\n {\n \"name\": \"Canceled\"\n }\n ]\n }\n },\n {\n \"name\": \"AirdropStudioConfig\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"is_initialized\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"config_authority\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"claim_cost_lamports\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"protocol_vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"AirdropType\",\n \"repr\": {\n \"kind\": \"rust\"\n },\n \"type\": {\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"OnChainList\"\n },\n {\n \"name\": \"MerkleProof\"\n }\n ]\n }\n },\n {\n \"name\": \"AppendOnchainRecipientsParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"recipients\",\n \"type\": {\n \"vec\": {\n \"defined\": {\n \"name\": \"RecipientInput\"\n }\n }\n }\n }\n ]\n }\n },\n {\n \"name\": \"ClaimMerkleParams\",\n \"docs\": [\n \"Parameters supplied by claimer.\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"root_index\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"leaf_index\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"leaf\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"proof\",\n \"type\": {\n \"vec\": {\n \"defined\": {\n \"name\": \"MerkleProofNode\"\n }\n }\n }\n }\n ]\n }\n },\n {\n \"name\": \"ClaimOnchainParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"entry_index\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"ClaimStatus\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"is_initialized\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"is_claimed\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"claimed_at\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"ClaimTokenEvent\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"airdrop\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"claimer\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"created_at\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"CreateConfigEvent\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"config_account\",\n \"type\": \"string\"\n },\n {\n \"name\": \"config_authority\",\n \"type\": \"string\"\n },\n {\n \"name\": \"created_at\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"CreateMerkleAirdropParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"draft_index\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"starts_at\",\n \"type\": {\n \"option\": \"u64\"\n }\n },\n {\n \"name\": \"ends_at\",\n \"type\": {\n \"option\": \"u64\"\n }\n }\n ]\n }\n },\n {\n \"name\": \"CreateOnchainAirdropParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"draft_index\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"starts_at\",\n \"type\": {\n \"option\": \"u64\"\n }\n },\n {\n \"name\": \"ends_at\",\n \"type\": {\n \"option\": \"u64\"\n }\n }\n ]\n }\n },\n {\n \"name\": \"CreateProtocolConfigEvent\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"protocol_config_account\",\n \"type\": \"string\"\n },\n {\n \"name\": \"action_type\",\n \"type\": \"string\"\n },\n {\n \"name\": \"config_authority\",\n \"type\": \"string\"\n },\n {\n \"name\": \"created_at\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"DraftIndex\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"is_initialized\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"index\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"airdrop\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"DraftRegistry\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"is_initialized\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"total_count\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"InitProtocolConfigParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"action\",\n \"type\": {\n \"defined\": {\n \"name\": \"AirdropAction\"\n }\n }\n },\n {\n \"name\": \"cost_lamports\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"InitStudioConfigParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"claim_cost_lamports\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"protocol_vault\",\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"ListRoot\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"is_initialized\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"airdrop\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"total_count\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"total_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"MerkleAirdropDepositedEvent\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"airdrop\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"created_at\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"MerkleAirdropStartedEvent\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"airdrop\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"total_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"starts_at\",\n \"type\": {\n \"option\": \"u64\"\n }\n },\n {\n \"name\": \"ends_at\",\n \"type\": {\n \"option\": \"u64\"\n }\n },\n {\n \"name\": \"merkle_root_hashes\",\n \"type\": {\n \"vec\": \"string\"\n }\n },\n {\n \"name\": \"merkle_root_leaf_counts\",\n \"type\": {\n \"vec\": \"u32\"\n }\n },\n {\n \"name\": \"merkle_root_sums\",\n \"type\": {\n \"vec\": \"u64\"\n }\n },\n {\n \"name\": \"uri\",\n \"type\": {\n \"option\": \"string\"\n }\n },\n {\n \"name\": \"airdrop_type\",\n \"type\": {\n \"defined\": {\n \"name\": \"AirdropType\"\n }\n }\n },\n {\n \"name\": \"created_at\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"MerkleAirdropWithdrawnEvent\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"airdrop\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"created_at\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"MerkleProofAirdrop\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"base\",\n \"type\": {\n \"defined\": {\n \"name\": \"AirdropBase\"\n }\n }\n },\n {\n \"name\": \"merkle_roots\",\n \"type\": {\n \"vec\": {\n \"defined\": {\n \"name\": \"MerkleRootEntry\"\n }\n }\n }\n },\n {\n \"name\": \"merkle_tree_uri\",\n \"type\": {\n \"option\": \"string\"\n }\n }\n ]\n }\n },\n {\n \"name\": \"MerkleProofNode\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"sibling_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"sibling_sum\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"is_left\",\n \"type\": \"bool\"\n }\n ]\n }\n },\n {\n \"name\": \"MerkleRootEntry\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"root\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"leaf_count\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"root_sum\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"MerkleRootRegisteredEvent\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"airdrop\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"total_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"merkle_root_hashes\",\n \"type\": {\n \"vec\": \"string\"\n }\n },\n {\n \"name\": \"merkle_root_leaf_counts\",\n \"type\": {\n \"vec\": \"u32\"\n }\n },\n {\n \"name\": \"merkle_root_sums\",\n \"type\": {\n \"vec\": \"u64\"\n }\n },\n {\n \"name\": \"uri\",\n \"type\": {\n \"option\": \"string\"\n }\n },\n {\n \"name\": \"created_at\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"OnchainAirdropDepositedEvent\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"airdrop\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"created_at\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"OnchainAirdropStartedEvent\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"airdrop\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"total_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"starts_at\",\n \"type\": {\n \"option\": \"u64\"\n }\n },\n {\n \"name\": \"ends_at\",\n \"type\": {\n \"option\": \"u64\"\n }\n },\n {\n \"name\": \"created_at\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"OnchainAirdropWithdrawnEvent\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"airdrop\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"created_at\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"OnchainListAirdrop\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"base\",\n \"type\": {\n \"defined\": {\n \"name\": \"AirdropBase\"\n }\n }\n },\n {\n \"name\": \"list_root\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"list_version\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"total_recipients\",\n \"type\": \"u32\"\n }\n ]\n }\n },\n {\n \"name\": \"OnchainRecipientsAppendedEvent\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"airdrop\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"list_root\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"added_count\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"total_count\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"total_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"created_at\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"RecipientInput\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"wallet\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"RegisterMerkleRootParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"merkle_roots\",\n \"type\": {\n \"vec\": {\n \"defined\": {\n \"name\": \"MerkleRootEntry\"\n }\n }\n }\n },\n {\n \"name\": \"uri\",\n \"type\": {\n \"option\": \"string\"\n }\n }\n ]\n }\n },\n {\n \"name\": \"StartMerkleAirdropParams\",\n \"docs\": [\n \"Parameters for merkle airdrop start.\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"starts_at\",\n \"type\": {\n \"option\": \"u64\"\n }\n },\n {\n \"name\": \"ends_at\",\n \"type\": {\n \"option\": \"u64\"\n }\n }\n ]\n }\n },\n {\n \"name\": \"StartOnchainAirdropParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"starts_at\",\n \"type\": {\n \"option\": \"u64\"\n }\n },\n {\n \"name\": \"ends_at\",\n \"type\": {\n \"option\": \"u64\"\n }\n }\n ]\n }\n },\n {\n \"name\": \"UpdateConfigEvent\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"config_account\",\n \"type\": \"string\"\n },\n {\n \"name\": \"updated_by\",\n \"type\": \"string\"\n },\n {\n \"name\": \"created_at\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"UpdateProtocolConfigParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"action\",\n \"type\": {\n \"defined\": {\n \"name\": \"AirdropAction\"\n }\n }\n },\n {\n \"name\": \"cost_lamports\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"UpdateStudioConfigParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"new_config_authority\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"claim_cost_lamports\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"protocol_vault\",\n \"type\": \"pubkey\"\n }\n ]\n }\n }\n ]\n}","import { BN } from '@coral-xyz/anchor'\nimport { PublicKey } from '@solana/web3.js'\nimport { keccak_256 } from '@noble/hashes/sha3'\n\nimport type { ClaimMerkleParams, MerkleProofNode } from '@/types'\n\nexport const MAX_MERKLE_URI_LENGTH = 256\nexport const MAX_MERKLE_ROOTS = 4\nexport const MAX_MERKLE_PROOF_LEN = 18\nexport const MAX_MERKLE_LEAVES_PER_ROOT = 1 << MAX_MERKLE_PROOF_LEN\n\nexport type MerkleRecipientInput = {\n wallet: PublicKey\n amount: BN\n}\n\nexport type AirdropMerkleLeafInput = {\n wallet: PublicKey\n airdrop: PublicKey\n rootIndex: number\n leafIndex: number\n amount: BN\n}\n\nexport type MerkleNode = {\n hash: Uint8Array\n sum: BN\n}\n\nexport type MerkleLeafNode = MerkleNode & {\n leaf: AirdropMerkleLeafInput\n}\n\nexport type MerkleTree = {\n leaves: MerkleLeafNode[]\n layers: MerkleNode[][]\n root: MerkleNode\n rootIndex: number\n airdrop: PublicKey\n}\n\nexport type MerkleHasher = (data: Uint8Array) => Uint8Array\nexport type MerkleLeafHasher = (leaf: AirdropMerkleLeafInput) => Uint8Array\nexport type MerkleNodeHasher = (left: MerkleNode, right: MerkleNode) => Uint8Array\n\nexport type MerkleTreeOptions = {\n hash?: MerkleHasher\n hashLeaf?: MerkleLeafHasher\n hashNode?: MerkleNodeHasher\n}\n\nexport type MerkleRootBuildOptions = {\n airdrop: PublicKey\n maxRoots?: number\n maxLeavesPerRoot?: number\n treeOptions?: MerkleTreeOptions\n}\n\nexport type MerkleRootBuildResult = {\n rootEntries: {\n root: Uint8Array\n leafCount: number\n rootSum: BN\n }[]\n trees: MerkleTree[]\n}\n\nexport type MerklePayloadProofNode = {\n siblingHash: string\n siblingSum: string\n isLeft: boolean\n}\n\nexport type MerklePayloadLeaf = {\n wallet: string\n airdrop: string\n rootIndex: number\n leafIndex: number\n amount: string\n hash: string\n proof: MerklePayloadProofNode[]\n}\n\nexport type MerklePayload = {\n root: {\n airdrop: string\n hash: string\n sum: string\n }\n leaves: MerklePayloadLeaf[]\n}\n\nexport type MerkleRootPayload = {\n rootIndex: number\n payload: MerklePayload\n}\n\nexport type MerklePayloadBundle = {\n airdrop: string\n maxLeavesPerRoot: number\n roots: MerkleRootPayload[]\n}\n\nexport type SerializedMerkleNode = {\n hash: string\n sum: string\n}\n\nexport type SerializedMerkleLeaf = {\n wallet: string\n airdrop: string\n rootIndex: number\n leafIndex: number\n amount: string\n hash: string\n}\n\nexport type SerializedMerkleTree = {\n airdrop: string\n rootIndex: number\n leafCount: number\n root: SerializedMerkleNode\n leaves: SerializedMerkleLeaf[]\n layers: SerializedMerkleNode[][]\n}\n\nexport type SerializedMerkleRootEntry = {\n root: string\n leafCount: number\n rootSum: string\n}\n\nexport type SerializedMerkleRoots = {\n rootEntries: SerializedMerkleRootEntry[]\n trees: SerializedMerkleTree[]\n}\n\nconst defaultHash: MerkleHasher = (data) => keccak_256(data)\n\nconst chunkMerkleRecipients = (\n recipients: MerkleRecipientInput[],\n options: MerkleRootBuildOptions,\n emptyErrorMessage: string,\n) => {\n if (recipients.length === 0) {\n throw new Error(emptyErrorMessage)\n }\n\n const maxRoots = options.maxRoots ?? MAX_MERKLE_ROOTS\n const maxLeavesPerRoot = options.maxLeavesPerRoot ?? MAX_MERKLE_LEAVES_PER_ROOT\n\n if (maxRoots <= 0) {\n throw new Error('Max roots must be greater than zero.')\n }\n if (maxLeavesPerRoot <= 0) {\n throw new Error('Max leaves per root must be greater than zero.')\n }\n\n const chunks: MerkleRecipientInput[][] = []\n for (let i = 0; i < recipients.length; i += maxLeavesPerRoot) {\n chunks.push(recipients.slice(i, i + maxLeavesPerRoot))\n }\n\n if (chunks.length > maxRoots) {\n throw new Error('Merkle roots exceeds the maximum allowed.')\n }\n\n return { chunks, maxLeavesPerRoot }\n}\n\nconst toU32Buffer = (value: number) => {\n const buffer = Buffer.alloc(4)\n buffer.writeUInt32LE(value, 0)\n return buffer\n}\n\nconst toU64Buffer = (value: BN) => value.toArrayLike(Buffer, 'le', 8)\n\nconst toHex = (value: Uint8Array) => Buffer.from(value).toString('hex')\n\nconst fromHex = (value: string) => Uint8Array.from(Buffer.from(value, 'hex'))\n\nconst serializeMerkleNode = (node: MerkleNode): SerializedMerkleNode => ({\n hash: toHex(node.hash),\n sum: node.sum.toString(),\n})\n\nconst deserializeMerkleNode = (node: SerializedMerkleNode): MerkleNode => ({\n hash: fromHex(node.hash),\n sum: new BN(node.sum),\n})\n\nconst ensureLeafIndex = (leafIndex: number) => {\n if (!Number.isInteger(leafIndex) || leafIndex < 0 || leafIndex > 0xffffffff) {\n throw new Error('Leaf index must be a valid u32.')\n }\n}\n\nconst ensureRootIndex = (rootIndex: number) => {\n if (!Number.isInteger(rootIndex) || rootIndex < 0 || rootIndex > 0xff) {\n throw new Error('Root index must be a valid u8.')\n }\n}\n\nexport const serializeMerkleLeaf = (leaf: AirdropMerkleLeafInput) => {\n ensureRootIndex(leaf.rootIndex)\n ensureLeafIndex(leaf.leafIndex)\n return Buffer.concat([\n leaf.wallet.toBuffer(),\n leaf.airdrop.toBuffer(),\n Buffer.from([leaf.rootIndex]),\n toU32Buffer(leaf.leafIndex),\n toU64Buffer(leaf.amount),\n ])\n}\n\nexport const createMerkleLeafHash = (\n leaf: AirdropMerkleLeafInput,\n hashFn: MerkleHasher = defaultHash,\n) => {\n const serialized = serializeMerkleLeaf(leaf)\n return hashFn(Buffer.concat([Buffer.from([0x00]), serialized]))\n}\n\nconst createNodeHash = (left: MerkleNode, right: MerkleNode, hashFn: MerkleHasher = defaultHash) =>\n hashFn(\n Buffer.concat([\n Buffer.from([0x01]),\n Buffer.from(left.hash),\n toU64Buffer(left.sum),\n Buffer.from(right.hash),\n toU64Buffer(right.sum),\n ]),\n )\n\nconst resolveLeafHasher = (options?: MerkleTreeOptions): MerkleLeafHasher => {\n if (options?.hashLeaf) {\n return options.hashLeaf\n }\n\n const hashFn = options?.hash ?? defaultHash\n return (leaf) => createMerkleLeafHash(leaf, hashFn)\n}\n\nconst resolveNodeHasher = (options?: MerkleTreeOptions): MerkleNodeHasher => {\n if (options?.hashNode) {\n return options.hashNode\n }\n\n const hashFn = options?.hash ?? defaultHash\n return (left, right) => createNodeHash(left, right, hashFn)\n}\n\nconst createLeafNode = (\n leaf: AirdropMerkleLeafInput,\n options?: MerkleTreeOptions,\n): MerkleLeafNode => ({\n hash: resolveLeafHasher(options)(leaf),\n sum: leaf.amount,\n leaf,\n})\n\nconst createParentNode = (\n left: MerkleNode,\n right: MerkleNode,\n options?: MerkleTreeOptions,\n): MerkleNode => ({\n hash: resolveNodeHasher(options)(left, right),\n sum: left.sum.add(right.sum),\n})\n\nconst createZeroNode = (): MerkleNode => ({\n hash: new Uint8Array(32),\n sum: new BN(0),\n})\n\nconst ensureLeafConsistency = (leaves: AirdropMerkleLeafInput[]) => {\n if (leaves.length === 0) {\n throw new Error('Merkle leaves are required.')\n }\n\n const rootIndex = leaves[0].rootIndex\n const airdrop = leaves[0].airdrop.toBase58()\n\n leaves.forEach((leaf, index) => {\n if (leaf.leafIndex !== index) {\n throw new Error(`Leaf index mismatch at ${index}.`)\n }\n if (leaf.rootIndex !== rootIndex) {\n throw new Error('All leaves must share the same root index.')\n }\n if (leaf.airdrop.toBase58() !== airdrop) {\n throw new Error('All leaves must share the same airdrop.')\n }\n })\n}\n\nexport const buildMerkleTree = (\n recipients: MerkleRecipientInput[],\n options: MerkleTreeOptions & { airdrop: PublicKey; rootIndex?: number },\n): MerkleTree => {\n if (recipients.length === 0) {\n throw new Error('Merkle tree requires at least one leaf.')\n }\n if (recipients.length > MAX_MERKLE_LEAVES_PER_ROOT) {\n throw new Error('Merkle leaves per root exceeds the maximum allowed.')\n }\n\n const rootIndex = options.rootIndex ?? 0\n ensureRootIndex(rootIndex)\n\n const leafNodes = recipients.map((leaf, leafIndex) =>\n createLeafNode(\n {\n wallet: leaf.wallet,\n airdrop: options.airdrop,\n rootIndex,\n leafIndex,\n amount: leaf.amount,\n },\n options,\n ),\n )\n const layers: MerkleNode[][] = [leafNodes]\n\n while (layers[layers.length - 1].length > 1) {\n const current = layers[layers.length - 1]\n const next: MerkleNode[] = []\n const nodes = current.length % 2 === 1 ? [...current, createZeroNode()] : current\n\n for (let i = 0; i < nodes.length; i += 2) {\n const left = nodes[i]\n const right = nodes[i + 1]\n next.push(createParentNode(left, right, options))\n }\n\n layers.push(next)\n }\n\n return {\n leaves: leafNodes,\n layers,\n root: layers[layers.length - 1][0],\n rootIndex,\n airdrop: options.airdrop,\n }\n}\n\nexport const serializeMerkleTree = (tree: MerkleTree): SerializedMerkleTree => ({\n airdrop: tree.airdrop.toBase58(),\n rootIndex: tree.rootIndex,\n leafCount: tree.leaves.length,\n root: serializeMerkleNode(tree.root),\n leaves: tree.leaves.map((leafNode) => ({\n wallet: leafNode.leaf.wallet.toBase58(),\n airdrop: leafNode.leaf.airdrop.toBase58(),\n rootIndex: leafNode.leaf.rootIndex,\n leafIndex: leafNode.leaf.leafIndex,\n amount: leafNode.leaf.amount.toString(),\n hash: toHex(leafNode.hash),\n })),\n layers: tree.layers.map((layer) => layer.map(serializeMerkleNode)),\n})\n\nexport const serializeMerkleRoots = (result: MerkleRootBuildResult): SerializedMerkleRoots => ({\n rootEntries: result.rootEntries.map((entry) => ({\n root: toHex(entry.root),\n leafCount: entry.leafCount,\n rootSum: entry.rootSum.toString(),\n })),\n trees: result.trees.map(serializeMerkleTree),\n})\n\nexport const createMerklePayload = (\n leaves: AirdropMerkleLeafInput[],\n options?: MerkleTreeOptions,\n): MerklePayload => {\n ensureLeafConsistency(leaves)\n\n const leafNodes: MerkleNode[] = leaves.map((leaf) => ({\n hash: resolveLeafHasher(options)(leaf),\n sum: leaf.amount,\n }))\n\n const proofNodes = (targetIndex: number): MerkleProofNode[] => {\n let nodes = [...leafNodes]\n const proof: MerkleProofNode[] = []\n let index = targetIndex\n\n while (nodes.length > 1) {\n if (nodes.length % 2 === 1) {\n nodes = [...nodes, createZeroNode()]\n }\n\n const isRightNode = index % 2 === 1\n const siblingIndex = isRightNode ? index - 1 : index + 1\n const sibling = nodes[siblingIndex]\n\n proof.push({\n siblingHash: sibling.hash,\n siblingSum: sibling.sum,\n isLeft: isRightNode,\n })\n\n const next: MerkleNode[] = []\n for (let i = 0; i < nodes.length; i += 2) {\n const left = nodes[i]\n const right = nodes[i + 1]\n next.push(createParentNode(left, right, options))\n }\n nodes = next\n index = Math.floor(index / 2)\n }\n\n return proof\n }\n\n let level = [...leafNodes]\n while (level.length > 1) {\n if (level.length % 2 === 1) {\n level = [...level, createZeroNode()]\n }\n\n const next: MerkleNode[] = []\n for (let i = 0; i < level.length; i += 2) {\n const left = level[i]\n const right = level[i + 1]\n next.push(createParentNode(left, right, options))\n }\n level = next\n }\n\n const root = level[0]\n const rootAirdrop = leaves[0].airdrop\n\n return {\n root: {\n airdrop: rootAirdrop.toBase58(),\n hash: toHex(root.hash),\n sum: root.sum.toString(),\n },\n leaves: leaves.map((leaf, index) => ({\n wallet: leaf.wallet.toBase58(),\n airdrop: leaf.airdrop.toBase58(),\n rootIndex: leaf.rootIndex,\n leafIndex: leaf.leafIndex,\n amount: leaf.amount.toString(),\n hash: toHex(resolveLeafHasher(options)(leaf)),\n proof: proofNodes(index).map((node) => ({\n siblingHash: toHex(node.siblingHash),\n siblingSum: node.siblingSum.toString(),\n isLeft: node.isLeft,\n })),\n })),\n }\n}\n\nexport const createMerklePayloadBundle = (\n recipients: MerkleRecipientInput[],\n options: MerkleRootBuildOptions,\n): MerklePayloadBundle => {\n const { chunks, maxLeavesPerRoot } = chunkMerkleRecipients(\n recipients,\n options,\n 'Merkle recipients are required.',\n )\n\n const roots = chunks.map((chunk, rootIndex) => {\n const leaves = chunk.map((recipient, leafIndex) => ({\n wallet: recipient.wallet,\n airdrop: options.airdrop,\n rootIndex,\n leafIndex,\n amount: recipient.amount,\n }))\n\n return {\n rootIndex,\n payload: createMerklePayload(leaves, options.treeOptions),\n }\n })\n\n return {\n airdrop: options.airdrop.toBase58(),\n maxLeavesPerRoot,\n roots,\n }\n}\n\nexport const buildMerkleRoots = (\n recipients: MerkleRecipientInput[],\n options: MerkleRootBuildOptions,\n): MerkleRootBuildResult => {\n const { chunks } = chunkMerkleRecipients(\n recipients,\n options,\n 'Merkle roots require at least one recipient.',\n )\n\n const trees: MerkleTree[] = []\n const rootEntries = chunks.map((chunk, index) => {\n const tree = buildMerkleTree(chunk, {\n airdrop: options.airdrop,\n rootIndex: index,\n ...options.treeOptions,\n })\n const rootSum = chunk.reduce((total, recipient) => total.add(recipient.amount), new BN(0))\n trees.push(tree)\n return {\n root: tree.root.hash,\n leafCount: tree.leaves.length,\n rootSum,\n }\n })\n\n return { rootEntries, trees }\n}\n\nexport const getMerkleProof = (tree: MerkleTree, leafIndex: number): MerkleProofNode[] => {\n if (leafIndex < 0 || leafIndex >= tree.leaves.length) {\n throw new Error('Leaf index is out of bounds.')\n }\n\n const proof: MerkleProofNode[] = []\n let index = leafIndex\n\n for (let level = 0; level < tree.layers.length - 1; level += 1) {\n const layer = tree.layers[level]\n const nodes = layer.length % 2 === 1 ? [...layer, createZeroNode()] : layer\n const isLeft = index % 2 === 0\n const siblingIndex = isLeft ? index + 1 : index - 1\n const sibling = nodes[siblingIndex]\n\n proof.push({\n siblingHash: sibling.hash,\n siblingSum: sibling.sum,\n isLeft: !isLeft,\n })\n\n index = Math.floor(index / 2)\n }\n\n return proof\n}\n\nexport const getMerkleProofFromSerializedTree = (\n tree: SerializedMerkleTree,\n leafIndex: number,\n): MerkleProofNode[] => {\n if (leafIndex < 0 || leafIndex >= tree.leafCount) {\n throw new Error('Leaf index is out of bounds.')\n }\n if (tree.layers.length === 0) {\n throw new Error('Serialized Merkle tree requires at least one layer.')\n }\n\n const proof: MerkleProofNode[] = []\n let index = leafIndex\n\n for (let level = 0; level < tree.layers.length - 1; level += 1) {\n const layer = tree.layers[level].map(deserializeMerkleNode)\n const nodes = layer.length % 2 === 1 ? [...layer, createZeroNode()] : layer\n const isLeft = index % 2 === 0\n const siblingIndex = isLeft ? index + 1 : index - 1\n const sibling = nodes[siblingIndex]\n\n proof.push({\n siblingHash: sibling.hash,\n siblingSum: sibling.sum,\n isLeft: !isLeft,\n })\n\n index = Math.floor(index / 2)\n }\n\n return proof\n}\n\nexport const verifyMerkleProof = (\n leaf: MerkleNode,\n proof: MerkleProofNode[],\n root: MerkleNode,\n options?: MerkleTreeOptions,\n) => {\n let computed: MerkleNode = {\n hash: leaf.hash,\n sum: leaf.sum,\n }\n\n for (const step of proof) {\n const sibling: MerkleNode = {\n hash: step.siblingHash,\n sum: step.siblingSum,\n }\n\n computed = step.isLeft\n ? createParentNode(sibling, computed, options)\n : createParentNode(computed, sibling, options)\n }\n\n return Buffer.from(computed.hash).equals(Buffer.from(root.hash)) && computed.sum.eq(root.sum)\n}\n\nexport const createClaimMerkleParams = (tree: MerkleTree, leafIndex: number): ClaimMerkleParams => {\n const leafNode = tree.leaves[leafIndex]\n\n if (!leafNode) {\n throw new Error('Leaf index is out of bounds.')\n }\n\n return {\n rootIndex: tree.rootIndex,\n leafIndex,\n amount: leafNode.sum,\n leaf: leafNode.hash,\n proof: getMerkleProof(tree, leafIndex),\n }\n}\n\nexport const createClaimMerkleParamsFromSerializedTree = (\n tree: SerializedMerkleTree,\n leafIndex: number,\n): ClaimMerkleParams => {\n const leafNode = tree.leaves[leafIndex]\n\n if (!leafNode) {\n throw new Error('Leaf index is out of bounds.')\n }\n if (leafNode.leafIndex !== leafIndex) {\n throw new Error(`Serialized leaf index mismatch at ${leafIndex}.`)\n }\n if (leafNode.rootIndex !== tree.rootIndex) {\n throw new Error('Serialized leaf root index mismatch.')\n }\n\n return {\n rootIndex: tree.rootIndex,\n leafIndex,\n amount: new BN(leafNode.amount),\n leaf: fromHex(leafNode.hash),\n proof: getMerkleProofFromSerializedTree(tree, leafIndex),\n }\n}\n","/**\n * Internal helpers for u64. BigUint64Array is too slow as per 2025, so we implement it using Uint32Array.\n * @todo re-check https://issues.chromium.org/issues/42212588\n * @module\n */\nconst U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\n\nfunction fromBig(\n n: bigint,\n le = false\n): {\n h: number;\n l: number;\n} {\n if (le) return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\n\nfunction split(lst: bigint[], le = false): Uint32Array[] {\n const len = lst.length;\n let Ah = new Uint32Array(len);\n let Al = new Uint32Array(len);\n for (let i = 0; i < len; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\n\nconst toBig = (h: number, l: number): bigint => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h: number, _l: number, s: number): number => h >>> s;\nconst shrSL = (h: number, l: number, s: number): number => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h: number, l: number, s: number): number => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h: number, l: number, s: number): number => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h: number, l: number, s: number): number => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h: number, l: number, s: number): number => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h: number, l: number): number => l;\nconst rotr32L = (h: number, _l: number): number => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h: number, l: number, s: number): number => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h: number, l: number, s: number): number => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h: number, l: number, s: number): number => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h: number, l: number, s: number): number => (h << (s - 32)) | (l >>> (64 - s));\n\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(\n Ah: number,\n Al: number,\n Bh: number,\n Bl: number\n): {\n h: number;\n l: number;\n} {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al: number, Bl: number, Cl: number): number => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low: number, Ah: number, Bh: number, Ch: number): number =>\n (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al: number, Bl: number, Cl: number, Dl: number): number =>\n (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number): number =>\n (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al: number, Bl: number, Cl: number, Dl: number, El: number): number =>\n (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number, Eh: number): number =>\n (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n\n// prettier-ignore\nexport {\n add, add3H, add3L, add4H, add4L, add5H, add5L, fromBig, rotlBH, rotlBL, rotlSH, rotlSL, rotr32H, rotr32L, rotrBH, rotrBL, rotrSH, rotrSL, shrSH, shrSL, split, toBig\n};\n// prettier-ignore\nconst u64: { fromBig: typeof fromBig; split: typeof split; toBig: (h: number, l: number) => bigint; shrSH: (h: number, _l: number, s: number) => number; shrSL: (h: number, l: number, s: number) => number; rotrSH: (h: number, l: number, s: number) => number; rotrSL: (h: number, l: number, s: number) => number; rotrBH: (h: number, l: number, s: number) => number; rotrBL: (h: number, l: number, s: number) => number; rotr32H: (_h: number, l: number) => number; rotr32L: (h: number, _l: number) => number; rotlSH: (h: number, l: number, s: number) => number; rotlSL: (h: number, l: number, s: number) => number; rotlBH: (h: number, l: number, s: number) => number; rotlBL: (h: number, l: number, s: number) => number; add: typeof add; add3L: (Al: number, Bl: number, Cl: number) => number; add3H: (low: number, Ah: number, Bh: number, Ch: number) => number; add4L: (Al: number, Bl: number, Cl: number, Dl: number) => number; add4H: (low: number, Ah: number, Bh: number, Ch: number, Dh: number) => number; add5H: (low: number, Ah: number, Bh: number, Ch: number, Dh: number, Eh: number) => number; add5L: (Al: number, Bl: number, Cl: number, Dl: number, El: number) => number; } = {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n","/**\n * Utilities for hex, bytes, CSPRNG.\n * @module\n */\n/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated (2025-04-30), we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\n\n/** Checks if something is Uint8Array. Be careful: nodejs Buffer will return true. */\nexport function isBytes(a: unknown): a is Uint8Array {\n return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n\n/** Asserts something is positive integer. */\nexport function anumber(n: number): void {\n if (!Number.isSafeInteger(n) || n < 0) throw new Error('positive integer expected, got ' + n);\n}\n\n/** Asserts something is Uint8Array. */\nexport function abytes(b: Uint8Array | undefined, ...lengths: number[]): void {\n if (!isBytes(b)) throw new Error('Uint8Array expected');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error('Uint8Array expected of length ' + lengths + ', got length=' + b.length);\n}\n\n/** Asserts something is hash */\nexport function ahash(h: IHash): void {\n if (typeof h !== 'function' || typeof h.create !== 'function')\n throw new Error('Hash should be wrapped by utils.createHasher');\n anumber(h.outputLen);\n anumber(h.blockLen);\n}\n\n/** Asserts a hash instance has not been destroyed / finished */\nexport function aexists(instance: any, checkFinished = true): void {\n if (instance.destroyed) throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished) throw new Error('Hash#digest() has already been called');\n}\n\n/** Asserts output is properly-sized byte array */\nexport function aoutput(out: any, instance: any): void {\n abytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error('digestInto() expects output buffer of length at least ' + min);\n }\n}\n\n/** Generic type encompassing 8/16/32-byte arrays - but not 64-byte. */\n// prettier-ignore\nexport type TypedArray = Int8Array | Uint8ClampedArray | Uint8Array |\n Uint16Array | Int16Array | Uint32Array | Int32Array;\n\n/** Cast u8 / u16 / u32 to u8. */\nexport function u8(arr: TypedArray): Uint8Array {\n return new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n\n/** Cast u8 / u16 / u32 to u32. */\nexport function u32(arr: TypedArray): Uint32Array {\n return new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n}\n\n/** Zeroize a byte array. Warning: JS provides no guarantees. */\nexport function clean(...arrays: TypedArray[]): void {\n for (let i = 0; i < arrays.length; i++) {\n arrays[i].fill(0);\n }\n}\n\n/** Create DataView of an array for easy byte-level manipulation. */\nexport function createView(arr: TypedArray): DataView {\n return new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n\n/** The rotate right (circular right shift) operation for uint32 */\nexport function rotr(word: number, shift: number): number {\n return (word << (32 - shift)) | (word >>> shift);\n}\n\n/** The rotate left (circular left shift) operation for uint32 */\nexport function rotl(word: number, shift: number): number {\n return (word << shift) | ((word >>> (32 - shift)) >>> 0);\n}\n\n/** Is current platform little-endian? Most are. Big-Endian platform: IBM */\nexport const isLE: boolean = /* @__PURE__ */ (() =>\n new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44)();\n\n/** The byte swap operation for uint32 */\nexport function byteSwap(word: number): number {\n return (\n ((word << 24) & 0xff000000) |\n ((word << 8) & 0xff0000) |\n ((word >>> 8) & 0xff00) |\n ((word >>> 24) & 0xff)\n );\n}\n/** Conditionally byte swap if on a big-endian platform */\nexport const swap8IfBE: (n: number) => number = isLE\n ? (n: number) => n\n : (n: number) => byteSwap(n);\n\n/** @deprecated */\nexport const byteSwapIfBE: typeof swap8IfBE = swap8IfBE;\n/** In place byte swap for Uint32Array */\nexport function byteSwap32(arr: Uint32Array): Uint32Array {\n for (let i = 0; i < arr.length; i++) {\n arr[i] = byteSwap(arr[i]);\n }\n return arr;\n}\n\nexport const swap32IfBE: (u: Uint32Array) => Uint32Array = isLE\n ? (u: Uint32Array) => u\n : byteSwap32;\n\n// Built-in hex conversion https://caniuse.com/mdn-javascript_builtins_uint8array_fromhex\nconst hasHexBuiltin: boolean = /* @__PURE__ */ (() =>\n // @ts-ignore\n typeof Uint8Array.from([]).toHex === 'function' && typeof Uint8Array.fromHex === 'function')();\n\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) =>\n i.toString(16).padStart(2, '0')\n);\n\n/**\n * Convert byte array to hex string. Uses built-in function, when available.\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes: Uint8Array): string {\n abytes(bytes);\n // @ts-ignore\n if (hasHexBuiltin) return bytes.toHex();\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 } as const;\nfunction asciiToBase16(ch: number): number | undefined {\n if (ch >= asciis._0 && ch <= asciis._9) return ch - asciis._0; // '2' => 50-48\n if (ch >= asciis.A && ch <= asciis.F) return ch - (asciis.A - 10); // 'B' => 66-(65-10)\n if (ch >= asciis.a && ch <= asciis.f) return ch - (asciis.a - 10); // 'b' => 98-(97-10)\n return;\n}\n\n/**\n * Convert hex string to byte array. Uses built-in function, when available.\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex: string): Uint8Array {\n if (typeof hex !== 'string') throw new Error('hex string expected, got ' + typeof hex);\n // @ts-ignore\n if (hasHexBuiltin) return Uint8Array.fromHex(hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2) throw new Error('hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2; // multiply first octet, e.g. 'a3' => 10*16+3 => 160 + 3 => 163\n }\n return array;\n}\n\n/**\n * There is no setImmediate in browser and setTimeout is slow.\n * Call of async fn will return Promise, which will be fullfiled only on\n * next scheduler queue processing step and this is exactly what we need.\n */\nexport const nextTick = async (): Promise<void> => {};\n\n/** Returns control to thread each 'tick' ms to avoid blocking. */\nexport async function asyncLoop(\n iters: number,\n tick: number,\n cb: (i: number) => void\n): Promise<void> {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick) continue;\n await nextTick();\n ts += diff;\n }\n}\n\n// Global symbols, but ts doesn't see them: https://github.com/microsoft/TypeScript/issues/31535\ndeclare const TextEncoder: any;\ndeclare const TextDecoder: any;\n\n/**\n * Converts string to bytes using UTF8 encoding.\n * @example utf8ToBytes('abc') // Uint8Array.from([97, 98, 99])\n */\nexport function utf8ToBytes(str: string): Uint8Array {\n if (typeof str !== 'string') throw new Error('string expected');\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n\n/**\n * Converts bytes to string using UTF8 encoding.\n * @example bytesToUtf8(Uint8Array.from([97, 98, 99])) // 'abc'\n */\nexport function bytesToUtf8(bytes: Uint8Array): string {\n return new TextDecoder().decode(bytes);\n}\n\n/** Accepted input of hash functions. Strings are converted to byte arrays. */\nexport type Input = string | Uint8Array;\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data: Input): Uint8Array {\n if (typeof data === 'string') data = utf8ToBytes(data);\n abytes(data);\n return data;\n}\n\n/** KDFs can accept string or Uint8Array for user convenience. */\nexport type KDFInput = string | Uint8Array;\n/**\n * Helper for KDFs: consumes uint8array or string.\n * When string is passed, does utf8 decoding, using TextDecoder.\n */\nexport function kdfInputToBytes(data: KDFInput): Uint8Array {\n if (typeof data === 'string') data = utf8ToBytes(data);\n abytes(data);\n return data;\n}\n\n/** Copies several Uint8Arrays into one. */\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n abytes(a);\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\n\ntype EmptyObj = {};\nexport function checkOpts<T1 extends EmptyObj, T2 extends EmptyObj>(\n defaults: T1,\n opts?: T2\n): T1 & T2 {\n if (opts !== undefined && {}.toString.call(opts) !== '[object Object]')\n throw new Error('options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged as T1 & T2;\n}\n\n/** Hash interface. */\nexport type IHash = {\n (data: Uint8Array): Uint8Array;\n blockLen: number;\n outputLen: number;\n create: any;\n};\n\n/** For runtime check if class implements interface */\nexport abstract class Hash<T extends Hash<T>> {\n abstract blockLen: number; // Bytes per block\n abstract outputLen: number; // Bytes in output\n abstract update(buf: Input): this;\n // Writes digest into buf\n abstract digestInto(buf: Uint8Array): void;\n abstract digest(): Uint8Array;\n /**\n * Resets internal state. Makes Hash instance unusable.\n * Reset is impossible for keyed hashes if key is consumed into state. If digest is not consumed\n * by user, they will need to manually call `destroy()` when zeroing is necessary.\n */\n abstract destroy(): void;\n /**\n * Clones hash instance. Unsafe: doesn't check whether `to` is valid. Can be used as `clone()`\n * when no options are passed.\n * Reasons to use `_cloneInto` instead of clone: 1) performance 2) reuse instance => all internal\n * buffers are overwritten => causes buffer overwrite which is used for digest in some cases.\n * There are no guarantees for clean-up because it's impossible in JS.\n */\n abstract _cloneInto(to?: T): T;\n // Safe version that clones internal state\n abstract clone(): T;\n}\n\n/**\n * XOF: streaming API to read digest in chunks.\n * Same as 'squeeze' in keccak/k12 and 'seek' in blake3, but more generic name.\n * When hash used in XOF mode it is up to user to call '.destroy' afterwards, since we cannot\n * destroy state, next call can require more bytes.\n */\nexport type HashXOF<T extends Hash<T>> = Hash<T> & {\n xof(bytes: number): Uint8Array; // Read 'bytes' bytes from digest stream\n xofInto(buf: Uint8Array): Uint8Array; // read buf.length bytes from digest stream into buf\n};\n\n/** Hash function */\nexport type CHash = ReturnType<typeof createHasher>;\n/** Hash function with output */\nexport type CHashO = ReturnType<typeof createOptHasher>;\n/** XOF with output */\nexport type CHashXO = ReturnType<typeof createXOFer>;\n\n/** Wraps hash function, creating an interface on top of it */\nexport function createHasher<T extends Hash<T>>(\n hashCons: () => Hash<T>\n): {\n (msg: Input): Uint8Array;\n outputLen: number;\n blockLen: number;\n create(): Hash<T>;\n} {\n const hashC = (msg: Input): Uint8Array => hashCons().update(toBytes(msg)).digest();\n const tmp = hashCons();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashCons();\n return hashC;\n}\n\nexport function createOptHasher<H extends Hash<H>, T extends Object>(\n hashCons: (opts?: T) => Hash<H>\n): {\n (msg: Input, opts?: T): Uint8Array;\n outputLen: number;\n blockLen: number;\n create(opts?: T): Hash<H>;\n} {\n const hashC = (msg: Input, opts?: T): Uint8Array => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({} as T);\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts?: T) => hashCons(opts);\n return hashC;\n}\n\nexport function createXOFer<H extends HashXOF<H>, T extends Object>(\n hashCons: (opts?: T) => HashXOF<H>\n): {\n (msg: Input, opts?: T): Uint8Array;\n outputLen: number;\n blockLen: number;\n create(opts?: T): HashXOF<H>;\n} {\n const hashC = (msg: Input, opts?: T): Uint8Array => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({} as T);\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts?: T) => hashCons(opts);\n return hashC;\n}\nexport const wrapConstructor: typeof createHasher = createHasher;\nexport const wrapConstructorWithOpts: typeof createOptHasher = createOptHasher;\nexport const wrapXOFConstructorWithOpts: typeof createXOFer = createXOFer;\n\n/** Cryptographically secure PRNG. Uses internal OS-level `crypto.getRandomValues`. */\nexport function randomBytes(bytesLength = 32): Uint8Array {\n if (crypto && typeof crypto.getRandomValues === 'function') {\n return crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n // Legacy Node.js compatibility\n if (crypto && typeof crypto.randomBytes === 'function') {\n return Uint8Array.from(crypto.randomBytes(bytesLength));\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\n","/**\n * SHA3 (keccak) hash function, based on a new \"Sponge function\" design.\n * Different from older hashes, the internal state is bigger than output size.\n *\n * Check out [FIPS-202](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf),\n * [Website](https://keccak.team/keccak.html),\n * [the differences between SHA-3 and Keccak](https://crypto.stackexchange.com/questions/15727/what-are-the-key-differences-between-the-draft-sha-3-standard-and-the-keccak-sub).\n *\n * Check out `sha3-addons` module for cSHAKE, k12, and others.\n * @module\n */\nimport { rotlBH, rotlBL, rotlSH, rotlSL, split } from './_u64.ts';\n// prettier-ignore\nimport {\n abytes, aexists, anumber, aoutput,\n clean, createHasher, createXOFer, Hash,\n swap32IfBE,\n toBytes, u32,\n type CHash, type CHashXO, type HashXOF, type Input\n} from './utils.ts';\n\n// No __PURE__ annotations in sha3 header:\n// EVERYTHING is in fact used on every export.\n// Various per round constants calculations\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst _7n = BigInt(7);\nconst _256n = BigInt(256);\nconst _0x71n = BigInt(0x71);\nconst SHA3_PI: number[] = [];\nconst SHA3_ROTL: number[] = [];\nconst _SHA3_IOTA: bigint[] = [];\nfor (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {\n // Pi\n [x, y] = [y, (2 * x + 3 * y) % 5];\n SHA3_PI.push(2 * (5 * y + x));\n // Rotational\n SHA3_ROTL.push((((round + 1) * (round + 2)) / 2) % 64);\n // Iota\n let t = _0n;\n for (let j = 0; j < 7; j++) {\n R = ((R << _1n) ^ ((R >> _7n) * _0x71n)) % _256n;\n if (R & _2n) t ^= _1n << ((_1n << /* @__PURE__ */ BigInt(j)) - _1n);\n }\n _SHA3_IOTA.push(t);\n}\nconst IOTAS = split(_SHA3_IOTA, true);\nconst SHA3_IOTA_H = IOTAS[0];\nconst SHA3_IOTA_L = IOTAS[1];\n\n// Left rotation (without 0, 32, 64)\nconst rotlH = (h: number, l: number, s: number) => (s > 32 ? rotlBH(h, l, s) : rotlSH(h, l, s));\nconst rotlL = (h: number, l: number, s: number) => (s > 32 ? rotlBL(h, l, s) : rotlSL(h, l, s));\n\n/** `keccakf1600` internal function, additionally allows to adjust round count. */\nexport function keccakP(s: Uint32Array, rounds: number = 24): void {\n const B = new Uint32Array(5 * 2);\n // NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js)\n for (let round = 24 - rounds; round < 24; round++) {\n // Theta θ\n for (let x = 0; x < 10; x++) B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40];\n for (let x = 0; x < 10; x += 2) {\n const idx1 = (x + 8) % 10;\n const idx0 = (x + 2) % 10;\n const B0 = B[idx0];\n const B1 = B[idx0 + 1];\n const Th = rotlH(B0, B1, 1) ^ B[idx1];\n const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1];\n for (let y = 0; y < 50; y += 10) {\n s[x + y] ^= Th;\n s[x + y + 1] ^= Tl;\n }\n }\n // Rho (ρ) and Pi (π)\n let curH = s[2];\n let curL = s[3];\n for (let t = 0; t < 24; t++) {\n const shift = SHA3_ROTL[t];\n const Th = rotlH(curH, curL, shift);\n const Tl = rotlL(curH, curL, shift);\n const PI = SHA3_PI[t];\n curH = s[PI];\n curL = s[PI + 1];\n s[PI] = Th;\n s[PI + 1] = Tl;\n }\n // Chi (χ)\n for (let y = 0; y < 50; y += 10) {\n for (let x = 0; x < 10; x++) B[x] = s[y + x];\n for (let x = 0; x < 10; x++) s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10];\n }\n // Iota (ι)\n s[0] ^= SHA3_IOTA_H[round];\n s[1] ^= SHA3_IOTA_L[round];\n }\n clean(B);\n}\n\n/** Keccak sponge function. */\nexport class Keccak extends Hash<Keccak> implements HashXOF<Keccak> {\n protected state: Uint8Array;\n protected pos = 0;\n protected posOut = 0;\n protected finished = false;\n protected state32: Uint32Array;\n protected destroyed = false;\n\n public blockLen: number;\n public suffix: number;\n public outputLen: number;\n protected enableXOF = false;\n protected rounds: number;\n\n // NOTE: we accept arguments in bytes instead of bits here.\n constructor(\n blockLen: number,\n suffix: number,\n outputLen: number,\n enableXOF = false,\n rounds: number = 24\n ) {\n super();\n this.blockLen = blockLen;\n this.suffix = suffix;\n this.outputLen = outputLen;\n this.enableXOF = enableXOF;\n this.rounds = rounds;\n // Can be passed from user as dkLen\n anumber(outputLen);\n // 1600 = 5x5 matrix of 64bit. 1600 bits === 200 bytes\n // 0 < blockLen < 200\n if (!(0 < blockLen && blockLen < 200))\n throw new Error('only keccak-f1600 function is supported');\n this.state = new Uint8Array(200);\n this.state32 = u32(this.state);\n }\n clone(): Keccak {\n return this._cloneInto();\n }\n protected keccak(): void {\n swap32IfBE(this.state32);\n keccakP(this.state32, this.rounds);\n swap32IfBE(this.state32);\n this.posOut = 0;\n this.pos = 0;\n }\n update(data: Input): this {\n aexists(this);\n data = toBytes(data);\n abytes(data);\n const { blockLen, state } = this;\n const len = data.length;\n for (let pos = 0; pos < len; ) {\n const take = Math.min(blockLen - this.pos, len - pos);\n for (let i = 0; i < take; i++) state[this.pos++] ^= data[pos++];\n if (this.pos === blockLen) this.keccak();\n }\n return this;\n }\n protected finish(): void {\n if (this.finished) return;\n this.finished = true;\n const { state, suffix, pos, blockLen } = this;\n // Do the padding\n state[pos] ^= suffix;\n if ((suffix & 0x80) !== 0 && pos === blockLen - 1) this.keccak();\n state[blockLen - 1] ^= 0x80;\n this.keccak();\n }\n protected writeInto(out: Uint8Array): Uint8Array {\n aexists(this, false);\n abytes(out);\n this.finish();\n const bufferOut = this.state;\n const { blockLen } = this;\n for (let pos = 0, len = out.length; pos < len; ) {\n if (this.posOut >= blockLen) this.keccak();\n const take = Math.min(blockLen - this.posOut, len - pos);\n out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);\n this.posOut += take;\n pos += take;\n }\n return out;\n }\n xofInto(out: Uint8Array): Uint8Array {\n // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF\n if (!this.enableXOF) throw new Error('XOF is not possible for this instance');\n return this.writeInto(out);\n }\n xof(bytes: number): Uint8Array {\n anumber(bytes);\n return this.xofInto(new Uint8Array(bytes));\n }\n digestInto(out: Uint8Array): Uint8Array {\n aoutput(out, this);\n if (this.finished) throw new Error('digest() was already called');\n this.writeInto(out);\n this.destroy();\n return out;\n }\n digest(): Uint8Array {\n return this.digestInto(new Uint8Array(this.outputLen));\n }\n destroy(): void {\n this.destroyed = true;\n clean(this.state);\n }\n _cloneInto(to?: Keccak): Keccak {\n const { blockLen, suffix, outputLen, rounds, enableXOF } = this;\n to ||= new Keccak(blockLen, suffix, outputLen, enableXOF, rounds);\n to.state32.set(this.state32);\n to.pos = this.pos;\n to.posOut = this.posOut;\n to.finished = this.finished;\n to.rounds = rounds;\n // Suffix can change in cSHAKE\n to.suffix = suffix;\n to.outputLen = outputLen;\n to.enableXOF = enableXOF;\n to.destroyed = this.destroyed;\n return to;\n }\n}\n\nconst gen = (suffix: number, blockLen: number, outputLen: number) =>\n createHasher(() => new Keccak(blockLen, suffix, outputLen));\n\n/** SHA3-224 hash function. */\nexport const sha3_224: CHash = /* @__PURE__ */ (() => gen(0x06, 144, 224 / 8))();\n/** SHA3-256 hash function. Different from keccak-256. */\nexport const sha3_256: CHash = /* @__PURE__ */ (() => gen(0x06, 136, 256 / 8))();\n/** SHA3-384 hash function. */\nexport const sha3_384: CHash = /* @__PURE__ */ (() => gen(0x06, 104, 384 / 8))();\n/** SHA3-512 hash function. */\nexport const sha3_512: CHash = /* @__PURE__ */ (() => gen(0x06, 72, 512 / 8))();\n\n/** keccak-224 hash function. */\nexport const keccak_224: CHash = /* @__PURE__ */ (() => gen(0x01, 144, 224 / 8))();\n/** keccak-256 hash function. Different from SHA3-256. */\nexport const keccak_256: CHash = /* @__PURE__ */ (() => gen(0x01, 136, 256 / 8))();\n/** keccak-384 hash function. */\nexport const keccak_384: CHash = /* @__PURE__ */ (() => gen(0x01, 104, 384 / 8))();\n/** keccak-512 hash function. */\nexport const keccak_512: CHash = /* @__PURE__ */ (() => gen(0x01, 72, 512 / 8))();\n\nexport type ShakeOpts = { dkLen?: number };\n\nconst genShake = (suffix: number, blockLen: number, outputLen: number) =>\n createXOFer<HashXOF<Keccak>, ShakeOpts>(\n (opts: ShakeOpts = {}) =>\n new Keccak(blockLen, suffix, opts.dkLen === undefined ? outputLen : opts.dkLen, true)\n );\n\n/** SHAKE128 XOF with 128-bit security. */\nexport const shake128: CHashXO = /* @__PURE__ */ (() => genShake(0x1f, 168, 128 / 8))();\n/** SHAKE256 XOF with 256-bit security. */\nexport const shake256: CHashXO = /* @__PURE__ */ (() => genShake(0x1f, 136, 256 / 8))();\n","import {\n AccountState,\n ExtensionType,\n TOKEN_2022_PROGRAM_ID,\n TOKEN_PROGRAM_ID,\n getDefaultAccountState,\n getExtensionTypes,\n unpackMint,\n type Mint,\n} from '@solana/spl-token'\nimport type { Commitment, Connection } from '@solana/web3.js'\nimport { PublicKey } from '@solana/web3.js'\n\nexport const DEFAULT_BLOCKED_MINTS = [\n new PublicKey('EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'),\n new PublicKey('Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB'),\n new PublicKey('So11111111111111111111111111111111111111112'),\n] as const\n\n// Mirrors the contract allowlist in `utils/token_2022.rs`.\nconst ALLOWED_TOKEN_2022_MINT_EXTENSIONS = new Set<number>([\n ExtensionType.TransferFeeConfig,\n ExtensionType.MintCloseAuthority,\n ExtensionType.DefaultAccountState,\n ExtensionType.InterestBearingConfig,\n ExtensionType.MetadataPointer,\n ExtensionType.TokenMetadata,\n ExtensionType.GroupPointer,\n ExtensionType.TokenGroup,\n ExtensionType.GroupMemberPointer,\n ExtensionType.TokenGroupMember,\n ExtensionType.ScaledUiAmountConfig,\n])\n\nexport const MintValidationIssueCode = {\n MintAccountNotFound: 'mint-account-not-found',\n MintAccountFetchFailed: 'mint-account-fetch-failed',\n InvalidTokenProgram: 'invalid-token-program',\n MintOwnerProgramMismatch: 'mint-owner-program-mismatch',\n MintUnpackFailed: 'mint-unpack-failed',\n UnsupportedMint: 'unsupported-mint',\n MintNotInitialized: 'mint-not-initialized',\n MintSupplyZero: 'mint-supply-zero',\n MintFreezeAuthorityNotAllowed: 'mint-freeze-authority-not-allowed',\n Token2022ExtensionParseFailed: 'token-2022-extension-parse-failed',\n UnsupportedToken2022MintExtension: 'unsupported-token-2022-mint-extension',\n Token2022DefaultAccountStateNotInitialized: 'token-2022-default-account-state-not-initialized',\n} as const\n\nexport type MintValidationIssueCode =\n (typeof MintValidationIssueCode)[keyof typeof MintValidationIssueCode]\n\nexport type MintValidationIssue = {\n code: MintValidationIssueCode\n message: string\n extensionType?: ExtensionType\n extensionName?: string\n}\n\nexport type MintValidationStatus = 'valid' | 'invalid'\n\nexport type MintValidationMintState = {\n address: PublicKey\n supply: bigint\n freezeAuthority: PublicKey | null\n isInitialized?: boolean\n tlvData?: Buffer | Uint8Array\n}\n\nexport type MintValidationByAddressInput = {\n connection: Connection\n mintAddress: PublicKey\n tokenProgramId?: PublicKey\n commitment?: Commitment\n blockedMints?: readonly PublicKey[]\n}\n\nexport type MintValidationByStateInput = {\n mintState: MintValidationMintState\n tokenProgramId: PublicKey\n mintOwnerProgramId?: PublicKey\n blockedMints?: readonly PublicKey[]\n}\n\nexport type ValidateMintForAirdropInput = MintValidationByAddressInput | MintValidationByStateInput\n\nexport type MintValidationResult = {\n status: MintValidationStatus\n isValid: boolean\n mintAddress: PublicKey | null\n tokenProgramId: PublicKey | null\n mintOwnerProgramId: PublicKey | null\n extensionTypes: ExtensionType[]\n issues: MintValidationIssue[]\n}\n\nconst isSupportedTokenProgram = (programId: PublicKey) =>\n programId.equals(TOKEN_PROGRAM_ID) || programId.equals(TOKEN_2022_PROGRAM_ID)\n\nconst extensionNameOf = (extensionType: ExtensionType) =>\n ExtensionType[extensionType] ?? `Unknown(${extensionType})`\n\nconst pushIssue = (issues: MintValidationIssue[], issue: MintValidationIssue) => {\n issues.push(issue)\n}\n\nconst validateMintStateCommon = ({\n mintState,\n tokenProgramId,\n blockedMints,\n issues,\n}: {\n mintState: MintValidationMintState\n tokenProgramId: PublicKey | null\n blockedMints: readonly PublicKey[]\n issues: MintValidationIssue[]\n}): ExtensionType[] => {\n const extensionTypes: ExtensionType[] = []\n\n if (blockedMints.some((blockedMint) => blockedMint.equals(mintState.address))) {\n pushIssue(issues, {\n code: MintValidationIssueCode.UnsupportedMint,\n message: 'Mint is blocked by airdrop policy.',\n })\n }\n\n if (mintState.isInitialized === false) {\n pushIssue(issues, {\n code: MintValidationIssueCode.MintNotInitialized,\n message: 'Mint account is not initialized.',\n })\n }\n\n if (mintState.supply <= 0n) {\n pushIssue(issues, {\n code: MintValidationIssueCode.MintSupplyZero,\n message: 'Mint supply must be greater than zero.',\n })\n }\n\n if (mintState.freezeAuthority) {\n pushIssue(issues, {\n code: MintValidationIssueCode.MintFreezeAuthorityNotAllowed,\n message: 'Mint freeze authority must be unset.',\n })\n }\n\n if (!tokenProgramId || !tokenProgramId.equals(TOKEN_2022_PROGRAM_ID)) {\n return extensionTypes\n }\n\n const tlvData = Buffer.from(mintState.tlvData ?? Buffer.alloc(0))\n try {\n extensionTypes.push(...getExtensionTypes(tlvData))\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n pushIssue(issues, {\n code: MintValidationIssueCode.Token2022ExtensionParseFailed,\n message: `Failed to parse Token-2022 extensions: ${message}`,\n })\n return extensionTypes\n }\n\n for (const extensionType of extensionTypes) {\n if (ALLOWED_TOKEN_2022_MINT_EXTENSIONS.has(extensionType)) {\n continue\n }\n\n pushIssue(issues, {\n code: MintValidationIssueCode.UnsupportedToken2022MintExtension,\n message: `Unsupported Token-2022 mint extension: ${extensionNameOf(extensionType)}.`,\n extensionType,\n extensionName: extensionNameOf(extensionType),\n })\n }\n\n const mintForExtensionChecks: Mint = {\n address: mintState.address,\n mintAuthority: null,\n supply: mintState.supply,\n decimals: 0,\n isInitialized: mintState.isInitialized ?? true,\n freezeAuthority: mintState.freezeAuthority,\n tlvData,\n }\n const defaultAccountState = getDefaultAccountState(mintForExtensionChecks)\n if (defaultAccountState && defaultAccountState.state !== AccountState.Initialized) {\n pushIssue(issues, {\n code: MintValidationIssueCode.Token2022DefaultAccountStateNotInitialized,\n message: 'Token-2022 default account state must be Initialized.',\n })\n }\n\n return extensionTypes\n}\n\nexport const validateMintForAirdrop = async (\n input: ValidateMintForAirdropInput,\n): Promise<MintValidationResult> => {\n const issues: MintValidationIssue[] = []\n const blockedMints = input.blockedMints ?? DEFAULT_BLOCKED_MINTS\n\n let mintAddress: PublicKey | null\n let tokenProgramId: PublicKey | null\n let mintOwnerProgramId: PublicKey | null = null\n let mintState: MintValidationMintState | null = null\n\n if ('mintAddress' in input) {\n mintAddress = input.mintAddress\n\n let accountInfo: Awaited<ReturnType<Connection['getAccountInfo']>>\n try {\n accountInfo = await input.connection.getAccountInfo(input.mintAddress, input.commitment)\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n pushIssue(issues, {\n code: MintValidationIssueCode.MintAccountFetchFailed,\n message: `Failed to fetch mint account: ${message}`,\n })\n\n tokenProgramId = input.tokenProgramId ?? null\n if (tokenProgramId && !isSupportedTokenProgram(tokenProgramId)) {\n pushIssue(issues, {\n code: MintValidationIssueCode.InvalidTokenProgram,\n message: 'Token program must be SPL Token or Token-2022.',\n })\n }\n\n return {\n status: 'invalid',\n isValid: false,\n mintAddress,\n tokenProgramId,\n mintOwnerProgramId,\n extensionTypes: [],\n issues,\n }\n }\n\n if (!accountInfo) {\n tokenProgramId = input.tokenProgramId ?? null\n pushIssue(issues, {\n code: MintValidationIssueCode.MintAccountNotFound,\n message: 'Mint account was not found.',\n })\n if (tokenProgramId && !isSupportedTokenProgram(tokenProgramId)) {\n pushIssue(issues, {\n code: MintValidationIssueCode.InvalidTokenProgram,\n message: 'Token program must be SPL Token or Token-2022.',\n })\n }\n\n return {\n status: 'invalid',\n isValid: false,\n mintAddress,\n tokenProgramId,\n mintOwnerProgramId,\n extensionTypes: [],\n issues,\n }\n }\n\n mintOwnerProgramId = accountInfo.owner\n tokenProgramId = input.tokenProgramId ?? mintOwnerProgramId\n if (!isSupportedTokenProgram(tokenProgramId)) {\n pushIssue(issues, {\n code: MintValidationIssueCode.InvalidTokenProgram,\n message: 'Token program must be SPL Token or Token-2022.',\n })\n }\n if (!mintOwnerProgramId.equals(tokenProgramId)) {\n pushIssue(issues, {\n code: MintValidationIssueCode.MintOwnerProgramMismatch,\n message: 'Mint owner program does not match selected token program.',\n })\n }\n\n const unpackProgramId = isSupportedTokenProgram(mintOwnerProgramId)\n ? mintOwnerProgramId\n : tokenProgramId\n if (isSupportedTokenProgram(unpackProgramId)) {\n try {\n const unpacked = unpackMint(input.mintAddress, accountInfo, unpackProgramId)\n mintState = {\n address: unpacked.address,\n supply: unpacked.supply,\n freezeAuthority: unpacked.freezeAuthority,\n isInitialized: unpacked.isInitialized,\n tlvData: unpacked.tlvData,\n }\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n pushIssue(issues, {\n code: MintValidationIssueCode.MintUnpackFailed,\n message: `Failed to decode mint account: ${message}`,\n })\n }\n }\n } else {\n mintState = input.mintState\n mintAddress = input.mintState.address\n tokenProgramId = input.tokenProgramId\n mintOwnerProgramId = input.mintOwnerProgramId ?? null\n\n if (!isSupportedTokenProgram(tokenProgramId)) {\n pushIssue(issues, {\n code: MintValidationIssueCode.InvalidTokenProgram,\n message: 'Token program must be SPL Token or Token-2022.',\n })\n }\n if (mintOwnerProgramId && !mintOwnerProgramId.equals(tokenProgramId)) {\n pushIssue(issues, {\n code: MintValidationIssueCode.MintOwnerProgramMismatch,\n message: 'Mint owner program does not match selected token program.',\n })\n }\n }\n\n const extensionTypes = mintState\n ? validateMintStateCommon({\n mintState,\n tokenProgramId,\n blockedMints,\n issues,\n })\n : []\n\n const isValid = issues.length === 0\n return {\n status: isValid ? 'valid' : 'invalid',\n isValid,\n mintAddress,\n tokenProgramId,\n mintOwnerProgramId,\n extensionTypes,\n issues,\n }\n}\n"],"mappings":";;;;;AAAA,SAAS,eAAe;AAGxB;AAAA,EAGE;AAAA,EACA;AAAA,OACK;;;ACRP,SAAS,UAAU;AACnB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,aAAAA,kBAAiB;;;ACN1B,SAAS,iBAAiB;AAEnB,IAAM,4BAA4B,IAAI;AAAA,EAC3C;AACF;AAIO,IAAM,wBAAiE;AAAA,EAC5E,QAAQ,IAAI,UAAU,8CAA8C;AAAA,EACpE,gBAAgB,IAAI,UAAU,8CAA8C;AAAA,EAC5E,SAAS,IAAI,UAAU,8CAA8C;AACvE;AAIO,IAAK,oBAAL,kBAAKC,uBAAL;AACL,EAAAA,mBAAA,kBAAe;AACf,EAAAA,mBAAA,mBAAgB;AAChB,EAAAA,mBAAA,aAAU;AACV,EAAAA,mBAAA,gBAAa;AACb,EAAAA,mBAAA,cAAW;AACX,EAAAA,mBAAA,eAAY;AACZ,EAAAA,mBAAA,iBAAc;AACd,EAAAA,mBAAA,oBAAiB;AACjB,EAAAA,mBAAA,oBAAiB;AATP,SAAAA;AAAA,GAAA;;;ADNZ,IAAM,YAAY,CAAC,UAAuB,IAAI,GAAG,KAAK,EAAE,YAAY,QAAQ,MAAM,CAAC;AAEnF,IAAM,WAAW,CAAC,UAAuB,IAAI,GAAG,KAAK,EAAE,YAAY,QAAQ,MAAM,CAAC;AAElF,IAAM,gBAAgB,CAAC,OAAmB,WAAmB;AAC3D,MAAI,MAAM,WAAW,QAAQ;AAC3B,UAAM,IAAI,MAAM,YAAY,MAAM,eAAe,MAAM,MAAM,GAAG;AAAA,EAClE;AAEA,SAAO,OAAO,KAAK,KAAK;AAC1B;AAEO,SAAS,WAAW,YAAuB,2BAA2B;AAC3E,SAAO;AAAA,IACL,gBAAgB,CAAC,WACfC,WAAU;AAAA,MACR,CAAC,OAAO,uCAAqC,GAAG,SAAS,MAAM,CAAC;AAAA,MAChE;AAAA,IACF,EAAE,CAAC;AAAA,IACL,cAAc,MACZA,WAAU,uBAAuB,CAAC,OAAO,+CAAmC,CAAC,GAAG,SAAS,EAAE,CAAC;AAAA,IAC9F,eAAe,CAAC,YACdA,WAAU;AAAA,MACR,CAAC,OAAO,oCAAoC,GAAG,QAAQ,SAAS,CAAC;AAAA,MACjE;AAAA,IACF,EAAE,CAAC;AAAA,IACL,SAAS,CAAC,SAAoB,eAC5BA,WAAU;AAAA,MACR,CAAC,OAAO,4BAA8B,GAAG,QAAQ,SAAS,GAAG,UAAU,UAAU,CAAC;AAAA,MAClF;AAAA,IACF,EAAE,CAAC;AAAA,IACL,YAAY,CAAC,SAAoB,eAC/BA,WAAU;AAAA,MACR,CAAC,OAAO,iCAAiC,GAAG,QAAQ,SAAS,GAAG,UAAU,UAAU,CAAC;AAAA,MACrF;AAAA,IACF,EAAE,CAAC;AAAA,IACL,UAAU,CAAC,YACTA,WAAU;AAAA,MACR,CAAC,OAAO,+BAA+B,GAAG,QAAQ,SAAS,CAAC;AAAA,MAC5D;AAAA,IACF,EAAE,CAAC;AAAA,IACL,WAAW,CAAC,YACVA,WAAU;AAAA,MACR,CAAC,OAAO,iCAAgC,GAAG,QAAQ,SAAS,CAAC;AAAA,MAC7D;AAAA,IACF,EAAE,CAAC;AAAA,IACL,qBAAqB,CAAC,SAAoB,SACxCA,WAAU;AAAA,MACR,CAAC,OAAO,qCAAkC,GAAG,QAAQ,SAAS,GAAG,cAAc,MAAM,EAAE,CAAC;AAAA,MACxF;AAAA,IACF,EAAE,CAAC;AAAA,IACL,sBAAsB,CAAC,SAAoB,eACzCA,WAAU;AAAA,MACR,CAAC,OAAO,qCAAkC,GAAG,QAAQ,SAAS,GAAG,UAAU,UAAU,CAAC;AAAA,MACtF;AAAA,IACF,EAAE,CAAC;AAAA,IACL,gBAAgB,MACdA,WAAU;AAAA,MACR,CAAC,OAAO,6CAAqC,CAAC;AAAA,MAC9C;AAAA,IACF,EAAE,CAAC;AAAA,IACL,UAAU,CACR,SACA,MACA,iBAA4B,kBAC5B,2BAAsC,gCAEtC,8BAA8B,MAAM,SAAS,MAAM,gBAAgB,wBAAwB;AAAA,EAC/F;AACF;;;AE/EA,SAAS,MAAAC,WAAU;AACnB,SAAS,aAAAC,kBAAiB;AAEnB,IAAM,eAAe;AACrB,IAAM,gBAAgB;AACtB,IAAM,iBAAiB;AACvB,IAAM,iBAAiB,iBAAiB;AAaxC,IAAM,oBAAoB,CAAC,YAAoB,cAAsB;AAC1E,MAAI,aAAa,GAAG;AAClB,UAAM,IAAI,MAAM,uCAAuC;AAAA,EACzD;AAEA,SAAO,KAAK,MAAM,aAAa,SAAS;AAC1C;AAEO,IAAM,qBAAqB,CAAC,YAAoB,cAAsB;AAC3E,MAAI,aAAa,GAAG;AAClB,UAAM,IAAI,MAAM,uCAAuC;AAAA,EACzD;AAEA,SAAO,aAAa;AACtB;AAEO,IAAM,uBAAuB,CAAC,YAAoB,eAA0C;AAAA,EACjG,YAAY,kBAAkB,YAAY,SAAS;AAAA,EACnD,QAAQ,mBAAmB,YAAY,SAAS;AAClD;AAEO,IAAM,oBAAoB,CAAC,YAAoB,QAAgB,cAAsB;AAC1F,MAAI,aAAa,GAAG;AAClB,UAAM,IAAI,MAAM,uCAAuC;AAAA,EACzD;AAEA,SAAO,aAAa,YAAY;AAClC;AAEO,IAAM,oBAAoB,CAAC,YAAoB,cAAsB;AAC1E,MAAI,aAAa,GAAG;AAClB,UAAM,IAAI,MAAM,uCAAuC;AAAA,EACzD;AAEA,QAAM,QAAQ,aAAa;AAC3B,SAAO;AAAA,IACL;AAAA,IACA,cAAc,QAAQ;AAAA,EACxB;AACF;AAEO,IAAM,oBAAoB,CAAC,eAAuB;AACvD,MAAI,aAAa,GAAG;AAClB,UAAM,IAAI,MAAM,mCAAmC;AAAA,EACrD;AACA,QAAM,QAAQ,aAAa;AAC3B,SAAO;AAAA,IACL;AAAA,IACA,cAAc,QAAQ;AAAA,EACxB;AACF;AAEO,IAAM,iBAAiB,CAAC,MAAkB,SAAS,MAAwB;AAChF,MAAI,SAAS,KAAK,SAAS,gBAAgB,KAAK,QAAQ;AACtD,UAAM,IAAI,MAAM,kCAAkC;AAAA,EACpD;AAEA,QAAM,SAAS,IAAIA,WAAU,KAAK,MAAM,QAAQ,SAAS,EAAE,CAAC;AAC5D,QAAM,SAAS,IAAID,IAAG,KAAK,MAAM,SAAS,IAAI,SAAS,EAAE,GAAG,IAAI;AAChE,QAAM,UAAU,KAAK,SAAS,EAAE,MAAM;AAEtC,SAAO,EAAE,QAAQ,QAAQ,QAAQ;AACnC;AAEO,IAAM,wBAAwB,CAAC,MAAkB,eAAyC;AAC/F,QAAM,EAAE,MAAM,IAAI,kBAAkB,UAAU;AAC9C,SAAO,eAAe,MAAM,KAAK;AACnC;AAEO,IAAM,iBAAiB,CAAC,MAAkB,eAA4C;AAC3F,MAAI,KAAK,SAAS,kBAAkB,GAAG;AACrC,UAAM,IAAI,MAAM,qDAAqD;AAAA,EACvE;AAEA,QAAM,aAAa,KAAK,SAAS;AACjC,QAAM,QAAQ,OAAO,eAAe,WAAW,KAAK,IAAI,YAAY,UAAU,IAAI;AAElF,QAAM,UAA8B,CAAC;AACrC,WAAS,IAAI,GAAG,IAAI,OAAO,KAAK,GAAG;AACjC,YAAQ,KAAK,sBAAsB,MAAM,CAAC,CAAC;AAAA,EAC7C;AACA,SAAO;AACT;;;ACrGA,SAAS,4BAAoD;AAOtD,IAAM,gCAAgC,CAC3C,WAC6B;AAC7B,MAAI,CAAC,QAAQ;AACX,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,eAAyC,CAAC;AAEhD,MAAI,OAAO,OAAO,qBAAqB,UAAU;AAC/C,iBAAa;AAAA,MACX,qBAAqB,oBAAoB;AAAA,QACvC,OAAO,OAAO;AAAA,MAChB,CAAC;AAAA,IACH;AAAA,EACF;AAEA,MAAI,OAAO,OAAO,kBAAkB,UAAU;AAC5C,iBAAa;AAAA,MACX,qBAAqB,oBAAoB;AAAA,QACvC,eAAe,OAAO;AAAA,MACxB,CAAC;AAAA,IACH;AAAA,EACF;AAEA,SAAO;AACT;AAEO,IAAM,kBAAkB,CAC7B,aACA,WAC6B;AAC7B,QAAM,uBAAuB,8BAA8B,MAAM;AACjE,QAAM,OAAO,MAAM,QAAQ,WAAW,IAAI,cAAc,CAAC,WAAW;AAEpE,SAAO,CAAC,GAAG,sBAAsB,GAAG,IAAI;AAC1C;;;ACxBO,IAAM,qBAAqB;AAAA,EAChC,sBAAsB;AAAA,EACtB,qBAAqB;AAAA,EACrB,oBAAoB;AAAA,EACpB,sBAAsB;AAAA,EACtB,oBAAoB;AAAA,EACpB,yBAAyB;AAAA,EACzB,uBAAuB;AAAA,EACvB,qBAAqB;AACvB;AAEO,IAAM,qBAAqB,CAAC,YAAqC,SAAS;;;ACZ1E,IAAM,qCAAqC,OAChD,EAAE,QAAQ,UAAU,QAAQ,GAC5B,QACG;AACH,QAAM,cAAc,mBAAmB,OAAO;AAC9C,MAAI,CAAC,IAAI,oBAAoB;AAC3B,UAAM,IAAI,MAAM,oDAAoD;AAAA,EACtE;AACA,QAAM,gBAAgB,MAAM,IAAI,mBAAmB;AAEnD,QAAM,cAAc,MAAM,IAAI,QAAQ,QACnC,wBAAwB,MAAM,EAC9B,SAAS;AAAA,IACR,SAAS,SAAS;AAAA,IAClB,gBAAgB,IAAI,KAAK,eAAe,mBAAmB,uBAAuB;AAAA,IAClF,SAAS,SAAS;AAAA,IAClB;AAAA,IACA,SAAS,IAAI,QAAQ;AAAA,EACvB,CAAC,EACA,YAAY;AAEf,SAAO,gBAAgB,aAAa,WAAW;AACjD;;;ACxCA,SAAS,iCAAAE,sCAAqC;AAoBvC,IAAM,iCAAiC,OAC5C,EAAE,UAAU,QAAQ,GACpB,QACG;AACH,QAAM,cAAc,mBAAmB,OAAO;AAC9C,QAAM,QAAQ,IAAI,KAAK,SAAS,SAAS,SAAS,SAAS,MAAM,SAAS,YAAY;AACtF,QAAM,sBAAsBC;AAAA,IAC1B,SAAS;AAAA,IACT,SAAS;AAAA,IACT;AAAA,IACA,SAAS;AAAA,EACX;AAEA,QAAM,cAAc,MAAM,IAAI,QAAQ,QACnC,oBAAoB,EACpB,SAAS;AAAA,IACR,SAAS,SAAS;AAAA,IAClB,SAAS,SAAS;AAAA,IAClB,MAAM,SAAS;AAAA,IACf;AAAA,IACA;AAAA,IACA,cAAc,SAAS;AAAA,IACvB,SAAS,IAAI,QAAQ;AAAA,EACvB,CAAC,EACA,YAAY;AAEf,SAAO,gBAAgB,aAAa,WAAW;AACjD;;;AC/CA,SAAS,iCAAAC,sCAAqC;AAoBvC,IAAM,kCAAkC,OAC7C,EAAE,UAAU,QAAQ,GACpB,QACG;AACH,QAAM,cAAc,mBAAmB,OAAO;AAC9C,QAAM,QAAQ,IAAI,KAAK,SAAS,SAAS,SAAS,SAAS,MAAM,SAAS,YAAY;AACtF,QAAM,sBAAsBC;AAAA,IAC1B,SAAS;AAAA,IACT,SAAS;AAAA,IACT;AAAA,IACA,SAAS;AAAA,EACX;AAEA,QAAM,cAAc,MAAM,IAAI,QAAQ,QACnC,qBAAqB,EACrB,SAAS;AAAA,IACR,SAAS,SAAS;AAAA,IAClB,SAAS,SAAS;AAAA,IAClB,MAAM,SAAS;AAAA,IACf;AAAA,IACA;AAAA,IACA,cAAc,SAAS;AAAA,IACvB,SAAS,IAAI,QAAQ;AAAA,EACvB,CAAC,EACA,YAAY;AAEf,SAAO,gBAAgB,aAAa,WAAW;AACjD;;;AC/CA,SAAS,iCAAAC,sCAAqC;AAsBvC,IAAM,+BAA+B,OAC1C,EAAE,QAAQ,UAAU,QAAQ,GAC5B,QACG;AACH,QAAM,cAAc,mBAAmB,OAAO;AAC9C,MAAI,CAAC,IAAI,oBAAoB;AAC3B,UAAM,IAAI,MAAM,oDAAoD;AAAA,EACtE;AACA,QAAM,gBAAgB,MAAM,IAAI,mBAAmB;AACnD,QAAM,QAAQ,IAAI,KAAK,SAAS,SAAS,SAAS,SAAS,MAAM,SAAS,YAAY;AACtF,QAAM,eAAe,IAAI,KAAK,aAAa;AAC3C,QAAM,cAAc,IAAI,KAAK,oBAAoB,SAAS,SAAS,OAAO,IAAI;AAC9E,QAAM,aAAaC;AAAA,IACjB,SAAS;AAAA,IACT,SAAS;AAAA,IACT;AAAA,IACA,SAAS;AAAA,EACX;AAEA,QAAM,cAAc,MAAM,IAAI,QAAQ,QACnC,kBAAkB,MAAM,EACxB,gBAAgB;AAAA,IACf,SAAS,SAAS;AAAA,IAClB,SAAS,SAAS;AAAA,IAClB;AAAA,IACA;AAAA,IACA;AAAA,IACA,MAAM,SAAS;AAAA,IACf;AAAA,IACA;AAAA,IACA,cAAc,SAAS;AAAA,EACzB,CAAC,EACA,YAAY;AAEf,SAAO,gBAAgB,aAAa,WAAW;AACjD;;;ACzDA,SAAS,iCAAAC,sCAAqC;AAsBvC,IAAM,gCAAgC,OAC3C,EAAE,QAAQ,UAAU,QAAQ,GAC5B,QACG;AACH,QAAM,cAAc,mBAAmB,OAAO;AAC9C,MAAI,CAAC,IAAI,oBAAoB;AAC3B,UAAM,IAAI,MAAM,oDAAoD;AAAA,EACtE;AACA,QAAM,gBAAgB,MAAM,IAAI,mBAAmB;AACnD,QAAM,QAAQ,IAAI,KAAK,SAAS,SAAS,SAAS,SAAS,MAAM,SAAS,YAAY;AACtF,QAAM,WAAW,IAAI,KAAK,SAAS,SAAS,OAAO;AACnD,QAAM,YAAY,IAAI,KAAK,UAAU,SAAS,OAAO;AACrD,QAAM,eAAe,IAAI,KAAK,aAAa;AAC3C,QAAM,cAAc,IAAI,KAAK,qBAAqB,SAAS,SAAS,OAAO,UAAU;AACrF,QAAM,iBAAiB,IAAI,KAAK,eAAe;AAC/C,QAAM,aAAaC;AAAA,IACjB,SAAS;AAAA,IACT,SAAS;AAAA,IACT;AAAA,IACA,SAAS;AAAA,EACX;AAEA,QAAM,cAAc,MAAM,IAAI,QAAQ,QACnC,mBAAmB,MAAM,EACzB,gBAAgB;AAAA,IACf,SAAS,SAAS;AAAA,IAClB;AAAA,IACA;AAAA,IACA,SAAS,SAAS;AAAA,IAClB;AAAA,IACA;AAAA,IACA;AAAA,IACA,MAAM,SAAS;AAAA,IACf;AAAA,IACA;AAAA,IACA,cAAc,SAAS;AAAA,IACvB;AAAA,IACA,SAAS,IAAI,QAAQ;AAAA,EACvB,CAAC,EACA,YAAY;AAEf,SAAO,gBAAgB,aAAa,WAAW;AACjD;;;AC7CO,IAAM,iCAAiC,OAC5C,EAAE,QAAQ,UAAU,QAAQ,GAC5B,QACG;AACH,QAAM,cAAc,mBAAmB,OAAO;AAC9C,MAAI,CAAC,IAAI,oBAAoB;AAC3B,UAAM,IAAI,MAAM,oDAAoD;AAAA,EACtE;AACA,QAAM,gBAAgB,MAAM,IAAI,mBAAmB;AAEnD,QAAM,cAAc,MAAM,IAAI,QAAQ,QACnC,oBAAoB,MAAM,EAC1B,SAAS;AAAA,IACR,gBAAgB,IAAI,KAAK,eAAe,mBAAmB,mBAAmB;AAAA,IAC9E,SAAS,SAAS;AAAA,IAClB,MAAM,SAAS;AAAA,IACf;AAAA,IACA,cAAc,SAAS;AAAA,IACvB,SAAS,IAAI,QAAQ;AAAA,EACvB,CAAC,EACA,YAAY;AAEf,SAAO,gBAAgB,aAAa,WAAW;AACjD;;;ACvBO,IAAM,kCAAkC,OAC7C,EAAE,QAAQ,UAAU,QAAQ,GAC5B,QACG;AACH,QAAM,cAAc,mBAAmB,OAAO;AAC9C,MAAI,CAAC,IAAI,oBAAoB;AAC3B,UAAM,IAAI,MAAM,oDAAoD;AAAA,EACtE;AACA,QAAM,gBAAgB,MAAM,IAAI,mBAAmB;AACnD,QAAM,cAAc,MAAM,IAAI,QAAQ,QACnC,qBAAqB,MAAM,EAC3B,SAAS;AAAA,IACR,gBAAgB,IAAI,KAAK,eAAe,mBAAmB,oBAAoB;AAAA,IAC/E,SAAS,SAAS;AAAA,IAClB,MAAM,SAAS;AAAA,IACf;AAAA,IACA,cAAc,SAAS;AAAA,IACvB,SAAS,IAAI,QAAQ;AAAA,EACvB,CAAC,EACA,YAAY;AAEf,SAAO,gBAAgB,aAAa,WAAW;AACjD;;;ACtBO,IAAM,kCAAkC,OAC7C,EAAE,UAAU,QAAQ,GACpB,QACG;AACH,QAAM,cAAc,mBAAmB,OAAO;AAC9C,MAAI,CAAC,IAAI,oBAAoB;AAC3B,UAAM,IAAI,MAAM,oDAAoD;AAAA,EACtE;AACA,QAAM,gBAAgB,MAAM,IAAI,mBAAmB;AACnD,QAAM,QAAQ,IAAI,KAAK,SAAS,SAAS,SAAS,SAAS,MAAM,SAAS,YAAY;AAEtF,QAAM,cAAc,MAAM,IAAI,QAAQ,QACnC,qBAAqB,EACrB,SAAS;AAAA,IACR,SAAS,SAAS;AAAA,IAClB,gBAAgB,IAAI,KAAK,eAAe,mBAAmB,oBAAoB;AAAA,IAC/E,SAAS,SAAS;AAAA,IAClB,MAAM,SAAS;AAAA,IACf;AAAA,IACA,mBAAmB,SAAS;AAAA,IAC5B;AAAA,IACA,cAAc,SAAS;AAAA,IACvB,SAAS,IAAI,QAAQ;AAAA,EACvB,CAAC,EACA,YAAY;AAEf,SAAO,gBAAgB,aAAa,WAAW;AACjD;;;AC3BO,IAAM,mCAAmC,OAC9C,EAAE,UAAU,QAAQ,GACpB,QACG;AACH,QAAM,cAAc,mBAAmB,OAAO;AAC9C,MAAI,CAAC,IAAI,oBAAoB;AAC3B,UAAM,IAAI,MAAM,oDAAoD;AAAA,EACtE;AACA,QAAM,gBAAgB,MAAM,IAAI,mBAAmB;AACnD,QAAM,QAAQ,IAAI,KAAK,SAAS,SAAS,SAAS,SAAS,MAAM,SAAS,YAAY;AAEtF,QAAM,cAAc,MAAM,IAAI,QAAQ,QACnC,sBAAsB,EACtB,SAAS;AAAA,IACR,SAAS,SAAS;AAAA,IAClB,gBAAgB,IAAI,KAAK,eAAe,mBAAmB,qBAAqB;AAAA,IAChF,SAAS,SAAS;AAAA,IAClB,MAAM,SAAS;AAAA,IACf;AAAA,IACA,mBAAmB,SAAS;AAAA,IAC5B;AAAA,IACA,cAAc,SAAS;AAAA,IACvB,SAAS,IAAI,QAAQ;AAAA,EACvB,CAAC,EACA,YAAY;AAEf,SAAO,gBAAgB,aAAa,WAAW;AACjD;;;AC3BO,IAAM,gCAAgC,OAC3C,EAAE,QAAQ,UAAU,QAAQ,GAC5B,QACG;AACH,QAAM,cAAc,mBAAmB,OAAO;AAC9C,MAAI,CAAC,IAAI,oBAAoB;AAC3B,UAAM,IAAI,MAAM,oDAAoD;AAAA,EACtE;AACA,QAAM,gBAAgB,MAAM,IAAI,mBAAmB;AAEnD,QAAM,cAAc,MAAM,IAAI,QAAQ,QACnC,mBAAmB,MAAM,EACzB,SAAS;AAAA,IACR,SAAS,SAAS;AAAA,IAClB,MAAM,SAAS;AAAA,IACf,SAAS,SAAS;AAAA,IAClB,gBAAgB,IAAI,KAAK,eAAe,mBAAmB,kBAAkB;AAAA,IAC7E;AAAA,IACA,SAAS,IAAI,QAAQ;AAAA,EACvB,CAAC,EACA,YAAY;AAEf,SAAO,gBAAgB,aAAa,WAAW;AACjD;;;ACxBO,IAAM,gCAAgC,OAC3C,EAAE,QAAQ,UAAU,QAAQ,GAC5B,QACG;AACH,QAAM,cAAc,mBAAmB,OAAO;AAC9C,MAAI,CAAC,IAAI,oBAAoB;AAC3B,UAAM,IAAI,MAAM,oDAAoD;AAAA,EACtE;AACA,QAAM,gBAAgB,MAAM,IAAI,mBAAmB;AAEnD,QAAM,cAAc,MAAM,IAAI,QAAQ,QACnC,mBAAmB,MAAM,EACzB,SAAS;AAAA,IACR,gBAAgB,IAAI,KAAK,eAAe,mBAAmB,kBAAkB;AAAA,IAC7E,SAAS,SAAS;AAAA,IAClB,SAAS,SAAS;AAAA,IAClB;AAAA,IACA,SAAS,IAAI,QAAQ;AAAA,EACvB,CAAC,EACA,YAAY;AAEf,SAAO,gBAAgB,aAAa,WAAW;AACjD;;;ACtBO,IAAM,iCAAiC,OAC5C,EAAE,QAAQ,UAAU,QAAQ,GAC5B,QACG;AACH,QAAM,cAAc,mBAAmB,OAAO;AAC9C,MAAI,CAAC,IAAI,oBAAoB;AAC3B,UAAM,IAAI,MAAM,oDAAoD;AAAA,EACtE;AACA,QAAM,gBAAgB,MAAM,IAAI,mBAAmB;AAEnD,QAAM,cAAc,MAAM,IAAI,QAAQ,QACnC,oBAAoB,MAAM,EAC1B,SAAS;AAAA,IACR,SAAS,SAAS;AAAA,IAClB,gBAAgB,IAAI,KAAK,eAAe,mBAAmB,mBAAmB;AAAA,IAC9E,SAAS,SAAS;AAAA,IAClB;AAAA,IACA,SAAS,IAAI,QAAQ;AAAA,EACvB,CAAC,EACA,YAAY;AAEf,SAAO,gBAAgB,aAAa,WAAW;AACjD;;;ACxCA,SAAS,iCAAAC,sCAAqC;AAoBvC,IAAM,mCAAmC,OAC9C,EAAE,UAAU,QAAQ,GACpB,QACG;AACH,QAAM,cAAc,mBAAmB,OAAO;AAC9C,QAAM,QAAQ,IAAI,KAAK,SAAS,SAAS,SAAS,SAAS,MAAM,SAAS,YAAY;AACtF,QAAM,sBAAsBC;AAAA,IAC1B,SAAS;AAAA,IACT,SAAS;AAAA,IACT;AAAA,IACA,SAAS;AAAA,EACX;AAEA,QAAM,cAAc,MAAM,IAAI,QAAQ,QACnC,sBAAsB,EACtB,SAAS;AAAA,IACR,SAAS,SAAS;AAAA,IAClB,SAAS,SAAS;AAAA,IAClB,MAAM,SAAS;AAAA,IACf;AAAA,IACA;AAAA,IACA,cAAc,SAAS;AAAA,IACvB,SAAS,IAAI,QAAQ;AAAA,EACvB,CAAC,EACA,YAAY;AAEf,SAAO,gBAAgB,aAAa,WAAW;AACjD;;;AC/CA,SAAS,iCAAAC,sCAAqC;AAoBvC,IAAM,oCAAoC,OAC/C,EAAE,UAAU,QAAQ,GACpB,QACG;AACH,QAAM,cAAc,mBAAmB,OAAO;AAC9C,QAAM,QAAQ,IAAI,KAAK,SAAS,SAAS,SAAS,SAAS,MAAM,SAAS,YAAY;AACtF,QAAM,sBAAsBC;AAAA,IAC1B,SAAS;AAAA,IACT,SAAS;AAAA,IACT;AAAA,IACA,SAAS;AAAA,EACX;AAEA,QAAM,cAAc,MAAM,IAAI,QAAQ,QACnC,uBAAuB,EACvB,SAAS;AAAA,IACR,SAAS,SAAS;AAAA,IAClB,SAAS,SAAS;AAAA,IAClB,MAAM,SAAS;AAAA,IACf;AAAA,IACA;AAAA,IACA,cAAc,SAAS;AAAA,IACvB,SAAS,IAAI,QAAQ;AAAA,EACvB,CAAC,EACA,YAAY;AAEf,SAAO,gBAAgB,aAAa,WAAW;AACjD;;;AnB+CO,IAAM,0BAAN,MAAM,yBAAoD;AAAA,EAUrD,YACR,QACA,SACA,kBACA;AAbF,wBAAS;AACT,wBAAS;AACT,wBAAS;AACT,wBAAS;AACT,wBAAS;AACT;AACA,wBAAS;AACT,wBAAQ,sBAAuD;AAO7D,SAAK,aAAa,OAAO;AACzB,SAAK,aAAa,iBAAiB;AACnC,SAAK,UAAU,yBAAwB,iBAAiB,OAAO,OAAO;AACtE,UAAM,aAAa,yBAAwB,mBAAmB,OAAO,WAAW,WAAW;AAC3F,SAAK,qBAAqB,aACrB,OAAO,sBAAsB,OAC7B,OAAO,sBAAsB,iBAAiB,oBAAoB,KAAK,OAAO,KAAK;AACxF,SAAK,oBAAoB,OAAO,qBAAqB;AACrD,SAAK,UAAU;AACf,SAAK,OAAO,WAAW,QAAQ,SAAS;AAAA,EAC1C;AAAA,EAEA,OAAO,cACL,YACA,kBACA;AACA,WAAO,IAAI,QAA+B,iBAAiB,KAAY;AAAA,MACrE;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,OAAO,iCACL,SACA,kBACA;AACA,QAAI,CAAC,QAAQ,UAAU,OAAO,iBAAiB,SAAS,GAAG;AACzD,YAAM,IAAI;AAAA,QACR,cAAc,iBAAiB,UAAU;AAAA,MAC3C;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,kBACJ,YACuD;AACvD,QAAI;AACF,aAAO,MAAM,KAAK,QAAQ,QAAQ,oBAAoB;AAAA,QACpD,KAAK,KAAK,aAAa;AAAA,QACvB;AAAA,MACF;AAAA,IACF,SAAS,OAAO;AACd,YAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AACrE,YAAM,IAAI,MAAM,wCAAwC,OAAO,EAAE;AAAA,IACnE;AAAA,EACF;AAAA,EAEA,MAAM,mBAAmB,YAAyB;AAChD,UAAM,SAAS,MAAM,KAAK,kBAAkB,UAAU;AACtD,WAAO,OAAO;AAAA,EAChB;AAAA,EAEA,MAAM,wBAAwB,MAA6D;AACzF,UAAM,EAAE,OAAO,YAAY,SAAS,gBAAgB,GAAG,gBAAgB,IAAI;AAC3E,UAAM,qBAAqB,KAAK,kBAAkB,UAAU;AAC5D,UAAM,eAAe,MAAM;AAAA,MACzB;AAAA,MACA,KAAK,uBAAuB,kBAAkB;AAAA,IAChD;AACA,WAAO,KAAK,0BAA0B;AAAA,MACpC;AAAA,MACA;AAAA,MACA,YAAY;AAAA,MACZ;AAAA,MACA,gBAAgB,kBAAkB;AAAA,IACpC,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,sBAAsB;AAAA,IAC1B;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA;AAAA,EACF,GAA2D;AACzD,QAAI,SAAS,GAAG;AACd,YAAM,IAAI,MAAM,8BAA8B;AAAA,IAChD;AACA,QAAI,OAAO,UAAU,YAAY,QAAQ,GAAG;AAC1C,YAAM,IAAI,MAAM,6BAA6B;AAAA,IAC/C;AAEA,UAAM,qBAAqB,KAAK,kBAAkB,UAAU;AAC5D,UAAM,WAAW,KAAK,KAAK,SAAS,OAAO;AAC3C,UAAM,YAAY,KAAK,KAAK,UAAU,OAAO;AAC7C,UAAM,CAAC,cAAc,aAAa,IAAI,MAAM,QAAQ,IAAI;AAAA,MACtD,KAAK,WAAW,eAAe,UAAU,kBAAkB;AAAA,MAC3D,KAAK,WAAW,eAAe,WAAW,kBAAkB;AAAA,IAC9D,CAAC;AAED,QAAI,CAAC,cAAc;AACjB,YAAM,IAAI,MAAM,8BAA8B;AAAA,IAChD;AACA,QAAI,CAAC,eAAe;AAClB,aAAO,CAAC;AAAA,IACV;AAEA,UAAM,kBAAkB,KAAK,QAAQ,MAAM,SAAS;AAAA,MAClD;AAAA,MACA,aAAa;AAAA,IACf;AACA,UAAM,aAAa,gBAAgB;AACnC,UAAM,aAAa,eAAe,cAAc,MAAM,UAAU;AAEhE,QAAI,UAAU,WAAW,QAAQ;AAC/B,aAAO,CAAC;AAAA,IACV;AACA,QAAI,OAAO,UAAU,UAAU;AAC7B,aAAO,WAAW,MAAM,QAAQ,SAAS,KAAK;AAAA,IAChD;AACA,WAAO,WAAW,MAAM,MAAM;AAAA,EAChC;AAAA,EAEA,MAAM,yBAAyB;AAAA,IAC7B;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAAuF;AACrF,UAAM,qBAAqB,KAAK,kBAAkB,UAAU;AAC5D,UAAM,cAAc,KAAK,KAAK,oBAAoB,SAAS,IAAI;AAC/D,WAAO,KAAK,QAAQ,QAAQ,YAAY,cAAc,aAAa,kBAAkB;AAAA,EACvF;AAAA,EAEA,MAAM,0BAA0B;AAAA,IAC9B;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAAwF;AACtF,UAAM,qBAAqB,KAAK,kBAAkB,UAAU;AAC5D,UAAM,cAAc,KAAK,KAAK,qBAAqB,SAAS,UAAU;AACtE,WAAO,KAAK,QAAQ,QAAQ,YAAY,cAAc,aAAa,kBAAkB;AAAA,EACvF;AAAA,EAEA,MAAM,oBAAoB,MAAyD;AACjF,UAAM,EAAE,OAAO,YAAY,SAAS,gBAAgB,GAAG,gBAAgB,IAAI;AAC3E,UAAM,qBAAqB,KAAK,kBAAkB,UAAU;AAC5D,UAAM,eAAe,MAAM;AAAA,MACzB;AAAA,MACA,KAAK,uBAAuB,kBAAkB;AAAA,IAChD;AACA,WAAO,KAAK,0BAA0B;AAAA,MACpC;AAAA,MACA;AAAA,MACA,YAAY;AAAA,MACZ;AAAA,MACA,gBAAgB,kBAAkB;AAAA,IACpC,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,qBAAqB,MAA0D;AACnF,UAAM,EAAE,OAAO,YAAY,SAAS,gBAAgB,GAAG,gBAAgB,IAAI;AAC3E,UAAM,qBAAqB,KAAK,kBAAkB,UAAU;AAC5D,UAAM,eAAe,MAAM;AAAA,MACzB;AAAA,MACA,KAAK,uBAAuB,kBAAkB;AAAA,IAChD;AACA,WAAO,KAAK,0BAA0B;AAAA,MACpC;AAAA,MACA;AAAA,MACA,YAAY;AAAA,MACZ;AAAA,MACA,gBAAgB,kBAAkB;AAAA,IACpC,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,kBAAkB,MAAuD;AAC7E,UAAM,EAAE,OAAO,YAAY,SAAS,gBAAgB,GAAG,gBAAgB,IAAI;AAC3E,UAAM,qBAAqB,KAAK,kBAAkB,UAAU;AAC5D,UAAM,eAAe,MAAM;AAAA,MACzB;AAAA,MACA,KAAK,uBAAuB,kBAAkB;AAAA,IAChD;AACA,WAAO,KAAK,0BAA0B;AAAA,MACpC;AAAA,MACA;AAAA,MACA,YAAY;AAAA,MACZ;AAAA,MACA,gBAAgB,kBAAkB;AAAA,IACpC,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,mBAAmB,MAAwD;AAC/E,UAAM,EAAE,OAAO,YAAY,SAAS,gBAAgB,GAAG,gBAAgB,IAAI;AAC3E,UAAM,qBAAqB,KAAK,kBAAkB,UAAU;AAC5D,UAAM,eAAe,MAAM;AAAA,MACzB;AAAA,MACA,KAAK,uBAAuB,kBAAkB;AAAA,IAChD;AACA,WAAO,KAAK,0BAA0B;AAAA,MACpC;AAAA,MACA;AAAA,MACA,YAAY;AAAA,MACZ;AAAA,MACA,gBAAgB,kBAAkB;AAAA,IACpC,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,oBAAoB,MAAyD;AACjF,UAAM,EAAE,OAAO,YAAY,SAAS,gBAAgB,GAAG,gBAAgB,IAAI;AAC3E,UAAM,qBAAqB,KAAK,kBAAkB,UAAU;AAC5D,UAAM,eAAe,MAAM;AAAA,MACzB;AAAA,MACA,KAAK,uBAAuB,kBAAkB;AAAA,IAChD;AACA,WAAO,KAAK,0BAA0B;AAAA,MACpC;AAAA,MACA;AAAA,MACA,YAAY;AAAA,MACZ;AAAA,MACA,gBAAgB,kBAAkB;AAAA,IACpC,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,qBAAqB,MAA0D;AACnF,UAAM,EAAE,OAAO,YAAY,SAAS,gBAAgB,GAAG,gBAAgB,IAAI;AAC3E,UAAM,qBAAqB,KAAK,kBAAkB,UAAU;AAC5D,UAAM,eAAe,MAAM;AAAA,MACzB;AAAA,MACA,KAAK,uBAAuB,kBAAkB;AAAA,IAChD;AACA,WAAO,KAAK,0BAA0B;AAAA,MACpC;AAAA,MACA;AAAA,MACA,YAAY;AAAA,MACZ;AAAA,MACA,gBAAgB,kBAAkB;AAAA,IACpC,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,qBAAqB,MAA0D;AACnF,UAAM,EAAE,OAAO,YAAY,SAAS,gBAAgB,GAAG,gBAAgB,IAAI;AAC3E,UAAM,qBAAqB,KAAK,kBAAkB,UAAU;AAC5D,UAAM,eAAe,MAAM;AAAA,MACzB;AAAA,MACA,KAAK,uBAAuB,kBAAkB;AAAA,IAChD;AACA,WAAO,KAAK,0BAA0B;AAAA,MACpC;AAAA,MACA;AAAA,MACA,YAAY;AAAA,MACZ;AAAA,MACA,gBAAgB,kBAAkB;AAAA,IACpC,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,sBAAsB,MAA2D;AACrF,UAAM,EAAE,OAAO,YAAY,SAAS,gBAAgB,GAAG,gBAAgB,IAAI;AAC3E,UAAM,qBAAqB,KAAK,kBAAkB,UAAU;AAC5D,UAAM,eAAe,MAAM;AAAA,MACzB;AAAA,MACA,KAAK,uBAAuB,kBAAkB;AAAA,IAChD;AACA,WAAO,KAAK,0BAA0B;AAAA,MACpC;AAAA,MACA;AAAA,MACA,YAAY;AAAA,MACZ;AAAA,MACA,gBAAgB,kBAAkB;AAAA,IACpC,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,mBAAmB,MAAwD;AAC/E,UAAM,EAAE,OAAO,YAAY,SAAS,gBAAgB,GAAG,gBAAgB,IAAI;AAC3E,UAAM,qBAAqB,KAAK,kBAAkB,UAAU;AAC5D,UAAM,eAAe,MAAM;AAAA,MACzB;AAAA,MACA,KAAK,uBAAuB,kBAAkB;AAAA,IAChD;AACA,WAAO,KAAK,0BAA0B;AAAA,MACpC;AAAA,MACA;AAAA,MACA,YAAY;AAAA,MACZ;AAAA,MACA,gBAAgB,kBAAkB;AAAA,IACpC,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,mBAAmB,MAAwD;AAC/E,UAAM,EAAE,OAAO,YAAY,SAAS,gBAAgB,GAAG,gBAAgB,IAAI;AAC3E,UAAM,qBAAqB,KAAK,kBAAkB,UAAU;AAC5D,UAAM,eAAe,MAAM;AAAA,MACzB;AAAA,MACA,KAAK,uBAAuB,kBAAkB;AAAA,IAChD;AACA,WAAO,KAAK,0BAA0B;AAAA,MACpC;AAAA,MACA;AAAA,MACA,YAAY;AAAA,MACZ;AAAA,MACA,gBAAgB,kBAAkB;AAAA,IACpC,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,oBAAoB,MAAyD;AACjF,UAAM,EAAE,OAAO,YAAY,SAAS,gBAAgB,GAAG,gBAAgB,IAAI;AAC3E,UAAM,qBAAqB,KAAK,kBAAkB,UAAU;AAC5D,UAAM,eAAe,MAAM;AAAA,MACzB;AAAA,MACA,KAAK,uBAAuB,kBAAkB;AAAA,IAChD;AACA,WAAO,KAAK,0BAA0B;AAAA,MACpC;AAAA,MACA;AAAA,MACA,YAAY;AAAA,MACZ;AAAA,MACA,gBAAgB,kBAAkB;AAAA,IACpC,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,sBAAsB,MAA2D;AACrF,UAAM,EAAE,OAAO,YAAY,SAAS,gBAAgB,GAAG,gBAAgB,IAAI;AAC3E,UAAM,qBAAqB,KAAK,kBAAkB,UAAU;AAC5D,UAAM,eAAe,MAAM;AAAA,MACzB;AAAA,MACA,KAAK,uBAAuB,kBAAkB;AAAA,IAChD;AACA,WAAO,KAAK,0BAA0B;AAAA,MACpC;AAAA,MACA;AAAA,MACA,YAAY;AAAA,MACZ;AAAA,MACA,gBAAgB,kBAAkB;AAAA,IACpC,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,uBAAuB,MAA4D;AACvF,UAAM,EAAE,OAAO,YAAY,SAAS,gBAAgB,GAAG,gBAAgB,IAAI;AAC3E,UAAM,qBAAqB,KAAK,kBAAkB,UAAU;AAC5D,UAAM,eAAe,MAAM;AAAA,MACzB;AAAA,MACA,KAAK,uBAAuB,kBAAkB;AAAA,IAChD;AACA,WAAO,KAAK,0BAA0B;AAAA,MACpC;AAAA,MACA;AAAA,MACA,YAAY;AAAA,MACZ;AAAA,MACA,gBAAgB,kBAAkB;AAAA,IACpC,CAAC;AAAA,EACH;AAAA,EAEQ,kBAAkB,YAAyB;AACjD,WAAO,cAAc,KAAK;AAAA,EAC5B;AAAA,EAEA,OAAe,iBACb,SAC0C;AAC1C,WAAO,YAAY,YAAY,iBAAiB;AAAA,EAClD;AAAA,EAEA,OAAe,mBAAmB,UAA2B;AAC3D,UAAM,QAAQ,SAAS,YAAY;AACnC,WAAO,MAAM,SAAS,WAAW,KAAK,MAAM,SAAS,WAAW;AAAA,EAClE;AAAA,EAEQ,uBAAuB,YAAiD;AAC9E,UAAM,qBAAqB,KAAK,kBAAkB,UAAU;AAC5D,WAAO;AAAA,MACL,SAAS,KAAK;AAAA,MACd,MAAM,KAAK;AAAA,MACX,oBAAoB,MAAM,KAAK,mBAAmB,kBAAkB;AAAA,IACtE;AAAA,EACF;AAAA,EAEA,MAAc,0BAA0B;AAAA,IACtC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAA0D;AACxD,UAAM,qBAAqB,KAAK,kBAAkB,UAAU;AAC5D,UAAM,EAAE,UAAU,IAAI,MAAM,KAAK,WAAW,mBAAmB,kBAAkB;AACjF,UAAM,sBAAsB,MAAM,KAAK,2BAA2B;AAAA,MAChE,YAAY;AAAA,MACZ;AAAA,IACF,CAAC;AACD,UAAM,UAAU,IAAI,mBAAmB;AAAA,MACrC,UAAU;AAAA,MACV,iBAAiB;AAAA,MACjB;AAAA,IACF,CAAC,EAAE,mBAAmB,mBAAmB;AACzC,UAAM,cAAc,IAAI,qBAAqB,OAAO;AACpD,QAAI,SAAS,QAAQ;AACnB,kBAAY,KAAK,OAAO;AAAA,IAC1B;AACA,WAAO;AAAA,EACT;AAAA,EAEA,MAAc,2BAA2B;AAAA,IACvC;AAAA,IACA;AAAA,EACF,GAGyC;AACvC,UAAM,OAAO,kBAAkB;AAC/B,QAAI,SAAS,QAAQ;AACnB,aAAO,CAAC;AAAA,IACV;AAEA,UAAM,qBAAqB,MAAM,KAAK,wBAAwB,UAAU;AACxE,WAAO,CAAC,kBAAkB;AAAA,EAC5B;AAAA,EAEA,MAAc,wBACZ,YACoC;AACpC,QAAI,KAAK,oBAAoB;AAC3B,aAAO,KAAK;AAAA,IACd;AAEA,QAAI,CAAC,KAAK,oBAAoB;AAC5B,YAAM,IAAI;AAAA,QACR,iDAAiD,KAAK,WAAW,WAAW;AAAA,MAC9E;AAAA,IACF;AAEA,UAAM,WAAW,MAAM,KAAK,WAAW,sBAAsB,KAAK,oBAAoB;AAAA,MACpF;AAAA,IACF,CAAC;AACD,QAAI,CAAC,SAAS,OAAO;AACnB,YAAM,IAAI;AAAA,QACR,+CAA+C,KAAK,WAAW,WAAW,KAAK,KAAK,mBAAmB,SAAS,CAAC;AAAA,MACnH;AAAA,IACF;AAEA,SAAK,qBAAqB,SAAS;AACnC,WAAO,SAAS;AAAA,EAClB;AACF;;;AoB1hBA;AAAA,EACE,SAAW;AAAA,EACX,UAAY;AAAA,IACV,MAAQ;AAAA,IACR,SAAW;AAAA,IACX,MAAQ;AAAA,IACR,aAAe;AAAA,EACjB;AAAA,EACA,cAAgB;AAAA,IACd;AAAA,MACE,MAAQ;AAAA,MACR,eAAiB;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,UAAY;AAAA,QACV;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,QAAU;AAAA,QACZ;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,KAAO;AAAA,YACL,OAAS;AAAA,cACP;AAAA,gBACE,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,QACd;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,KAAO;AAAA,YACL,OAAS;AAAA,cACP;AAAA,gBACE,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AAAA,cACA;AAAA,gBACE,MAAQ;AAAA,gBACR,MAAQ;AAAA,cACV;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,KAAO;AAAA,YACL,OAAS;AAAA,cACP;AAAA,gBACE,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AAAA,cACA;AAAA,gBACE,MAAQ;AAAA,gBACR,MAAQ;AAAA,cACV;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,QACd;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,KAAO;AAAA,YACL,OAAS;AAAA,cACP;AAAA,gBACE,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,QACN;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,YACN,SAAW;AAAA,cACT,MAAQ;AAAA,YACV;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,eAAiB;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,UAAY;AAAA,QACV;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,QAAU;AAAA,QACZ;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,QACd;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,QACd;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,QACd;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,KAAO;AAAA,YACL,OAAS;AAAA,cACP;AAAA,gBACE,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ,CAAC;AAAA,IACX;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,eAAiB;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,UAAY;AAAA,QACV;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,QAAU;AAAA,QACZ;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,QACd;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,QACd;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,QACd;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,KAAO;AAAA,YACL,OAAS;AAAA,cACP;AAAA,gBACE,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ,CAAC;AAAA,IACX;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,eAAiB;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,UAAY;AAAA,QACV;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,YACN;AAAA,UACF;AAAA,UACA,UAAY;AAAA,QACd;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,YACN;AAAA,UACF;AAAA,UACA,UAAY;AAAA,UACZ,QAAU;AAAA,QACZ;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,KAAO;AAAA,YACL,OAAS;AAAA,cACP;AAAA,gBACE,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,YACN;AAAA,UACF;AAAA,UACA,UAAY;AAAA,QACd;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,YACN;AAAA,UACF;AAAA,UACA,UAAY;AAAA,QACd;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,YACN;AAAA,UACF;AAAA,UACA,UAAY;AAAA,QACd;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,YACN;AAAA,UACF;AAAA,UACA,UAAY;AAAA,UACZ,KAAO;AAAA,YACL,OAAS;AAAA,cACP;AAAA,gBACE,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AAAA,cACA;AAAA,gBACE,MAAQ;AAAA,gBACR,MAAQ;AAAA,cACV;AAAA,cACA;AAAA,gBACE,MAAQ;AAAA,gBACR,MAAQ;AAAA,cACV;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,QACN;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,YACN,SAAW;AAAA,cACT,MAAQ;AAAA,YACV;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,eAAiB;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,UAAY;AAAA,QACV;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,QACd;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,KAAO;AAAA,YACL,OAAS;AAAA,cACP;AAAA,gBACE,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AAAA,cACA;AAAA,gBACE,MAAQ;AAAA,gBACR,MAAQ;AAAA,cACV;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,KAAO;AAAA,YACL,OAAS;AAAA,cACP;AAAA,gBACE,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AAAA,cACA;AAAA,gBACE,MAAQ;AAAA,gBACR,MAAQ;AAAA,cACV;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,QAAU;AAAA,QACZ;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,KAAO;AAAA,YACL,OAAS;AAAA,cACP;AAAA,gBACE,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,YACN;AAAA,UACF;AAAA,UACA,UAAY;AAAA,QACd;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,QACd;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,QACd;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,KAAO;AAAA,YACL,OAAS;AAAA,cACP;AAAA,gBACE,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AAAA,cACA;AAAA,gBACE,MAAQ;AAAA,gBACR,MAAQ;AAAA,cACV;AAAA,cACA;AAAA,gBACE,MAAQ;AAAA,gBACR,MAAQ;AAAA,cACV;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,KAAO;AAAA,YACL,OAAS;AAAA,cACP;AAAA,gBACE,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,QACN;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,YACN,SAAW;AAAA,cACT,MAAQ;AAAA,YACV;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,eAAiB;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,UAAY;AAAA,QACV;AAAA,UACE,MAAQ;AAAA,UACR,KAAO;AAAA,YACL,OAAS;AAAA,cACP;AAAA,gBACE,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,QAAU;AAAA,QACZ;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,KAAO;AAAA,YACL,OAAS;AAAA,cACP;AAAA,gBACE,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AAAA,cACA;AAAA,gBACE,MAAQ;AAAA,gBACR,MAAQ;AAAA,cACV;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,KAAO;AAAA,YACL,OAAS;AAAA,cACP;AAAA,gBACE,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AAAA,cACA;AAAA,gBACE,MAAQ;AAAA,gBACR,MAAQ;AAAA,cACV;AAAA,cACA;AAAA,gBACE,MAAQ;AAAA,gBACR,MAAQ;AAAA,cACV;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,KAAO;AAAA,YACL,OAAS;AAAA,cACP;AAAA,gBACE,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AAAA,cACA;AAAA,gBACE,MAAQ;AAAA,gBACR,MAAQ;AAAA,cACV;AAAA,cACA;AAAA,gBACE,MAAQ;AAAA,gBACR,MAAQ;AAAA,cACV;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,KAAO;AAAA,YACL,OAAS;AAAA,cACP;AAAA,gBACE,MAAQ;AAAA,gBACR,MAAQ;AAAA,cACV;AAAA,cACA;AAAA,gBACE,MAAQ;AAAA,gBACR,MAAQ;AAAA,cACV;AAAA,cACA;AAAA,gBACE,MAAQ;AAAA,gBACR,MAAQ;AAAA,cACV;AAAA,YACF;AAAA,YACA,SAAW;AAAA,cACT,MAAQ;AAAA,cACR,OAAS;AAAA,gBACP;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,YACN;AAAA,UACF;AAAA,UACA,UAAY;AAAA,QACd;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,KAAO;AAAA,YACL,OAAS;AAAA,cACP;AAAA,gBACE,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,QACN;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,YACN,SAAW;AAAA,cACT,MAAQ;AAAA,YACV;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,eAAiB;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,UAAY;AAAA,QACV;AAAA,UACE,MAAQ;AAAA,UACR,KAAO;AAAA,YACL,OAAS;AAAA,cACP;AAAA,gBACE,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,QAAU;AAAA,QACZ;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,KAAO;AAAA,YACL,OAAS;AAAA,cACP;AAAA,gBACE,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AAAA,cACA;AAAA,gBACE,MAAQ;AAAA,gBACR,MAAQ;AAAA,cACV;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,KAAO;AAAA,YACL,OAAS;AAAA,cACP;AAAA,gBACE,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AAAA,cACA;AAAA,gBACE,MAAQ;AAAA,gBACR,MAAQ;AAAA,cACV;AAAA,cACA;AAAA,gBACE,MAAQ;AAAA,gBACR,MAAQ;AAAA,cACV;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,KAAO;AAAA,YACL,OAAS;AAAA,cACP;AAAA,gBACE,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AAAA,cACA;AAAA,gBACE,MAAQ;AAAA,gBACR,MAAQ;AAAA,cACV;AAAA,cACA;AAAA,gBACE,MAAQ;AAAA,gBACR,MAAQ;AAAA,cACV;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,KAAO;AAAA,YACL,OAAS;AAAA,cACP;AAAA,gBACE,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AAAA,cACA;AAAA,gBACE,MAAQ;AAAA,gBACR,MAAQ;AAAA,cACV;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,KAAO;AAAA,YACL,OAAS;AAAA,cACP;AAAA,gBACE,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AAAA,cACA;AAAA,gBACE,MAAQ;AAAA,gBACR,MAAQ;AAAA,cACV;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,KAAO;AAAA,YACL,OAAS;AAAA,cACP;AAAA,gBACE,MAAQ;AAAA,gBACR,MAAQ;AAAA,cACV;AAAA,cACA;AAAA,gBACE,MAAQ;AAAA,gBACR,MAAQ;AAAA,cACV;AAAA,cACA;AAAA,gBACE,MAAQ;AAAA,gBACR,MAAQ;AAAA,cACV;AAAA,YACF;AAAA,YACA,SAAW;AAAA,cACT,MAAQ;AAAA,cACR,OAAS;AAAA,gBACP;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,YACN;AAAA,UACF;AAAA,UACA,UAAY;AAAA,QACd;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,KAAO;AAAA,YACL,OAAS;AAAA,cACP;AAAA,gBACE,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,QACN;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,YACN,SAAW;AAAA,cACT,MAAQ;AAAA,YACV;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,eAAiB;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,UAAY;AAAA,QACV;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,QAAU;AAAA,QACZ;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,KAAO;AAAA,YACL,OAAS;AAAA,cACP;AAAA,gBACE,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,QACd;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,QACd;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,QACd;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,YACN;AAAA,UACF;AAAA,UACA,UAAY;AAAA,QACd;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,KAAO;AAAA,YACL,OAAS;AAAA,cACP;AAAA,gBACE,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ,CAAC;AAAA,IACX;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,eAAiB;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,UAAY;AAAA,QACV;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,QAAU;AAAA,QACZ;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,KAAO;AAAA,YACL,OAAS;AAAA,cACP;AAAA,gBACE,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,QACd;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,KAAO;AAAA,YACL,OAAS;AAAA,cACP;AAAA,gBACE,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AAAA,cACA;AAAA,gBACE,MAAQ;AAAA,gBACR,MAAQ;AAAA,cACV;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,QACd;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,QACd;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,YACN;AAAA,UACF;AAAA,UACA,UAAY;AAAA,QACd;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,KAAO;AAAA,YACL,OAAS;AAAA,cACP;AAAA,gBACE,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ,CAAC;AAAA,IACX;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,eAAiB;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,UAAY;AAAA,QACV;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,QACd;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,QAAU;AAAA,QACZ;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,KAAO;AAAA,YACL,OAAS;AAAA,cACP;AAAA,gBACE,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,KAAO;AAAA,YACL,OAAS;AAAA,cACP;AAAA,gBACE,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,QACN;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,YACN,SAAW;AAAA,cACT,MAAQ;AAAA,YACV;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,eAAiB;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,UAAY;AAAA,QACV;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,KAAO;AAAA,YACL,OAAS;AAAA,cACP;AAAA,gBACE,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,QAAU;AAAA,QACZ;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,KAAO;AAAA,YACL,OAAS;AAAA,cACP;AAAA,gBACE,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,QACN;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,YACN,SAAW;AAAA,cACT,MAAQ;AAAA,YACV;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,eAAiB;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,UAAY;AAAA,QACV;AAAA,UACE,MAAQ;AAAA,UACR,KAAO;AAAA,YACL,OAAS;AAAA,cACP;AAAA,gBACE,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,QACd;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,QAAU;AAAA,QACZ;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,YACN;AAAA,UACF;AAAA,UACA,UAAY;AAAA,QACd;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,KAAO;AAAA,YACL,OAAS;AAAA,cACP;AAAA,gBACE,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,QACN;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,YACN,SAAW;AAAA,cACT,MAAQ;AAAA,YACV;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,eAAiB;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,UAAY;AAAA,QACV;AAAA,UACE,MAAQ;AAAA,UACR,KAAO;AAAA,YACL,OAAS;AAAA,cACP;AAAA,gBACE,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,QACd;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,QAAU;AAAA,QACZ;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,YACN;AAAA,UACF;AAAA,UACA,UAAY;AAAA,QACd;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,KAAO;AAAA,YACL,OAAS;AAAA,cACP;AAAA,gBACE,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,QACN;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,YACN,SAAW;AAAA,cACT,MAAQ;AAAA,YACV;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,eAAiB;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,UAAY;AAAA,QACV;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,QAAU;AAAA,QACZ;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,KAAO;AAAA,YACL,OAAS;AAAA,cACP;AAAA,gBACE,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,QACd;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,KAAO;AAAA,YACL,OAAS;AAAA,cACP;AAAA,gBACE,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AAAA,cACA;AAAA,gBACE,MAAQ;AAAA,gBACR,MAAQ;AAAA,cACV;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,YACN;AAAA,UACF;AAAA,UACA,UAAY;AAAA,QACd;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,KAAO;AAAA,YACL,OAAS;AAAA,cACP;AAAA,gBACE,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,QACN;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,YACN,SAAW;AAAA,cACT,MAAQ;AAAA,YACV;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,eAAiB;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,UAAY;AAAA,QACV;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,QACd;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,KAAO;AAAA,YACL,OAAS;AAAA,cACP;AAAA,gBACE,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,WAAa;AAAA,YACX;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,KAAO;AAAA,YACL,OAAS;AAAA,cACP;AAAA,gBACE,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,QACN;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,YACN,SAAW;AAAA,cACT,MAAQ;AAAA,YACV;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,eAAiB;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,UAAY;AAAA,QACV;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,KAAO;AAAA,YACL,OAAS;AAAA,cACP;AAAA,gBACE,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,WAAa;AAAA,YACX;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,KAAO;AAAA,YACL,OAAS;AAAA,cACP;AAAA,gBACE,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,QACN;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,YACN,SAAW;AAAA,cACT,MAAQ;AAAA,YACV;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,eAAiB;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,UAAY;AAAA,QACV;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,QAAU;AAAA,QACZ;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,QACd;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,QACd;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,QACd;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,KAAO;AAAA,YACL,OAAS;AAAA,cACP;AAAA,gBACE,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ,CAAC;AAAA,IACX;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,eAAiB;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,UAAY;AAAA,QACV;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,QAAU;AAAA,QACZ;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,QACd;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,QACd;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,UAAY;AAAA,QACd;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,KAAO;AAAA,YACL,OAAS;AAAA,cACP;AAAA,gBACE,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAQ,CAAC;AAAA,IACX;AAAA,EACF;AAAA,EACA,UAAY;AAAA,IACV;AAAA,MACE,MAAQ;AAAA,MACR,eAAiB;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,eAAiB;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,eAAiB;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,eAAiB;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,eAAiB;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,eAAiB;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,eAAiB;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,eAAiB;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,QAAU;AAAA,IACR;AAAA,MACE,MAAQ;AAAA,MACR,eAAiB;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,eAAiB;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,eAAiB;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,eAAiB;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,eAAiB;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,eAAiB;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,eAAiB;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,eAAiB;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,eAAiB;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,eAAiB;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,eAAiB;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,eAAiB;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,eAAiB;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,eAAiB;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,QAAU;AAAA,IACR;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,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T;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,KAAO;AAA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","names":["PublicKey","AirdropStudioSeed","PublicKey","BN","PublicKey","getAssociatedTokenAddressSync","getAssociatedTokenAddressSync","getAssociatedTokenAddressSync","getAssociatedTokenAddressSync","getAssociatedTokenAddressSync","getAssociatedTokenAddressSync","getAssociatedTokenAddressSync","getAssociatedTokenAddressSync","getAssociatedTokenAddressSync","getAssociatedTokenAddressSync","getAssociatedTokenAddressSync","getAssociatedTokenAddressSync","airdrop_studio_contract_default","airdrop_studio_contract_default","BN","BN","TOKEN_PROGRAM_ID","PublicKey"]}
|