diff --git a/.github/workflows/upload-metdata.yml b/.github/workflows/upload-metdata.yml new file mode 100644 index 00000000..41722c37 --- /dev/null +++ b/.github/workflows/upload-metdata.yml @@ -0,0 +1,73 @@ +name: Upload zkDrop Metadata + +on: + issue_comment: + types: [created] + +jobs: + create-app: + runs-on: ubuntu-latest + if: contains(github.event.comment.body, '/upload-metadata') + steps: + - name: Check if sismo-core organisation member + id: is_organization_member + uses: jamessingleton/is-organization-member@1.0.0 + with: + organization: "sismo-core" + username: ${{ github.actor }} + token: ${{ secrets.GITHUB_TOKEN }} + + - if: steps.is_organization_member.outputs.result != 'true' + run: exit 1 + + - name: Checkout code + uses: actions/checkout@v3 + with: + fetch-depth: 0 # fetch all branches and tags + token: ${{secrets.SISMOBOT_TOKEN}} + + - name: Checkout Pull Request + run: hub pr checkout ${{ github.event.issue.number }} + env: + GITHUB_TOKEN: ${{ secrets.SISMOBOT_TOKEN }} + + - name: Install dependencies + run: yarn install --frozen-lockfile + + - id: changed-files + uses: ahmadnassri/action-changed-files@v1 + + - name: content + run: | + echo 'Changed files:' + echo "${{ steps.changed-files.outputs.files }}" + + - name: Get modified spaces and apps + id: updated-spaces + run: | + echo 'Changed files:' + DEMO_UPDATED_SPACES=$(echo ${{steps.changed-files.outputs.files}} | awk 'BEGIN {OFS=FS=" "} {for(i=1; i<=NF; i++) {if ($i ~ /demo/){split($i,a,"/"); n=split(a[length(a)],b,"."); print b[1]}}}' | xargs) + echo "::set-output name=demo_updated_spaces::'$(echo "$DEMO_UPDATED_SPACES")'" + MAIN_UPDATED_SPACES=$(echo ${{steps.changed-files.outputs.files}} | awk 'BEGIN {OFS=FS=" "} {for(i=1; i<=NF; i++) {if ($i ~ /main/){split($i,a,"/"); n=split(a[length(a)],b,"."); print b[1]}}}' | xargs) + echo "::set-output name=main_updated_spaces::'$(echo "$MAIN_UPDATED_SPACES")'" + + - name: Display changes + run: | + echo "[DEMO] Modified spaces and apps in commit:" + echo "${{ steps.updated-spaces.outputs.demo_updated_spaces }}" + echo "[MAIN] Modified spaces and apps in commit:" + echo "${{ steps.updated-spaces.outputs.main_updated_spaces }}" + + - name: Run Upload metadata script [demo] + env: + NEXT_PUBLIC_NODE_ENV: demo + PINATA_JWT_TOKEN: ${{ secrets.PINATA_JWT_TOKEN }} + run: | + yarn upload-zk-drop-metadata ${{ steps.updated-spaces.outputs.demo_updated_spaces }} + + - name: Run Upload metadata script [main] + env: + NEXT_PUBLIC_NODE_ENV: main + PINATA_JWT_TOKEN: ${{ secrets.PINATA_JWT_TOKEN }} + run: | + yarn upload-zk-drop-metadata ${{ steps.updated-spaces.outputs.main_updated_spaces }} diff --git a/package.json b/package.json index 49679549..a4f72e91 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "prebuild": "yarn run build-config", "build-config": "tsx ./src/scripts/configs-to-json/configs-to-json.script.ts", "sync-all-apps-factory": "NEXT_PUBLIC_NODE_ENV=main yarn sync-apps-factory && NEXT_PUBLIC_NODE_ENV=demo yarn sync-apps-factory", + "upload-zk-drop-metadata": "yarn run build-config && tsx -r ./svgMock.js ./src/scripts/upload-metadata/upload-metadata.script.ts", "sync-apps-factory": "yarn run build-config && tsx -r ./svgMock.js ./src/scripts/sync-apps-factory/sync-apps-factory.script.ts", "prettier": "prettier --write 'src/**/*.ts' '.github' 'README.md'" }, @@ -27,6 +28,7 @@ "axios": "^1.4.0", "bufferutil": "^4.0.7", "classnames": "^2.3.2", + "commander": "^11.0.0", "defender-autotask-utils": "^1.44.0", "defender-relay-client": "^1.44.0", "eslint": "8.39.0", diff --git a/space-configs/demo/sismo.ts b/space-configs/demo/sismo.ts index d8d34eea..87ba25ee 100644 --- a/space-configs/demo/sismo.ts +++ b/space-configs/demo/sismo.ts @@ -466,6 +466,6 @@ export default { options: { isFeatured: true, }, - }, + } ], } as SpaceConfig; diff --git a/space-configs/demo/the-merge-contributors.ts b/space-configs/demo/the-merge-contributors.ts index f7809b5e..4afee4c7 100644 --- a/space-configs/demo/the-merge-contributors.ts +++ b/space-configs/demo/the-merge-contributors.ts @@ -55,6 +55,7 @@ export default { type: "google_sheet", spreadsheetId: "1Wrh8gFPWuUfdip1wuOxBx_0bZQ_OJb2JsI5A-loRa-Y", }, + }, }, options: { diff --git a/space-configs/main/privacy-is-normal.ts b/space-configs/main/privacy-is-normal.ts index ae2a41b8..db266fbd 100644 --- a/space-configs/main/privacy-is-normal.ts +++ b/space-configs/main/privacy-is-normal.ts @@ -152,6 +152,7 @@ export default { }, }, }, + }, ], } as SpaceConfig; diff --git a/space-configs/main/sismo.ts b/space-configs/main/sismo.ts index 5ad3af8d..84f364f9 100644 --- a/space-configs/main/sismo.ts +++ b/space-configs/main/sismo.ts @@ -183,6 +183,6 @@ export default { options: { endDate: new Date("2023-07-07T18:00"), }, - }, + } ], } as SpaceConfig; diff --git a/space-configs/types.ts b/space-configs/types.ts index 38d8b95b..bb6e4815 100644 --- a/space-configs/types.ts +++ b/space-configs/types.ts @@ -74,18 +74,6 @@ export type FirstComeFirstServed = { maxNumberOfUsers: number; }; -export type ZkDropAppConfig = AppCommonConfig & { - type: "zkdrop"; - templateConfig: { - step1CtaText?: string; - step2CtaText: string; - appDescription?: string; - chainId: number; - userSelection?: UserSelection; // default none - contractAddress: string; - }; -}; - export type ZkBadgeChainName = Network.Gnosis | Network.Mumbai | Network.Sepolia; export type ZkBadgeAppConfig = AppCommonConfig & { type: "zkBadge"; @@ -108,6 +96,27 @@ export type ZkBadgeAppConfig = AppCommonConfig & { }; }; +export type ZkDropChainName = Network.Gnosis | Network.Mumbai | Network.Sepolia; +export type ZkDropAppConfig = AppCommonConfig & { + type: "zkDrop"; + templateConfig: { + nftMetadata: { + name: string; + description: string; + image: string; + }; + chains: { + contractAddress: string; + name: ZkDropChainName; + isTransferable: boolean; + relayerEnabled?: boolean; + }[]; + step1CtaText?: string; + step2CtaText: string; + appDescription?: string; + }; +}; + export type ZkFormAppConfig = AppCommonConfig & { type: "zkForm"; templateConfig: { diff --git a/src/app/api/zk-badge/relay-tx/route.test.ts b/src/app/api/zk-badge/relay-tx/route.test.ts index 9c60c450..2181092f 100644 --- a/src/app/api/zk-badge/relay-tx/route.test.ts +++ b/src/app/api/zk-badge/relay-tx/route.test.ts @@ -13,9 +13,7 @@ jest.mock("../../../../libs/contracts/signers", () => { }); jest.mock('../../../../libs/contracts/zk-badge', () => { - // Use the 'mockImplementation' method to mock the 'ZkBadgeContract' class const originalModule = jest.requireActual("../../../../libs/contracts/zk-badge"); - return { __esModule: true, ...originalModule, @@ -36,9 +34,7 @@ describe('POST /api/zk-badge/relay-tx', () => { tokenId: 'mockTokenId' }) }; - await POST(req); - expect(mockMint).toHaveBeenCalledWith({ responseBytes: 'mockResponseBytes', address: 'mockDestination', diff --git a/src/app/api/zk-badge/relay-tx/route.ts b/src/app/api/zk-badge/relay-tx/route.ts index 4c9a9dd1..653db28c 100644 --- a/src/app/api/zk-badge/relay-tx/route.ts +++ b/src/app/api/zk-badge/relay-tx/route.ts @@ -1,3 +1,4 @@ +import env from "@/src/environments"; import { Network } from "@/src/libs/contracts/networks"; import { getDefenderRelayerSigner } from "@/src/libs/contracts/signers"; import { ZkBadgeContract } from "@/src/libs/contracts/zk-badge"; @@ -6,7 +7,7 @@ import { NextResponse } from "next/server"; export async function POST(req: Request) { const { responseBytes, destination, tokenId, chain } = await req.json(); - const signer = getDefenderRelayerSigner(Network.Mumbai); + const signer = getDefenderRelayerSigner(Network.Mumbai, env.defenderAPIKeys.zkBadge); const zkMinterContract = new ZkBadgeContract({ network: chain, signer }); try { diff --git a/src/app/api/zk-drop/relay-tx/route.test.ts b/src/app/api/zk-drop/relay-tx/route.test.ts new file mode 100644 index 00000000..801840b9 --- /dev/null +++ b/src/app/api/zk-drop/relay-tx/route.test.ts @@ -0,0 +1,97 @@ +/** + * @jest-environment node + */ +import ServiceFactory from "@/src/services/service-factory/service-factory"; +import { POST } from "./route"; +import { spaceMock1, spaceMock2 } from "@/src/services/spaces-service/tests/spaces-mock"; +import { Network } from "@/src/libs/contracts/networks"; + + +const mockMint = jest.fn().mockImplementation(() => Promise.resolve({ hash: 'mockTxHash' })); + +jest.mock("../../../../libs/contracts/signers", () => { + return { + getDefenderRelayerSigner: jest.fn().mockReturnValue({}), + }; +}); + +jest.mock('../../../../libs/contracts/zk-drop', () => { + const originalModule = jest.requireActual("../../../../libs/contracts/zk-drop"); + return { + __esModule: true, + ...originalModule, + ZkDropContract: jest.fn().mockImplementation(() => { + return { + mint: mockMint, + }; + }), + }; +}); + +describe('POST /api/zk-drop/relay-tx', () => { + beforeEach(() => { + let spacesService = ServiceFactory.getSpacesService(); + const configs = [ + spaceMock1, + spaceMock2 + ] + spacesService.updateConfigs(configs); + }) + + afterEach(() => { + let configs = ServiceFactory.getSpaceConfigs(); + let spacesService = ServiceFactory.getSpacesService(); + spacesService.updateConfigs(configs); + jest.clearAllMocks(); + }) + + it('Should throw with an incorrect app slug', async () => { + const req: any = { + json: jest.fn().mockResolvedValue({ + responseBytes: 'mockResponseBytes', + destination: 'mockDestination', + spaceSlug: spaceMock1.metadata.slug, + appSlug: "zk-drop-slug-invalid", + chain: Network.Sepolia + }) + }; + + const response = await POST(req); + const data = await response.json(); + expect(data.code).toEqual(`No app found for ${spaceMock1.metadata.slug}/zk-drop-slug-invalid`); + }); + + it('Should throw with an incorrect chain', async () => { + const req: any = { + json: jest.fn().mockResolvedValue({ + responseBytes: 'mockResponseBytes', + destination: 'mockDestination', + spaceSlug: spaceMock1.metadata.slug, + appSlug: "zk-drop-slug", + chain: Network.Mumbai + }) + }; + + const response = await POST(req); + const data = await response.json(); + expect(data.code).toEqual(`Chain mumbai not supported for the app ${spaceMock1.metadata.slug}/zk-drop-slug`); + }); + + it('Should call mint with the correct arguments', async () => { + const req: any = { + json: jest.fn().mockResolvedValue({ + responseBytes: 'mockResponseBytes', + destination: 'mockDestination', + spaceSlug: spaceMock1.metadata.slug, + appSlug: "zk-drop-slug", + chain: Network.Sepolia + }) + }; + await POST(req); + console.log("Mock mint calls: ", mockMint.mock.calls); + expect(mockMint).toHaveBeenCalledWith({ + responseBytes: 'mockResponseBytes', + address: 'mockDestination' + }); + }); +}); \ No newline at end of file diff --git a/src/app/api/zk-drop/relay-tx/route.ts b/src/app/api/zk-drop/relay-tx/route.ts new file mode 100644 index 00000000..473be860 --- /dev/null +++ b/src/app/api/zk-drop/relay-tx/route.ts @@ -0,0 +1,52 @@ +import env from "@/src/environments"; +import { getDefenderRelayerSigner } from "@/src/libs/contracts/signers"; +import { ZkDropContract } from "@/src/libs/contracts/zk-drop"; +import ServiceFactory from "@/src/services/service-factory/service-factory"; +import { ZkDropAppType } from "@/src/services/spaces-service"; +import { NextResponse } from "next/server"; + +export async function POST(req: Request) { + const { responseBytes, destination, chain, spaceSlug, appSlug } = await req.json(); + + const spacesService = ServiceFactory.getSpacesService(); + const apps = await spacesService.getApps({ where: { spaceSlug, appSlug }}); + if (!apps || apps.length !== 1) { + return NextResponse.json({ + code: `No app found for ${spaceSlug}/${appSlug}` + }) + } + const app = apps[0] as ZkDropAppType; + + const signer = getDefenderRelayerSigner(chain, env.defenderAPIKeys.zkDrop); + const chainConfig = app.chains.find(_chain => _chain.name === chain) + + if (!chainConfig) { + return NextResponse.json({ + code: `Chain ${chain} not supported for the app ${spaceSlug}/${appSlug}` + }) + } + const zkDropContract = new ZkDropContract({ signer, contractAddress: chainConfig.contractAddress }); + + try { + console.log({ + responseBytes, + address: destination, + chain, + contractAddress: chainConfig.contractAddress + }); + const tx = await zkDropContract.mint({ + responseBytes, + address: destination + }); + + return NextResponse.json({ + success: true, + txHash: tx.hash + }); + } catch (e) { + console.error(e); + return NextResponse.json({ + code: "minting-error" + }) + } +} \ No newline at end of file diff --git a/src/components/AppCardLarge/index.tsx b/src/components/AppCardLarge/index.tsx index de5a2548..cde545b6 100644 --- a/src/components/AppCardLarge/index.tsx +++ b/src/components/AppCardLarge/index.tsx @@ -8,7 +8,7 @@ import { getHumanReadableRemainingTimeTag } from "@/src/utils/getHumanReadableTi import SpaceTag from "../SpaceTag"; import Default from "@/src/assets/default.svg"; import colors from "@/src/themes/colors"; -import { ExternalAppType, Lottery, ZkAppType, ZkDropAppType } from "@/src/services/spaces-service"; +import { ExternalAppType, Lottery, ZkAppType, ZkDropAppType, ZkFormAppType } from "@/src/services/spaces-service"; import Link from "next/link"; const Container = styled(Link)<{ $isDisabled: boolean }>` @@ -202,9 +202,9 @@ export default function AppCardLarge({ app }: Props): JSX.Element { const isDisabled = hasEnded; const maxNumberOfEntries = - (app?.type == "zkForm" || app?.type == "zkdrop") && - (app as unknown as ZkDropAppType)?.userSelection?.type == "Lottery" && - ((app as unknown as ZkDropAppType)?.userSelection as Lottery)?.maxNumberOfEntries; + app?.type == "zkForm" && + (app as unknown as ZkFormAppType)?.userSelection?.type == "Lottery" && + ((app as unknown as ZkFormAppType)?.userSelection as Lottery)?.maxNumberOfEntries; const link = app?.type === "external" ? (app as unknown as ExternalAppType)?.link : `/${app.space.slug}/${app.slug}`; if (app) diff --git a/src/components/AppCardSmall/index.tsx b/src/components/AppCardSmall/index.tsx index 46e84294..f0ecef8e 100644 --- a/src/components/AppCardSmall/index.tsx +++ b/src/components/AppCardSmall/index.tsx @@ -9,7 +9,7 @@ import SpaceTag from "../SpaceTag"; import { useState } from "react"; import Default from "@/src/assets/default.svg"; import colors from "@/src/themes/colors"; -import { ExternalAppType, ZkDropAppType, Lottery, ZkAppType } from "@/src/services/spaces-service"; +import { ExternalAppType, ZkDropAppType, Lottery, ZkAppType, ZkFormAppType } from "@/src/services/spaces-service"; import Link from "next/link"; const CardContainer = styled.div<{ $isSeparator: boolean }>` @@ -264,9 +264,9 @@ export default function AppCardLarge({ app, className, isSeparator }: Props): JS const isDisabled = hasEnded; const maxNumberOfEntries = - (app?.type == "zkForm" || app?.type == "zkdrop") && - (app as unknown as ZkDropAppType)?.userSelection?.type == "Lottery" && - ((app as unknown as ZkDropAppType)?.userSelection as Lottery)?.maxNumberOfEntries; + app?.type == "zkForm" && + (app as unknown as ZkFormAppType)?.userSelection?.type == "Lottery" && + ((app as unknown as ZkFormAppType)?.userSelection as Lottery)?.maxNumberOfEntries; const link = app?.type === "external" diff --git a/src/components/AppMain/Apps/ZkDropApp/components/Congratulations.tsx b/src/components/AppMain/Apps/ZkDropApp/components/Congratulations.tsx new file mode 100644 index 00000000..35505489 --- /dev/null +++ b/src/components/AppMain/Apps/ZkDropApp/components/Congratulations.tsx @@ -0,0 +1,64 @@ +"use client"; + +import useEthAccount from "@/src/hooks/useEthAccount"; +import { Network, getErc1155Explorer, getErc721Explorer } from "@/src/libs/contracts/networks"; +import { ZK_BADGE_ADDRESSES } from "@/src/libs/contracts/zk-badge"; +import { ZkDropAppType } from "@/src/services/spaces-service"; +import Button3D from "@/src/ui/Button3D"; +import { getMinimalEns, getMinimalIdentifier } from "@/src/utils/useMainMinified"; +import { ArrowSquareOut } from "phosphor-react"; +import React from "react"; +import { styled } from "styled-components"; + +const Container = styled.div` + display: flex; + flex-direction: column; + align-items: center; +`; + +const Title = styled.div` + font-family: ${(props) => props.theme.fonts.semibold}; + color: ${(props) => props.theme.colors.neutral1}; + font-size: 32px; + line-height: 38px; + margin-bottom: 16px; +`; + +const Subtitle = styled.div` + font-family: ${(props) => props.theme.fonts.regular}; + color: ${(props) => props.theme.colors.neutral4}; + font-size: 16px; + line-height: 22px; + margin-bottom: 24px; + text-align: center; + cursor: pointer; +`; + +type Props = { + onBackToApps: () => void; + app: ZkDropAppType; + destination: `0x${string}`; + network: Network; +}; + +export default function Congratulations({ onBackToApps, app, destination, network }: Props): JSX.Element { + const ethAccount = useEthAccount(destination); + + return ( + + Congratulations + { + const explorer = getErc721Explorer({contractAddress: ZK_BADGE_ADDRESSES[network], network: network}); + window.open(explorer, "_blank"); + }} + > + You have successfully minted the "{app.nftMetadata.name}" on {ethAccount.ens ? getMinimalEns(ethAccount.ens) : getMinimalIdentifier(ethAccount.address)} + + + + Back to the Apps + + + ); +} diff --git a/src/components/AppMain/Apps/ZkDropApp/components/Requirements.tsx b/src/components/AppMain/Apps/ZkDropApp/components/Requirements.tsx new file mode 100644 index 00000000..91d26975 --- /dev/null +++ b/src/components/AppMain/Apps/ZkDropApp/components/Requirements.tsx @@ -0,0 +1,48 @@ +"use client"; + +import { GroupSnapshotMetadata } from "@/src/libs/group-provider"; +import { ZkAppType } from "@/src/services/spaces-service"; +import { LockSimpleOpen } from "phosphor-react"; +import React from "react"; +import styled from "styled-components"; +import ReqList from "../../components/ReqList"; + +const Container = styled.div``; + +const RequirementTitle = styled.div` + display: flex; + align-items: center; + gap: 4px; + flex-shrink: 0; + color: ${(props) => props.theme.colors.neutral4}; + font-size: 14px; + font-family: ${(props) => props.theme.fonts.medium}; + line-height: 20px; + margin-top: 24px; +`; + +const Eligibility = styled.div` + margin-top: 7px; + border-top: 1px solid ${(props) => props.theme.colors.neutral7}; + padding: 10px 0px; +`; + +type Props = { + app: ZkAppType; + groupSnapshotMetadataList: GroupSnapshotMetadata[]; +}; + +export default function Requirements({ app, groupSnapshotMetadataList }: Props): JSX.Element { + + return ( + + + + Requirements + + + + + + ); +} diff --git a/src/components/AppMain/Apps/ZkDropApp/components/SelectDestination.tsx b/src/components/AppMain/Apps/ZkDropApp/components/SelectDestination.tsx new file mode 100644 index 00000000..a5be51ac --- /dev/null +++ b/src/components/AppMain/Apps/ZkDropApp/components/SelectDestination.tsx @@ -0,0 +1,28 @@ +import TextInputEthAccount from "@/src/ui/TextInputEthAccount"; +import { styled } from "styled-components"; + +const Container = styled.div` + width: 100%; + margin-bottom: 32px; +`; + +const Label = styled.div` + font-size: 16px; + margin-bottom: 8px; + font-family: ${(props) => props.theme.fonts.bold}; +` + +type Props = { + onDestinationSelected: (destination: `0x${string}`) => void; +}; + +export default function SelectDestination({ + onDestinationSelected +}: Props): JSX.Element { + return + + onDestinationSelected(ethAccount.address)}/> + ; +} diff --git a/src/components/AppMain/Apps/ZkDropApp/index.tsx b/src/components/AppMain/Apps/ZkDropApp/index.tsx index 2e726ed7..e334c352 100644 --- a/src/components/AppMain/Apps/ZkDropApp/index.tsx +++ b/src/components/AppMain/Apps/ZkDropApp/index.tsx @@ -1,26 +1,395 @@ -'use client' +"use client"; -import { ZkDropAppType } from "@/src/services/spaces-service"; -import Modal from "@/src/ui/Modal"; -import React from "react"; +import React, { useEffect, useMemo, useState } from "react"; import { styled } from "styled-components"; +import Button3D from "@/src/ui/Button3D"; +import { GroupSnapshotMetadata } from "@/src/libs/group-provider"; +import Section from "../components/Section"; +import { ZkDropAppType } from "@/src/services/spaces-service"; +import { usePathname, useRouter } from "next/navigation"; +import { AuthType, SismoConnectButton } from "@sismo-core/sismo-connect-react"; +import { getImpersonateAddresses } from "@/src/utils/getImpersonateAddresses"; +import env from "@/src/environments"; +import SelectDestination from "./components/SelectDestination"; +import Requirements from "./components/Requirements"; +import { getErc721Explorer, getTxExplorer, networkChainIds } from "@/src/libs/contracts/networks"; +import { getMessageSignature } from "./utils/getMessageSignature"; +import Error from "@/src/ui/Error"; +import Congratulations from "./components/Congratulations"; +import { getMinimalHash } from "@/src/utils/getMinimalHash"; +import { ArrowSquareOut } from "phosphor-react"; +import { useAccount, useContractWrite, usePrepareContractWrite, useNetwork, useSwitchNetwork, useWaitForTransaction, useContractRead } from "wagmi"; +import { ZK_BADGE_ADDRESSES } from "@/src/libs/contracts/zk-badge/constants"; +import { useConnectModal } from "@rainbow-me/rainbowkit"; +import { ZK_DROP_ABI } from "@/src/libs/contracts/zk-drop"; const Content = styled.div` - width: 100px; - height: 50px; + width: 580px; + + @media (max-width: 900px) { + width: 100%; + } +`; + +const Bottom = styled.div` + display: flex; + justify-content: center; + margin-top: 32px; + position: relative; + height: 46px; + display: flex; + align-items: center; +`; + +const AlreadyRegistered = styled.div` + color: ${(props) => props.theme.colors.neutral1}; + font-family: ${(props) => props.theme.fonts.regular}; + border: 1px solid ${(props) => props.theme.colors.blueRYB}; + font-size: 16px; + background: rgba(18, 52, 245, 0.05); + height: 46px; + display: flex; + align-items: center; + justify-content: center; + border-radius: 4px; + margin-top: 16px; + cursor: pointer; +`; + +const SismoButtonContainer = styled.div<{disabled: boolean}>` + width: 100%; + position: relative; + display: flex; + justify-content: center; + ${props => props.disabled && ` + opacity: 0.5; + `} +` + +const DisabledButton = styled.div` + z-index: 1; + width: 100%; + height: 100%; + position: absolute; ` +const MintContainer = styled.div` + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + margin-top: 32px; +` + +const BackToAppStore = styled.div` + font-size: 16px; + font-family: ${props => props.theme.fonts.medium}; + cursor: pointer; +` + +const TransactionLink = styled.div` + font-size: 14px; + margin-top: 20px; + height: 30px; + font-size: 16px; + font-family: ${props => props.theme.fonts.medium}; +`; + +const Inline = styled.div` + display: flex; + width: 100%; + align-items: center; + justify-content: flex-end; +`; + type Props = { - isOpen: boolean; - onClose: () => void; - app: ZkDropAppType; -} + groupSnapshotMetadataList: GroupSnapshotMetadata[]; + app: ZkDropAppType; +}; + +export default function ZkDropApp({ app, groupSnapshotMetadataList }: Props): JSX.Element { + const pathname = usePathname(); + const router = useRouter(); + + const { openConnectModal, connectModalOpen } = useConnectModal(); + const { chain } = useNetwork(); + const { isConnected } = useAccount(); + + const [error, setError] = useState(null); + const [alreadyMinted, setAlreadyMinted] = useState(false); + const [minted, setMinted] = useState(false); + const [destination, setDestination] = useState<`0x${string}`>(null); + const [responseBytes, setResponseBytes] = useState(null); + const [minting, setMinting] = useState(null); + const [hash, setHash] = useState(null); + const [vaultId, setVaultId] = useState(null); + const hasResponse = Boolean(responseBytes); + + const chainApp = app.chains[0].name; + const isRelayed = app.chains[0].relayerEnabled; + + console.log("chainApp", chainApp); + + const sismoConnectConfig = useMemo(() => { + const config = { + appId: app.appId, + vault: env.isDemo + ? { + impersonate: getImpersonateAddresses(app), + } + : null, + }; + return config; + }, [app]); + + useEffect(() => { + if (destination) { + window.localStorage.setItem("destination", destination); + } + }, [destination]) + + const contractAddress = app.chains.find(chain => chain.name === chainApp)?.contractAddress; + useContractRead({ + address: contractAddress, + abi: ZK_DROP_ABI, + functionName: 'balanceOf', + args: [destination], + enabled: Boolean(destination), + chainId: networkChainIds[chainApp], + account: null, + onSuccess: (data: BigInt) => { + if (typeof data === "bigint" && data > 0) { + setAlreadyMinted(true); + } + } + }); + + /****************************************************************************/ + /******************************** RELAYED ***********************************/ + /****************************************************************************/ + + const mintRelayed = async () => { + setHash(null); + setError(null); + setMinting(true); + const body = { + responseBytes: responseBytes, + destination: destination, + chain: chainApp, + spaceSlug: app.space.slug, + appSlug: app.slug + }; + const res = await fetch("/api/zk-drop/relay-tx", { + method: "POST", + body: JSON.stringify(body), + }); + if (!res.ok) { + setMinting(false); + return; + } + const data = await res.json(); + if (data.success) { + try { + setHash(data.txHash); + // const provider = await getProvider(chainApp); + // await provider.waitForTransaction(data.txHash); + // setMinted(true); + // setHash(null); + } catch (e) { + console.log(e); + setError("Minting error. Please contact us or retry later.") + } + } else { + if (data.code === "minting-error") { + setError("Minting error. Please contact us or retry later.") + } + } + } + + /****************************************************************************/ + /****************************** NOT RELAYED *********************************/ + /****************************************************************************/ + + const { switchNetwork, isLoading: isSwitchingNetwork } = useSwitchNetwork() + + const { config } = usePrepareContractWrite({ + address: contractAddress, + abi: ZK_DROP_ABI, + functionName: "claimWithSismoConnect", + args: [responseBytes, destination], + chainId: networkChainIds[chainApp], + enabled: Boolean(responseBytes) && Boolean(destination), + }) + + const { data, write, isLoading: isLoadingWriteContract } = useContractWrite(config); + useEffect(() => { + if (data && data.hash) { + setHash(data.hash); + } + }, [data]) + + const { isLoading: isLoadingTransaction } = useWaitForTransaction({ + hash: hash, + chainId: networkChainIds[chainApp], + onSuccess: () => { + setMinted(true); + setMinting(false); + }, + onError: () => { + setError("Error while minting your ZK Badge"); + } + }) -export default function ZkDropApp({ isOpen, onClose, app }: Props): JSX.Element { + const mintNotRelayed = async () => { + setError(null); + setHash(null); + if (!isRelayed && !isConnected) { + openConnectModal(); + return; + } + if (!isRelayed && chain.id !== networkChainIds[chainApp]) { + switchNetwork(networkChainIds[chainApp]) + return; + } + write(); + } - return - - {app?.name} - - ; + return + {minted ? ( + { + router.push("/"); + }} + app={app} + destination={destination} + network={chainApp} + /> + ) : ( + <> +
+ + setDestination(_destination)}/> + + { + !destination && + } + { + setResponseBytes(response); + setDestination(window.localStorage.getItem("destination") as `0x${string}`); + }} + onResponse={(response) => { + const vaultId = response.proofs.find(proof => { + if (!proof.auths) return false; + if (proof.auths[0].authType === AuthType.VAULT) { + return true; + } + })?.auths[0]?.userId; + setVaultId(vaultId); + }} + /> + +
+
+ { alreadyMinted ? + { + const explorer = getErc721Explorer({contractAddress: ZK_BADGE_ADDRESSES[chainApp],network: chainApp}); + window.open(explorer, "_blank"); + }}> + Badge Already minted + + : + + { + isRelayed ? + + {minting ? "Minting..." : "Mint Badge"} + + : + + { + isConnected ? + <> + { + chain.id !== networkChainIds[chainApp] ? + <> + {isSwitchingNetwork ? "Switching Network..." : "Switch Network"} + + : + <> + {isLoadingTransaction || isLoadingWriteContract ? "Minting..." : "Mint Badge"} + + } + + : + <> + {connectModalOpen ? "Connecting wallet..." : "Connect Wallet"} + + } + + } + + {hash ? ( + { + window.open(getTxExplorer({ txHash:hash, network: chainApp}), "_blank"); + }} + > + Transaction hash: {getMinimalHash(hash)} + + + ) + : + router.push("/")}> + Back to App Store + + } + + + } +
+ { + error && {error} + } + {hasResponse && alreadyMinted && ( + + { + router.push("/"); + }} + secondary + > + Back to App Store + + + )} + + )} +
; } diff --git a/src/components/AppMain/Apps/ZkDropApp/utils/getMessageSignature.ts b/src/components/AppMain/Apps/ZkDropApp/utils/getMessageSignature.ts new file mode 100644 index 00000000..d48e50ec --- /dev/null +++ b/src/components/AppMain/Apps/ZkDropApp/utils/getMessageSignature.ts @@ -0,0 +1,12 @@ +import { encodeAbiParameters } from "viem"; + +export const getMessageSignature = ({ destination }: { + destination: `0x${string}` + }) => { + if (!destination) return ""; + + return encodeAbiParameters( + [{ type: "address", name: "destination" }], + [destination as `0x${string}`] + ); + }; \ No newline at end of file diff --git a/src/components/AppMain/index.tsx b/src/components/AppMain/index.tsx index b2d44f40..3377db00 100644 --- a/src/components/AppMain/index.tsx +++ b/src/components/AppMain/index.tsx @@ -12,6 +12,7 @@ import { redirect } from "next/navigation"; import Timer from "./Apps/components/Timer"; import { ZkAppType } from "@/src/services/spaces-service"; import ZkBadgeApp from "./Apps/ZkBadgeApp"; +import ZkDropApp from "./Apps/ZkDropApp"; const Container = styled.div` flex-grow: 1; @@ -207,6 +208,9 @@ export default function AppMain({ app, groupSnapshotMetadataList }: Props) { {app?.type == "zkBadge" && ( )} + {app?.type == "zkDrop" && ( + + )} )} diff --git a/src/environments.ts b/src/environments.ts index 5f989283..98834446 100644 --- a/src/environments.ts +++ b/src/environments.ts @@ -9,13 +9,27 @@ type Environment = { redirection: string; telegramBotToken: string; defenderAPIKeys: { - [network in Network]: { - key: string, - secret: string + zkDrop: { + [network in Network]: { + key: string, + secret: string + } + }, + zkBadge: { + [network in Network]: { + key: string, + secret: string + } } }, zkBadgeAddresses: { [network in Network]: `0x${string}` + }, + zkDropAddresses: { + [network in Network]: `0x${string}` + }, + pinata: { + jwtToken?: string } }; @@ -37,8 +51,15 @@ const env: Environment = { hubApiUrl: process.env.NEXT_PUBLIC_HUB_API_URL, redirection: process.env.NEXT_PUBLIC_REDIRECTION, telegramBotToken: process.env.TELEGRAM_BOT_TOKEN, - defenderAPIKeys: process.env.SH_RELAY_DEFENDER_API_KEYS && JSON.parse(process.env.SH_RELAY_DEFENDER_API_KEYS), + defenderAPIKeys: { + zkDrop: process.env.SH_ZK_DROP_RELAY_DEFENDER_API_KEYS && JSON.parse(process.env.SH_ZK_DROP_RELAY_DEFENDER_API_KEYS), + zkBadge: process.env.SH_ZK_BADGE_RELAY_DEFENDER_API_KEYS && JSON.parse(process.env.SH_ZK_BADGE_RELAY_DEFENDER_API_KEYS), + }, zkBadgeAddresses: process.env.NEXT_PUBLIC_ZK_BADGE_ADDRESSES && JSON.parse(process.env.NEXT_PUBLIC_ZK_BADGE_ADDRESSES), + zkDropAddresses: process.env.NEXT_PUBLIC_ZK_DROP_ADDRESSES && JSON.parse(process.env.NEXT_PUBLIC_ZK_DROP_ADDRESSES), + pinata: { + jwtToken: process.env.PINATA_JWT_TOKEN + } }; if (env.isDemo) { diff --git a/src/libs/contracts/networks.ts b/src/libs/contracts/networks.ts index c556b3ee..4c30a90f 100644 --- a/src/libs/contracts/networks.ts +++ b/src/libs/contracts/networks.ts @@ -41,7 +41,10 @@ export const explorers: { [network in Network]?: string } = { [Network.Gnosis]: "https://gnosisscan.io", [Network.Sepolia]: "https://sepolia.etherscan.io", [Network.Polygon]: "https://polygonscan.com", - [Network.Mainnet]: "https://etherscan.io" + [Network.Mainnet]: "https://etherscan.io", + [Network.Goerli]: "https://goerli.etherscan.io", + [Network.Optimism]: "https://optimistic.etherscan.io", + [Network.ArbitrumOne]: "https://arbiscan.io" }; export const getTxExplorer = ({ txHash, network }: { txHash: string, network: Network }) => { @@ -49,6 +52,10 @@ export const getTxExplorer = ({ txHash, network }: { txHash: string, network: Ne return `${explorers[network]}/tx/${txHash}`; } +export const getErc721Explorer = ({ contractAddress, network }: { contractAddress:string, network: Network }) => { + return "todo"; +} + export const getErc1155Explorer = ({ contractAddress, tokenId, network }: { contractAddress:string, tokenId: string, network: Network }) => { if (!explorers[network]) return null; return `${explorers[network]}/token/${contractAddress}?a=${tokenId}`; diff --git a/src/libs/contracts/providers.ts b/src/libs/contracts/providers.ts index f1bcdba7..3fb56115 100644 --- a/src/libs/contracts/providers.ts +++ b/src/libs/contracts/providers.ts @@ -16,6 +16,13 @@ export const getProvider = (network: Network): Provider => { ); providers.set(network, _provider); return _provider; + case Network.Sepolia: + _provider = new ethers.providers.JsonRpcProvider( + "https://sepolia.gateway.tenderly.co", + 11155111 + ); + providers.set(network, _provider); + return _provider; case Network.Gnosis: _provider = new ethers.providers.JsonRpcProvider( "https://rpc.gnosis.gateway.fm", @@ -23,5 +30,12 @@ export const getProvider = (network: Network): Provider => { ); providers.set(network, _provider); return _provider; + case Network.Polygon: + _provider = new ethers.providers.JsonRpcProvider( + "https://polygon-rpc.com", + 137 + ); + providers.set(network, _provider); + return _provider; } }; \ No newline at end of file diff --git a/src/libs/contracts/signers.ts b/src/libs/contracts/signers.ts index e35113e1..9e4280f7 100644 --- a/src/libs/contracts/signers.ts +++ b/src/libs/contracts/signers.ts @@ -4,19 +4,24 @@ import { } from "defender-relay-client/lib/ethers"; import { Network } from "./networks"; import { Signer } from "ethers"; -import env from "@/src/environments"; +type DefenderAPIKeys = { + [network in Network]: { + key: string, + secret: string + } +} -export const getDefenderRelayerSigner = (network: Network): Signer => { - if (!env.defenderAPIKeys) { +export const getDefenderRelayerSigner = (network: Network, defenderAPIKeys: DefenderAPIKeys): Signer => { + if (!defenderAPIKeys) { throw new Error( "SH_RELAY_DEFENDER_API_KEYS env variables missing." ); } const credentials = { - apiKey: env.defenderAPIKeys[network]?.key, - apiSecret: env.defenderAPIKeys[network]?.secret, + apiKey: defenderAPIKeys[network]?.key, + apiSecret: defenderAPIKeys[network]?.secret, }; const provider = new DefenderRelayProvider(credentials); diff --git a/src/libs/contracts/zk-drop/abi.json b/src/libs/contracts/zk-drop/abi.json new file mode 100644 index 00000000..c0821419 --- /dev/null +++ b/src/libs/contracts/zk-drop/abi.json @@ -0,0 +1,6797 @@ +{ + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "name_", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol_", + "type": "string" + }, + { + "internalType": "string", + "name": "baseURI_", + "type": "string" + }, + { + "internalType": "bytes16", + "name": "appId_", + "type": "bytes16" + }, + { + "internalType": "bool", + "name": "isImpersonationMode_", + "type": "bool" + }, + { + "components": [ + { + "internalType": "enum AuthType", + "name": "authType", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "userId", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "isAnon", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isOptional", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isSelectableByUser", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "extraData", + "type": "bytes" + } + ], + "internalType": "struct AuthRequest[]", + "name": "authRequests_", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "enum ClaimType", + "name": "claimType", + "type": "uint8" + }, + { + "internalType": "bytes16", + "name": "groupId", + "type": "bytes16" + }, + { + "internalType": "bytes16", + "name": "groupTimestamp", + "type": "bytes16" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "isOptional", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isSelectableByUser", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "extraData", + "type": "bytes" + } + ], + "internalType": "struct ClaimRequest[]", + "name": "claimRequests_", + "type": "tuple[]" + }, + { + "internalType": "address", + "name": "owner_", + "type": "address" + }, + { + "internalType": "bool", + "name": "isNonTransferable_", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "enum AuthType", + "name": "authType", + "type": "uint8" + } + ], + "name": "AuthTypeNotFoundInVerifiedResult", + "type": "error" + }, + { + "inputs": [ + + ], + "name": "ERC721NonTransferable", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "baseTokenURI", + "type": "string" + } + ], + "name": "BaseTokenURISet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + + ], + "name": "ADDRESSES_PROVIDER_V2", + "outputs": [ + { + "internalType": "contract IAddressesProvider", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + + ], + "name": "APP_ID", + "outputs": [ + { + "internalType": "bytes16", + "name": "", + "type": "bytes16" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + + ], + "name": "IMPLEMENTATION_VERSION", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + + ], + "name": "IS_IMPERSONATION_MODE", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + + ], + "name": "IS_NON_TRANSFERABLE", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + + ], + "name": "SISMO_CONNECT_LIB_VERSION", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "isSelectableByUser", + "type": "bool" + } + ], + "name": "buildSignature", + "outputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "message", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "isSelectableByUser", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "extraData", + "type": "bytes" + } + ], + "internalType": "struct SignatureRequest", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "message", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "extraData", + "type": "bytes" + } + ], + "name": "buildSignature", + "outputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "message", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "isSelectableByUser", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "extraData", + "type": "bytes" + } + ], + "internalType": "struct SignatureRequest", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "isSelectableByUser", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "extraData", + "type": "bytes" + } + ], + "name": "buildSignature", + "outputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "message", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "isSelectableByUser", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "extraData", + "type": "bytes" + } + ], + "internalType": "struct SignatureRequest", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "message", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "isSelectableByUser", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "extraData", + "type": "bytes" + } + ], + "name": "buildSignature", + "outputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "message", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "isSelectableByUser", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "extraData", + "type": "bytes" + } + ], + "internalType": "struct SignatureRequest", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "responseBytes", + "type": "bytes" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "claimWithSismoConnect", + "outputs": [ + + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + + ], + "name": "config", + "outputs": [ + { + "components": [ + { + "internalType": "bytes16", + "name": "appId", + "type": "bytes16" + }, + { + "components": [ + { + "internalType": "bool", + "name": "isImpersonationMode", + "type": "bool" + } + ], + "internalType": "struct VaultConfig", + "name": "vault", + "type": "tuple" + } + ], + "internalType": "struct SismoConnectConfig", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + + ], + "name": "getRequests", + "outputs": [ + { + "components": [ + { + "components": [ + { + "internalType": "enum AuthType", + "name": "authType", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "userId", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "isAnon", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isOptional", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isSelectableByUser", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "extraData", + "type": "bytes" + } + ], + "internalType": "struct AuthRequest[]", + "name": "auths", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "enum ClaimType", + "name": "claimType", + "type": "uint8" + }, + { + "internalType": "bytes16", + "name": "groupId", + "type": "bytes16" + }, + { + "internalType": "bytes16", + "name": "groupTimestamp", + "type": "bytes16" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "isOptional", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isSelectableByUser", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "extraData", + "type": "bytes" + } + ], + "internalType": "struct ClaimRequest[]", + "name": "claims", + "type": "tuple[]" + } + ], + "internalType": "struct ZKDrop.Requests", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + + ], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + + ], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + + ], + "name": "renounceOwnership", + "outputs": [ + + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [ + + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [ + + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [ + + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "baseUri", + "type": "string" + } + ], + "name": "setBaseTokenUri", + "outputs": [ + + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + + ], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [ + + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": { + "object": "0x6101806040523480156200001257600080fd5b50604051620046d5380380620046d5833981016040819052620000359162000ba7565b62000041868662000471565b8989600062000051838262000d62565b50600162000060828262000d62565b505081516001600160801b031916610120525060208082015151151561014052604080518082018252601981527f7369736d6f436f6e6e65637456657269666965722d76312e3100000000000000928101929092525163349f642f60e11b8152733cd5334eb64ebbd4003b72022cc25465f1bfcee69163693ec85e91620000eb919060040162000e2e565b602060405180830381865afa15801562000109573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200012f919062000e63565b6001600160a01b0316608052604080518082018252601781527f61757468526571756573744275696c6465722d76312e310000000000000000006020820152905163349f642f60e11b8152733cd5334eb64ebbd4003b72022cc25465f1bfcee69163693ec85e91620001a5919060040162000e2e565b602060405180830381865afa158015620001c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e9919062000e63565b6001600160a01b031660a052604080518082018252601881527f636c61696d526571756573744275696c6465722d76312e3100000000000000006020820152905163349f642f60e11b8152733cd5334eb64ebbd4003b72022cc25465f1bfcee69163693ec85e916200025f919060040162000e2e565b602060405180830381865afa1580156200027d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a3919062000e63565b6001600160a01b031660c052604080518082018252601581527f7369676e61747572654275696c6465722d76312e3100000000000000000000006020820152905163349f642f60e11b8152733cd5334eb64ebbd4003b72022cc25465f1bfcee69163693ec85e9162000319919060040162000e2e565b602060405180830381865afa15801562000337573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200035d919062000e63565b6001600160a01b031660e052604080518082018252601381527f726571756573744275696c6465722d76312e31000000000000000000000000006020820152905163349f642f60e11b8152733cd5334eb64ebbd4003b72022cc25465f1bfcee69163693ec85e91620003d3919060040162000e2e565b602060405180830381865afa158015620003f1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000417919062000e63565b6001600160a01b031661010052506200043033620004d3565b6200043b82620004d3565b620004468762000525565b620004518462000570565b6200045c8362000671565b1515610160525062000edc9650505050505050565b62000498604080518082018252600080825282516020818101909452908152909182015290565b506040805180820182526001600160801b03199390931683528051602080820183526000909152815180820190925291151581529082015290565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600762000533828262000d62565b507f2e9b34e5ec7377754a85ec13c1e9a442a00db0c46dbdefbb143dd0371fd20c1c8160405162000565919062000e2e565b60405180910390a150565b60005b81518110156200066d57600860000182828151811062000597576200059762000e88565b60209081029190910181015182546001818101855560009485529290932081516004909402018054919390929091839160ff1990911690836005811115620005e357620005e362000e9e565b0217905550602082015160018201556040820151600282018054606085015160808601511515620100000262ff0000199115156101000261ff00199515159590951661ffff1990931692909217939093179290921691909117905560a0820151600382019062000654908262000d62565b5050508080620006649062000eb4565b91505062000573565b5050565b60005b81518110156200066d57600860010182828151811062000698576200069862000e88565b60209081029190910181015182546001818101855560009485529290932081516005909402018054919390929091839160ff1990911690836004811115620006e457620006e462000e9e565b021790555060208201518154610100600160881b031916610100608092831c810291909117835560408401516001840180546001600160801b03191691841c919091179055606084015160028401559083015160038301805460a086015161ffff1990911692151561ff0019169290921791151590920217905560c0820151600482019062000774908262000d62565b5050508080620007849062000eb4565b91505062000674565b634e487b7160e01b600052604160045260246000fd5b60405160c081016001600160401b0381118282101715620007c857620007c86200078d565b60405290565b60405160e081016001600160401b0381118282101715620007c857620007c86200078d565b604051601f8201601f191681016001600160401b03811182821017156200081e576200081e6200078d565b604052919050565b60005b838110156200084357818101518382015260200162000829565b50506000910152565b600082601f8301126200085e57600080fd5b81516001600160401b038111156200087a576200087a6200078d565b6200088f601f8201601f1916602001620007f3565b818152846020838601011115620008a557600080fd5b620008b882602083016020870162000826565b949350505050565b80516001600160801b031981168114620008d957600080fd5b919050565b80518015158114620008d957600080fd5b60006001600160401b038211156200090b576200090b6200078d565b5060051b60200190565b600082601f8301126200092757600080fd5b81516020620009406200093a83620008ef565b620007f3565b82815260059290921b840181019181810190868411156200096057600080fd5b8286015b8481101562000a415780516001600160401b0380821115620009865760008081fd5b9088019060c0828b03601f1901811315620009a15760008081fd5b620009ab620007a3565b8784015160068110620009be5760008081fd5b8152604084810151898301526060620009d9818701620008de565b8284015260809150620009ee828701620008de565b9083015260a062000a01868201620008de565b8383015292850151928484111562000a1b57600091508182fd5b62000a2b8e8b868901016200084c565b9083015250865250505091830191830162000964565b509695505050505050565b805160058110620008d957600080fd5b600082601f83011262000a6e57600080fd5b8151602062000a816200093a83620008ef565b82815260059290921b8401810191818101908684111562000aa157600080fd5b8286015b8481101562000a415780516001600160401b038082111562000ac75760008081fd5b9088019060e0828b03601f190181131562000ae25760008081fd5b62000aec620007ce565b62000af988850162000a4c565b8152604062000b0a818601620008c0565b89830152606062000b1d818701620008c0565b828401526080915081860151818401525060a062000b3d818701620008de565b8284015260c0915062000b52828701620008de565b9083015291840151918383111562000b6a5760008081fd5b62000b7a8d8a858801016200084c565b90820152865250505091830191830162000aa5565b80516001600160a01b0381168114620008d957600080fd5b60008060008060008060008060006101208a8c03121562000bc757600080fd5b89516001600160401b038082111562000bdf57600080fd5b62000bed8d838e016200084c565b9a5060208c015191508082111562000c0457600080fd5b62000c128d838e016200084c565b995060408c015191508082111562000c2957600080fd5b62000c378d838e016200084c565b985062000c4760608d01620008c0565b975062000c5760808d01620008de565b965060a08c015191508082111562000c6e57600080fd5b62000c7c8d838e0162000915565b955060c08c015191508082111562000c9357600080fd5b5062000ca28c828d0162000a5c565b93505062000cb360e08b0162000b8f565b915062000cc46101008b01620008de565b90509295985092959850929598565b600181811c9082168062000ce857607f821691505b60208210810362000d0957634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000d5d57600081815260208120601f850160051c8101602086101562000d385750805b601f850160051c820191505b8181101562000d595782815560010162000d44565b5050505b505050565b81516001600160401b0381111562000d7e5762000d7e6200078d565b62000d968162000d8f845462000cd3565b8462000d0f565b602080601f83116001811462000dce576000841562000db55750858301515b600019600386901b1c1916600185901b17855562000d59565b600085815260208120601f198616915b8281101562000dff5788860151825594840194600190910190840162000dde565b508582101562000e1e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b602081526000825180602084015262000e4f81604085016020870162000826565b601f01601f19169190910160400192915050565b60006020828403121562000e7657600080fd5b62000e818262000b8f565b9392505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b60006001820162000ed557634e487b7160e01b600052601160045260246000fd5b5060010190565b60805160a05160c05160e0516101005161012051610140516101605161375a62000f7b600039600081816104210152818161100b0152818161123b0152611ba70152600081816103940152610cd30152600081816103e10152610cb201526000611b27015260008181610a6b01528181610b6201528181611143015281816111a901526113430152600050506000505060006113da015261375a6000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80638813ce1211610104578063c187bbc1116100a2578063cea8eb4e11610071578063cea8eb4e1461045e578063e068970314610471578063e985e9c514610484578063f2fde38b1461049757600080fd5b8063c187bbc1146103dc578063c4b2e8ff1461041c578063c87b56dd14610443578063c9512d991461045657600080fd5b806395d89b41116100de57806395d89b4114610387578063a183dc271461038f578063a22cb465146103b6578063b88d4fde146103c957600080fd5b80638813ce121461034e5780638da5cb5b1461036357806395652cfa1461037457600080fd5b8063469163011161017c57806370a082311161014b57806370a08231146102f6578063715018a614610317578063754b377c1461031f57806379502c551461033957600080fd5b8063469163011461029557806349161195146102b05780636352211e146102d05780636e01370e146102e357600080fd5b8063081812fc116101b8578063081812fc14610231578063095ea7b31461025c57806323b872dd1461026f57806342842e0e1461028257600080fd5b806301ffc9a7146101df57806306fdde031461020757806307c8064f1461021c575b600080fd5b6101f26101ed366004611e20565b6104aa565b60405190151581526020015b60405180910390f35b61020f6104fc565b6040516101fe9190611e8d565b61022f61022a366004612015565b61058e565b005b61024461023f366004612062565b6108a7565b6040516001600160a01b0390911681526020016101fe565b61022f61026a36600461207b565b6108ce565b61022f61027d3660046120a5565b6109e8565b61022f6102903660046120a5565b610a19565b610244733cd5334eb64ebbd4003b72022cc25465f1bfcee681565b6102c36102be3660046120ef565b610a34565b6040516101fe919061214f565b6102446102de366004612062565b610adb565b6102c36102f1366004612162565b610b3b565b6103096103043660046121c5565b610bed565b6040519081526020016101fe565b61022f610c73565b610327600181565b60405160ff90911681526020016101fe565b610341610c87565b6040516101fe91906121e0565b610356610cfc565b6040516101fe9190612386565b6006546001600160a01b0316610244565b61022f6103823660046123bf565b610fe6565b61020f610ffa565b6101f27f000000000000000000000000000000000000000000000000000000000000000081565b61022f6103c4366004612407565b611009565b61022f6103d736600461243e565b611056565b6104037f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160801b031990911681526020016101fe565b6101f27f000000000000000000000000000000000000000000000000000000000000000081565b61020f610451366004612062565b611088565b610309600281565b6102c361046c3660046124a5565b61111c565b6102c361047f3660046124ea565b611182565b6101f2610492366004612561565b611237565b61022f6104a53660046121c5565b6112a6565b60006001600160e01b031982166380ac58cd60e01b14806104db57506001600160e01b03198216635b5e139f60e01b145b806104f657506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461050b9061258b565b80601f01602080910402602001604051908101604052809291908181526020018280546105379061258b565b80156105845780601f1061055957610100808354040283529160200191610584565b820191906000526020600020905b81548152906001019060200180831161056757829003601f168201915b5050505050905090565b6008805460408051602080840282018101909252828152600093610887938793869084015b828210156106df576000848152602090206040805160c08101909152600484029091018054829060ff1660058111156105ee576105ee612204565b60058111156105ff576105ff612204565b815260018201546020820152600282015460ff80821615156040840152610100820481161515606084015262010000909104161515608082015260038201805460a09092019161064e9061258b565b80601f016020809104026020016040519081016040528092919081815260200182805461067a9061258b565b80156106c75780601f1061069c576101008083540402835291602001916106c7565b820191906000526020600020905b8154815290600101906020018083116106aa57829003601f168201915b505050505081525050815260200190600101906105b3565b505050506008600101805480602002602001604051908101604052809291908181526020016000905b82821015610851576000848152602090206040805160e08101909152600584029091018054829060ff16600481111561074357610743612204565b600481111561075457610754612204565b8152815461010090819004608090811b6001600160801b031990811660208501526001850154821b16604084015260028401546060840152600384015460ff8082161515928501929092529190910416151560a082015260048201805460c0909201916107c09061258b565b80601f01602080910402602001604051908101604052809291908181526020018280546107ec9061258b565b80156108395780601f1061080e57610100808354040283529160200191610839565b820191906000526020600020905b81548152906001019060200180831161081c57829003601f168201915b50505050508152505081526020019060010190610708565b5050604080516001600160a01b038a166020820152610882935001905060405160208183030381529060405261131c565b611380565b905060006108958282611481565b90506108a18382611534565b50505050565b60006108b2826116cd565b506000908152600460205260409020546001600160a01b031690565b60006108d982610adb565b9050806001600160a01b0316836001600160a01b03160361094b5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061096757506109678133611237565b6109d95760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610942565b6109e3838361172c565b505050565b6109f2338261179a565b610a0e5760405162461bcd60e51b8152600401610942906125c5565b6109e38383836117f8565b6109e383838360405180602001604052806000815250611056565b604080516060808201835280825260006020830152818301529051631f6c2b9760e11b815282151560048201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633ed8572e906024015b600060405180830381865afa158015610ab3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104f69190810190612701565b6000818152600260205260408120546001600160a01b0316806104f65760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610942565b604080516060808201835280825260006020830152818301529051631778ed1360e21b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635de3b44c90610ba19086908690600401612735565b600060405180830381865afa158015610bbe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610be69190810190612701565b9392505050565b60006001600160a01b038216610c575760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610942565b506001600160a01b031660009081526003602052604090205490565b610c7b611969565b610c8560006119c3565b565b610cad604080518082018252600080825282516020818101909452908152909182015290565b610cf77f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611a15565b905090565b6040805180820190915260608082526020820152604080516008805460606020820284018101855293830181815260009484928491879085015b82821015610e62576000848152602090206040805160c08101909152600484029091018054829060ff166005811115610d7157610d71612204565b6005811115610d8257610d82612204565b815260018201546020820152600282015460ff80821615156040840152610100820481161515606084015262010000909104161515608082015260038201805460a090920191610dd19061258b565b80601f0160208091040260200160405190810160405280929190818152602001828054610dfd9061258b565b8015610e4a5780601f10610e1f57610100808354040283529160200191610e4a565b820191906000526020600020905b815481529060010190602001808311610e2d57829003601f168201915b50505050508152505081526020019060010190610d36565b50505050815260200160018201805480602002602001604051908101604052809291908181526020016000905b82821015610fd8576000848152602090206040805160e08101909152600584029091018054829060ff166004811115610eca57610eca612204565b6004811115610edb57610edb612204565b8152815461010090819004608090811b6001600160801b031990811660208501526001850154821b16604084015260028401546060840152600384015460ff8082161515928501929092529190910416151560a082015260048201805460c090920191610f479061258b565b80601f0160208091040260200160405190810160405280929190818152602001828054610f739061258b565b8015610fc05780601f10610f9557610100808354040283529160200191610fc0565b820191906000526020600020905b815481529060010190602001808311610fa357829003601f168201915b50505050508152505081526020019060010190610e8f565b505050915250909392505050565b610fee611969565b610ff781611a83565b50565b60606001805461050b9061258b565b7f00000000000000000000000000000000000000000000000000000000000000001561104857604051632630e0df60e11b815260040160405180910390fd5b6110528282611aca565b5050565b611060338361179a565b61107c5760405162461bcd60e51b8152600401610942906125c5565b6108a184848484611ad5565b6060600780546110979061258b565b80601f01602080910402602001604051908101604052809291908181526020018280546110c39061258b565b80156111105780601f106110e557610100808354040283529160200191611110565b820191906000526020600020905b8154815290600101906020018083116110f357829003601f168201915b50505050509050919050565b604080516060808201835280825260006020830152818301529051631d1db46b60e21b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637476d1ac90610ba1908690869060040161275a565b604080516060808201835280825260006020830152818301529051631f785c9560e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690631f785c95906111ea90879087908790600401612775565b600060405180830381865afa158015611207573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261122f9190810190612701565b949350505050565b60007f00000000000000000000000000000000000000000000000000000000000000001561127857604051632630e0df60e11b815260040160405180910390fd5b6001600160a01b0380841660009081526005602090815260408083209386168352929052205460ff16610be6565b6112ae611969565b6001600160a01b0381166113135760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610942565b610ff7816119c3565b604080516060808201835280825260006020830152818301529051631a0d7ccb60e21b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636835f32c90610a96908590600401611e8d565b6040805160c0810182526000808252602082018190529181019190915260608082018190526080820181905260a08201526000858060200190518101906113c79190612a1a565b905060006113d6868686611b08565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166312b037ff8383611411610c87565b6040518463ffffffff1660e01b815260040161142f93929190612cf0565b6000604051808303816000875af115801561144e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261147691908101906130f6565b979650505050505050565b6000805b836060015151811015611518578260058111156114a4576114a4612204565b846060015182815181106114ba576114ba6131d6565b60200260200101516000015160058111156114d7576114d7612204565b0361150657836060015181815181106114f2576114f26131d6565b6020026020010151604001519150506104f6565b80611510816131ec565b915050611485565b508160405163267ac2cf60e01b81526004016109429190613213565b6001600160a01b03821661158a5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610942565b6000818152600260205260409020546001600160a01b0316156115ef5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610942565b6115fd600083836001611ba5565b6000818152600260205260409020546001600160a01b0316156116625760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610942565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000818152600260205260409020546001600160a01b0316610ff75760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610942565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061176182610adb565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806117a683610adb565b9050806001600160a01b0316846001600160a01b031614806117cd57506117cd8185611237565b8061122f5750836001600160a01b03166117e6846108a7565b6001600160a01b031614949350505050565b826001600160a01b031661180b82610adb565b6001600160a01b0316146118315760405162461bcd60e51b815260040161094290613221565b6001600160a01b0382166118935760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610942565b6118a08383836001611ba5565b826001600160a01b03166118b382610adb565b6001600160a01b0316146118d95760405162461bcd60e51b815260040161094290613221565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6006546001600160a01b03163314610c855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610942565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611a3b604080518082018252600080825282516020818101909452908152909182015290565b6040518060400160405280846001600160801b0319168152602001611a7a84604080516020808201835260009091528151908101909152901515815290565b90529392505050565b6007611a8f82826132b4565b507f2e9b34e5ec7377754a85ec13c1e9a442a00db0c46dbdefbb143dd0371fd20c1c81604051611abf9190611e8d565b60405180910390a150565b611052338383611be9565b611ae08484846117f8565b611aec84848484611cb7565b6108a15760405162461bcd60e51b815260040161094290613373565b611b10611dba565b604051634c92019b60e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639924033690611b60908790879087906004016133c5565b600060405180830381865afa158015611b7d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261122f9190810190613519565b7f000000000000000000000000000000000000000000000000000000000000000015611be457604051632630e0df60e11b815260040160405180910390fd5b6108a1565b816001600160a01b0316836001600160a01b031603611c4a5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610942565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b60006001600160a01b0384163b15611dad57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611cfb9033908990889088906004016136d4565b6020604051808303816000875af1925050508015611d36575060408051601f3d908101601f19168201909252611d3391810190613707565b60015b611d93573d808015611d64576040519150601f19603f3d011682016040523d82523d6000602084013e611d69565b606091505b508051600003611d8b5760405162461bcd60e51b815260040161094290613373565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061122f565b50600161122f565b905290565b604051806080016040528060006001600160801b03191681526020016060815260200160608152602001611db5604051806060016040528060608152602001600015158152602001606081525090565b6001600160e01b031981168114610ff757600080fd5b600060208284031215611e3257600080fd5b8135610be681611e0a565b60005b83811015611e58578181015183820152602001611e40565b50506000910152565b60008151808452611e79816020860160208601611e3d565b601f01601f19169290920160200192915050565b602081526000610be66020830184611e61565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b0381118282101715611ed857611ed8611ea0565b60405290565b60405160c081016001600160401b0381118282101715611ed857611ed8611ea0565b60405160e081016001600160401b0381118282101715611ed857611ed8611ea0565b604051608081016001600160401b0381118282101715611ed857611ed8611ea0565b604051601f8201601f191681016001600160401b0381118282101715611f6c57611f6c611ea0565b604052919050565b60006001600160401b03821115611f8d57611f8d611ea0565b50601f01601f191660200190565b6000611fae611fa984611f74565b611f44565b9050828152838383011115611fc257600080fd5b828260208301376000602084830101529392505050565b600082601f830112611fea57600080fd5b610be683833560208501611f9b565b80356001600160a01b038116811461201057600080fd5b919050565b6000806040838503121561202857600080fd5b82356001600160401b0381111561203e57600080fd5b61204a85828601611fd9565b92505061205960208401611ff9565b90509250929050565b60006020828403121561207457600080fd5b5035919050565b6000806040838503121561208e57600080fd5b61209783611ff9565b946020939093013593505050565b6000806000606084860312156120ba57600080fd5b6120c384611ff9565b92506120d160208501611ff9565b9150604084013590509250925092565b8015158114610ff757600080fd5b60006020828403121561210157600080fd5b8135610be6816120e1565b60008151606084526121216060850182611e61565b9050602083015115156020850152604083015184820360408601526121468282611e61565b95945050505050565b602081526000610be6602083018461210c565b6000806040838503121561217557600080fd5b82356001600160401b038082111561218c57600080fd5b61219886838701611fd9565b935060208501359150808211156121ae57600080fd5b506121bb85828601611fd9565b9150509250929050565b6000602082840312156121d757600080fd5b610be682611ff9565b81516001600160801b031916815260208083015151151590820152604081016104f6565b634e487b7160e01b600052602160045260246000fd5b6006811061222a5761222a612204565b9052565b600082825180855260208086019550808260051b84010181860160005b848110156122c357601f19868403018952815160c061226b85835161221a565b818601518587015260408083015115159086015260608083015115159086015260808083015115159086015260a0918201519185018190526122af81860183611e61565b9a86019a945050509083019060010161224b565b5090979650505050505050565b6005811061222a5761222a612204565b6000815180845260208085019450848260051b860182860160005b858110156122c3578383038952815160e06123178583516122d0565b818701516001600160801b031990811686890152604080840151909116908601526060808301519086015260808083015115159086015260a08083015115159086015260c09182015191850181905261237281860183611e61565b9a87019a94505050908401906001016122fb565b6020815260008251604060208401526123a2606084018261222e565b90506020840151601f1984830301604085015261214682826122e0565b6000602082840312156123d157600080fd5b81356001600160401b038111156123e757600080fd5b8201601f810184136123f857600080fd5b61122f84823560208401611f9b565b6000806040838503121561241a57600080fd5b61242383611ff9565b91506020830135612433816120e1565b809150509250929050565b6000806000806080858703121561245457600080fd5b61245d85611ff9565b935061246b60208601611ff9565b92506040850135915060608501356001600160401b0381111561248d57600080fd5b61249987828801611fd9565b91505092959194509250565b600080604083850312156124b857600080fd5b82356124c3816120e1565b915060208301356001600160401b038111156124de57600080fd5b6121bb85828601611fd9565b6000806000606084860312156124ff57600080fd5b83356001600160401b038082111561251657600080fd5b61252287838801611fd9565b945060208601359150612534826120e1565b9092506040850135908082111561254a57600080fd5b5061255786828701611fd9565b9150509250925092565b6000806040838503121561257457600080fd5b61257d83611ff9565b915061205960208401611ff9565b600181811c9082168061259f57607f821691505b6020821081036125bf57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b600082601f83011261262357600080fd5b8151612631611fa982611f74565b81815284602083860101111561264657600080fd5b61122f826020830160208701611e3d565b8051612010816120e1565b60006060828403121561267457600080fd5b604051606081016001600160401b03828210818311171561269757612697611ea0565b8160405282935084519150808211156126af57600080fd5b6126bb86838701612612565b8352602085015191506126cd826120e1565b81602084015260408501519150808211156126e757600080fd5b506126f485828601612612565b6040830152505092915050565b60006020828403121561271357600080fd5b81516001600160401b0381111561272957600080fd5b61122f84828501612662565b6040815260006127486040830185611e61565b82810360208401526121468185611e61565b821515815260406020820152600061122f6040830184611e61565b6060815260006127886060830186611e61565b841515602084015282810360408401526127a28185611e61565b9695505050505050565b80516001600160801b03198116811461201057600080fd5b60006001600160401b038211156127dd576127dd611ea0565b5060051b60200190565b80516006811061201057600080fd5b600082601f83011261280757600080fd5b81516020612817611fa9836127c4565b82815260059290921b8401810191818101908684111561283657600080fd5b8286015b848110156128f45780516001600160401b038082111561285a5760008081fd5b9088019060a0828b03601f19018113156128745760008081fd5b61287c611eb6565b6128878885016127e7565b8152604080850151612898816120e1565b828a01526060858101516128ab816120e1565b80838501525060809150818601518184015250828501519250838311156128d25760008081fd5b6128e08d8a85880101612612565b90820152865250505091830191830161283a565b509695505050505050565b80516005811061201057600080fd5b600082601f83011261291f57600080fd5b8151602061292f611fa9836127c4565b82815260059290921b8401810191818101908684111561294e57600080fd5b8286015b848110156128f45780516001600160401b03808211156129725760008081fd5b9088019060c0828b03601f190181131561298c5760008081fd5b612994611ede565b61299f8885016128ff565b815260406129ae8186016127ac565b8983015260606129bf8187016127ac565b8284015260809150818601516129d4816120e1565b9083015260a085810151828401529285015192848411156129f757600091508182fd5b612a058e8b86890101612612565b90830152508652505050918301918301612952565b60006020808385031215612a2d57600080fd5b82516001600160401b0380821115612a4457600080fd5b9084019060a08287031215612a5857600080fd5b612a60611eb6565b612a69836127ac565b8152612a768484016127ac565b8482015260408301516040820152606083015182811115612a9657600080fd5b612aa288828601612612565b60608301525060808084015183811115612abb57600080fd5b80850194505087601f850112612ad057600080fd5b8351612ade611fa9826127c4565b81815260059190911b8501860190868101908a831115612afd57600080fd5b8787015b83811015612be557805187811115612b195760008081fd5b880160a0818e03601f19011215612b305760008081fd5b612b38611eb6565b8a82015189811115612b4a5760008081fd5b612b588f8d838601016127f6565b825250604082015189811115612b6e5760008081fd5b612b7c8f8d8386010161290e565b8c83015250606082015160408201528682015189811115612b9d5760008081fd5b612bab8f8d83860101612612565b60608301525060a082015189811115612bc45760008081fd5b612bd28f8d83860101612612565b8289015250845250918801918801612b01565b50928401929092525090979650505050505050565b6000815180845260208085019450848260051b860182860160005b858110156122c3578383038952815160c0612c318583516122d0565b818701516001600160801b031990811686890152604080840151909116908601526060808301511515908601526080808301519086015260a091820151918501819052612c8081860183611e61565b9a87019a9450505090840190600101612c15565b6001600160801b031981511682526000602082015160806020850152612cbd608085018261222e565b905060408301518482036040860152612cd682826122e0565b91505060608301518482036060860152612146828261210c565b600060808083526001600160801b0319808751168285015260208088015182811660a087015250604088015191508160c08601526060880151915060a060e0860152612d40610120860183611e61565b88840151868203607f1901610100880152805180835291935082019082840190600581901b8501840160005b82811015612e7957601f198783030184528451805160a0808552815190850181905260c0600582901b86018101928a01919086019060005b81811015612e0e5760bf198886030183528351612dc286825161221a565b8c81015115158d870152604081015115156040870152606081015160608701528e810151905060a08f870152612dfb60a0870182611e61565b955050928b0192918b0191600101612da4565b505050508782015184820389860152612e278282612bfa565b9150506040820151604085015260608201518482036060860152612e4b8282611e61565b9150508982015191508381038a850152612e658183611e61565b968801969588019593505050600101612d6c565b50888103858a0152612e8b818c612c94565b8a516001600160801b03191660408b015260208b015151151560608b0152975061122f9650505050505050565b600082601f830112612ec957600080fd5b81516020612ed9611fa9836127c4565b82815260059290921b84018101918181019086841115612ef857600080fd5b8286015b848110156128f45780516001600160401b0380821115612f1c5760008081fd5b9088019060a0828b03601f1901811315612f365760008081fd5b612f3e611eb6565b612f498885016127e7565b8152604080850151612f5a816120e1565b808a8401525060608086015182840152608091508186015185811115612f805760008081fd5b612f8e8f8c838a0101612612565b82850152505082850151925083831115612fa85760008081fd5b612fb68d8a85880101612612565b908201528652505050918301918301612efc565b600082601f830112612fdb57600080fd5b81516020612feb611fa9836127c4565b82815260059290921b8401810191818101908684111561300a57600080fd5b8286015b848110156128f45780516001600160401b038082111561302e5760008081fd5b9088019060e0828b03601f19018113156130485760008081fd5b613050611f00565b61305b8885016128ff565b8152604061306a8186016127ac565b89830152606061307b8187016127ac565b828401526080915081860151818401525060a080860151858111156130a05760008081fd5b6130ae8f8c838a0101612612565b838501525060c09150818601518184015250828501519250838311156130d45760008081fd5b6130e28d8a85880101612612565b90820152865250505091830191830161300e565b60006020828403121561310857600080fd5b81516001600160401b038082111561311f57600080fd5b9083019060c0828603121561313357600080fd5b61313b611ede565b613144836127ac565b8152613152602084016127ac565b60208201526040830151604082015260608301518281111561317357600080fd5b61317f87828601612eb8565b60608301525060808301518281111561319757600080fd5b6131a387828601612fca565b60808301525060a0830151828111156131bb57600080fd5b6131c787828601612612565b60a08301525095945050505050565b634e487b7160e01b600052603260045260246000fd5b60006001820161320c57634e487b7160e01b600052601160045260246000fd5b5060010190565b602081016104f6828461221a565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b601f8211156109e357600081815260208120601f850160051c8101602086101561328d5750805b601f850160051c820191505b818110156132ac57828155600101613299565b505050505050565b81516001600160401b038111156132cd576132cd611ea0565b6132e1816132db845461258b565b84613266565b602080601f83116001811461331657600084156132fe5750858301515b600019600386901b1c1916600185901b1785556132ac565b600085815260208120601f198616915b8281101561334557888601518255948401946001909101908401613326565b50858210156133635787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6060815260006133d8606083018661222e565b82810360208401526133ea81866122e0565b905082810360408401526127a2818561210c565b600082601f83011261340f57600080fd5b8151602061341f611fa9836127c4565b82815260059290921b8401810191818101908684111561343e57600080fd5b8286015b848110156128f45780516001600160401b03808211156134625760008081fd5b9088019060e0828b03601f190181131561347c5760008081fd5b613484611f00565b61348f8885016128ff565b8152604061349e8186016127ac565b8983015260606134af8187016127ac565b828401526080915081860151818401525060a06134cd818701612657565b8284015260c091506134e0828701612657565b908301529184015191838311156134f75760008081fd5b6135058d8a85880101612612565b908201528652505050918301918301613442565b6000602080838503121561352c57600080fd5b82516001600160401b038082111561354357600080fd5b908401906080828703121561355757600080fd5b61355f611f22565b613568836127ac565b8152838301518281111561357b57600080fd5b8301601f8101881361358c57600080fd5b805161359a611fa9826127c4565b81815260059190911b8201860190868101908a8311156135b957600080fd5b8784015b83811015613676578051878111156135d457600080fd5b850160c0818e03601f190112156135ea57600080fd5b6135f2611ede565b6135fd8b83016127e7565b815260408201518b8201526060820151613616816120e1565b60408201526080820151613629816120e1565b606082015260a082015161363c816120e1565b608082015260c0820151898111156136545760008081fd5b6136628f8d83860101612612565b60a0830152508452509188019188016135bd565b50808886015250505050604083015193508184111561369457600080fd5b6136a0878585016133fe565b604082015260608301519350818411156136b957600080fd5b6136c587858501612662565b60608201529695505050505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906127a290830184611e61565b60006020828403121561371957600080fd5b8151610be681611e0a56fea2646970667358221220951f770327b0f3c4c923ab0c5ab39b6259e0990664bc13501bf0f2c1cf10535864736f6c63430008140033", + "sourceMap": "223:3262:54:-:0;;;654:534;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;968:41;980:6;988:20;968:11;:41::i;:::-;939:5;946:7;1456:5:26;:13;939:5:54;1456::26;:13;:::i;:::-;-1:-1:-1;1479:7:26;:17;1489:7;1479;:17;:::i;:::-;-1:-1:-1;;1540:13:41;;-1:-1:-1;;;;;;1531:22:41;;;-1:-1:-1;1583:13:41;;;;;:33;1559:57;;;;1702:35;;;;;;;;;;;;;;;;;;;1676:62;-1:-1:-1;;;1676:62:41;;1054:42;;1676:25;;:62;;1702:35;1676:62;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1623:121:41;;;1850:33;;;;;;;;;;;;;;;;1824:60;;-1:-1:-1;;;1824:60:41;;1054:42;;1824:25;;:60;;1850:33;1824:60;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1776:114:41;;;1972:34;;;;;;;;;;;;;;;;1946:61;;-1:-1:-1;;;1946:61:41;;1054:42;;1946:25;;:61;;1972:34;1946:61;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1896:117:41;;;2089:31;;;;;;;;;;;;;;;;2063:58;;-1:-1:-1;;;2063:58:41;;1054:42;;2063:25;;:58;;2089:31;2063:58;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2019:108:41;;;2192:29;;;;;;;;;;;;;;;;2166:56;;-1:-1:-1;;;2166:56:41;;1054:42;;2166:25;;:56;;2192:29;2166:56;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2133:90:41;;;-1:-1:-1;936:32:18;719:10:31;936:18:18;:32::i;:::-;1017:26:54::2;1036:6:::0;1017:18:::2;:26::i;:::-;1049;1066:8:::0;1049:16:::2;:26::i;:::-;1081:24;1091:13:::0;1081:9:::2;:24::i;:::-;1111:26;1122:14:::0;1111:10:::2;:26::i;:::-;1143:40;;;::::0;-1:-1:-1;223:3262:54;;-1:-1:-1;;;;;;;223:3262:54;2632:222:41;2729:25;223:3262:54;;;;;;;;-1:-1:-1;223:3262:54;;;;;;;;;;;;;;;;;;;;;;2729:25:41;-1:-1:-1;2769:80:41;;;;;;;;-1:-1:-1;;;;;;2769:80:41;;;;;;223:3262:54;;2769:80:41;223:3262:54;;;;;-1:-1:-1;223:3262:54;;;3100:55:41;;;;;;;;;;;;;2769:80;;;;;2632:222::o;2426:187:18:-;2518:6;;;-1:-1:-1;;;;;2534:17:18;;;-1:-1:-1;;;;;;2534:17:18;;;;;;;2566:40;;2518:6;;;2534:17;2518:6;;2566:40;;2499:16;;2566:40;2489:124;2426:187;:::o;2258:126:54:-;2321:13;:23;2337:7;2321:13;:23;:::i;:::-;;2355:24;2371:7;2355:24;;;;;;:::i;:::-;;;;;;;;2258:126;:::o;1932:156::-;1999:9;1994:90;2018:6;:13;2014:1;:17;1994:90;;;2046:9;:15;;2067:6;2074:1;2067:9;;;;;;;;:::i;:::-;;;;;;;;;;;;2046:31;;;;;;;;-1:-1:-1;2046:31:54;;;;;;;;;;;;;;;;2067:9;;2046:31;;;;;;-1:-1:-1;;2046:31:54;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;2046:31:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2046:31:54;;;;;-1:-1:-1;;2046:31:54;;;;;;;-1:-1:-1;;2046:31:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;2033:3;;;;;:::i;:::-;;;;1994:90;;;;1932:156;:::o;2092:162::-;2162:9;2157:93;2181:7;:14;2177:1;:18;2157:93;;;2210:9;:16;;2232:7;2240:1;2232:10;;;;;;;;:::i;:::-;;;;;;;;;;;;2210:33;;;;;;;;-1:-1:-1;2210:33:54;;;;;;;;;;;;;;;;2232:10;;2210:33;;;;;;-1:-1:-1;;2210:33:54;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;2210:33:54;;;;;;-1:-1:-1;;;;;;2210:33:54;;;;;;;;;;;;;;;;;;-1:-1:-1;2210:33:54;;;;-1:-1:-1;;;;;;2210:33:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2210:33:54;;;;;;-1:-1:-1;;2210:33:54;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;2197:3;;;;;:::i;:::-;;;;2157:93;;14:127:57;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:253;218:2;212:9;260:4;248:17;;-1:-1:-1;;;;;280:34:57;;316:22;;;277:62;274:88;;;342:18;;:::i;:::-;378:2;371:22;146:253;:::o;404:::-;476:2;470:9;518:4;506:17;;-1:-1:-1;;;;;538:34:57;;574:22;;;535:62;532:88;;;600:18;;:::i;662:275::-;733:2;727:9;798:2;779:13;;-1:-1:-1;;775:27:57;763:40;;-1:-1:-1;;;;;818:34:57;;854:22;;;815:62;812:88;;;880:18;;:::i;:::-;916:2;909:22;662:275;;-1:-1:-1;662:275:57:o;942:250::-;1027:1;1037:113;1051:6;1048:1;1045:13;1037:113;;;1127:11;;;1121:18;1108:11;;;1101:39;1073:2;1066:10;1037:113;;;-1:-1:-1;;1184:1:57;1166:16;;1159:27;942:250::o;1197:510::-;1251:5;1304:3;1297:4;1289:6;1285:17;1281:27;1271:55;;1322:1;1319;1312:12;1271:55;1345:13;;-1:-1:-1;;;;;1370:26:57;;1367:52;;;1399:18;;:::i;:::-;1443:55;1486:2;1467:13;;-1:-1:-1;;1463:27:57;1492:4;1459:38;1443:55;:::i;:::-;1523:2;1514:7;1507:19;1569:3;1562:4;1557:2;1549:6;1545:15;1541:26;1538:35;1535:55;;;1586:1;1583;1576:12;1535:55;1599:77;1673:2;1666:4;1657:7;1653:18;1646:4;1638:6;1634:17;1599:77;:::i;:::-;1694:7;1197:510;-1:-1:-1;;;;1197:510:57:o;1712:182::-;1791:13;;-1:-1:-1;;;;;;1833:36:57;;1823:47;;1813:75;;1884:1;1881;1874:12;1813:75;1712:182;;;:::o;1899:164::-;1975:13;;2024;;2017:21;2007:32;;1997:60;;2053:1;2050;2043:12;2068:194;2139:4;-1:-1:-1;;;;;2161:30:57;;2158:56;;;2194:18;;:::i;:::-;-1:-1:-1;2239:1:57;2235:14;2251:4;2231:25;;2068:194::o;2267:2008::-;2343:5;2396:3;2389:4;2381:6;2377:17;2373:27;2363:55;;2414:1;2411;2404:12;2363:55;2443:6;2437:13;2469:4;2493:71;2509:54;2560:2;2509:54;:::i;:::-;2493:71;:::i;:::-;2598:15;;;2684:1;2680:10;;;;2668:23;;2664:32;;;2629:12;;;;2708:15;;;2705:35;;;2736:1;2733;2726:12;2705:35;2772:2;2764:6;2760:15;2784:1462;2800:6;2795:3;2792:15;2784:1462;;;2873:10;;-1:-1:-1;;;;;2940:19:57;;;2937:109;;;3000:1;3029:2;3025;3018:14;2937:109;3069:24;;;;3116:4;3144:12;;;-1:-1:-1;;3140:26:57;3136:35;-1:-1:-1;3133:125:57;;;3212:1;3241:2;3237;3230:14;3133:125;3284:22;;:::i;:::-;3348:2;3344;3340:11;3334:18;3387:1;3378:7;3375:14;3365:112;;3431:1;3460:2;3456;3449:14;3365:112;3490:22;;3535:2;3579:11;;;3573:18;3557:14;;;3550:42;3616:2;3654:40;3681:12;;;3654:40;:::i;:::-;3649:2;3642:5;3638:14;3631:64;3719:3;3708:14;;3759:40;3794:3;3790:2;3786:12;3759:40;:::i;:::-;3742:15;;;3735:65;3824:3;3864:40;3891:12;;;3864:40;:::i;:::-;3847:15;;;3840:65;3940:11;;;3934:18;;3968:16;;;3965:109;;;4026:1;4015:12;;4056:3;4051;4044:16;3965:109;4111:61;4168:3;4163:2;4152:8;4148:2;4144:17;4140:26;4111:61;:::i;:::-;4094:15;;;4087:86;-1:-1:-1;4186:18:57;;-1:-1:-1;;;4224:12:57;;;;2817;;2784:1462;;;-1:-1:-1;4264:5:57;2267:2008;-1:-1:-1;;;;;;2267:2008:57:o;4280:154::-;4366:13;;4408:1;4398:12;;4388:40;;4424:1;4421;4414:12;4439:1988;4516:5;4569:3;4562:4;4554:6;4550:17;4546:27;4536:55;;4587:1;4584;4577:12;4536:55;4616:6;4610:13;4642:4;4666:71;4682:54;4733:2;4682:54;:::i;4666:71::-;4771:15;;;4857:1;4853:10;;;;4841:23;;4837:32;;;4802:12;;;;4881:15;;;4878:35;;;4909:1;4906;4899:12;4878:35;4945:2;4937:6;4933:15;4957:1441;4973:6;4968:3;4965:15;4957:1441;;;5046:10;;-1:-1:-1;;;;;5113:19:57;;;5110:109;;;5173:1;5202:2;5198;5191:14;5110:109;5242:24;;;;5289:4;5317:12;;;-1:-1:-1;;5313:26:57;5309:35;-1:-1:-1;5306:125:57;;;5385:1;5414:2;5410;5403:14;5306:125;5457:22;;:::i;:::-;5506:49;5551:2;5547;5543:11;5506:49;:::i;:::-;5499:5;5492:64;5579:2;5617:42;5655:2;5651;5647:11;5617:42;:::i;:::-;5612:2;5605:5;5601:14;5594:66;5683:2;5721:42;5759:2;5755;5751:11;5721:42;:::i;:::-;5716:2;5709:5;5705:14;5698:66;5788:3;5777:14;;5841:3;5837:2;5833:12;5827:19;5822:2;5815:5;5811:14;5804:43;;5871:3;5911:40;5946:3;5942:2;5938:12;5911:40;:::i;:::-;5905:3;5898:5;5894:15;5887:65;5976:3;5965:14;;6016:40;6051:3;6047:2;6043:12;6016:40;:::i;:::-;5999:15;;;5992:65;6092:11;;;6086:18;;6120:16;;;6117:109;;;6178:1;6208:3;6203;6196:16;6117:109;6263:61;6320:3;6315:2;6304:8;6300:2;6296:17;6292:26;6263:61;:::i;:::-;6246:15;;;6239:86;6338:18;;-1:-1:-1;;;6376:12:57;;;;4990;;4957:1441;;6432:177;6511:13;;-1:-1:-1;;;;;6553:31:57;;6543:42;;6533:70;;6599:1;6596;6589:12;6614:1644;6891:6;6899;6907;6915;6923;6931;6939;6947;6955;7008:3;6996:9;6987:7;6983:23;6979:33;6976:53;;;7025:1;7022;7015:12;6976:53;7052:16;;-1:-1:-1;;;;;7117:14:57;;;7114:34;;;7144:1;7141;7134:12;7114:34;7167:61;7220:7;7211:6;7200:9;7196:22;7167:61;:::i;:::-;7157:71;;7274:2;7263:9;7259:18;7253:25;7237:41;;7303:2;7293:8;7290:16;7287:36;;;7319:1;7316;7309:12;7287:36;7342:63;7397:7;7386:8;7375:9;7371:24;7342:63;:::i;:::-;7332:73;;7451:2;7440:9;7436:18;7430:25;7414:41;;7480:2;7470:8;7467:16;7464:36;;;7496:1;7493;7486:12;7464:36;7519:63;7574:7;7563:8;7552:9;7548:24;7519:63;:::i;:::-;7509:73;;7601:49;7646:2;7635:9;7631:18;7601:49;:::i;:::-;7591:59;;7669:47;7711:3;7700:9;7696:19;7669:47;:::i;:::-;7659:57;;7762:3;7751:9;7747:19;7741:26;7725:42;;7792:2;7782:8;7779:16;7776:36;;;7808:1;7805;7798:12;7776:36;7831:85;7908:7;7897:8;7886:9;7882:24;7831:85;:::i;:::-;7821:95;;7962:3;7951:9;7947:19;7941:26;7925:42;;7992:2;7982:8;7979:16;7976:36;;;8008:1;8005;7998:12;7976:36;;8031:86;8109:7;8098:8;8087:9;8083:24;8031:86;:::i;:::-;8021:96;;;8136:50;8181:3;8170:9;8166:19;8136:50;:::i;:::-;8126:60;;8205:47;8247:3;8236:9;8232:19;8205:47;:::i;:::-;8195:57;;6614:1644;;;;;;;;;;;:::o;8263:380::-;8342:1;8338:12;;;;8385;;;8406:61;;8460:4;8452:6;8448:17;8438:27;;8406:61;8513:2;8505:6;8502:14;8482:18;8479:38;8476:161;;8559:10;8554:3;8550:20;8547:1;8540:31;8594:4;8591:1;8584:15;8622:4;8619:1;8612:15;8476:161;;8263:380;;;:::o;8774:545::-;8876:2;8871:3;8868:11;8865:448;;;8912:1;8937:5;8933:2;8926:17;8982:4;8978:2;8968:19;9052:2;9040:10;9036:19;9033:1;9029:27;9023:4;9019:38;9088:4;9076:10;9073:20;9070:47;;;-1:-1:-1;9111:4:57;9070:47;9166:2;9161:3;9157:12;9154:1;9150:20;9144:4;9140:31;9130:41;;9221:82;9239:2;9232:5;9229:13;9221:82;;;9284:17;;;9265:1;9254:13;9221:82;;;9225:3;;;8865:448;8774:545;;;:::o;9495:1352::-;9615:10;;-1:-1:-1;;;;;9637:30:57;;9634:56;;;9670:18;;:::i;:::-;9699:97;9789:6;9749:38;9781:4;9775:11;9749:38;:::i;:::-;9743:4;9699:97;:::i;:::-;9851:4;;9915:2;9904:14;;9932:1;9927:663;;;;10634:1;10651:6;10648:89;;;-1:-1:-1;10703:19:57;;;10697:26;10648:89;-1:-1:-1;;9452:1:57;9448:11;;;9444:24;9440:29;9430:40;9476:1;9472:11;;;9427:57;10750:81;;9897:944;;9927:663;8721:1;8714:14;;;8758:4;8745:18;;-1:-1:-1;;9963:20:57;;;10081:236;10095:7;10092:1;10089:14;10081:236;;;10184:19;;;10178:26;10163:42;;10276:27;;;;10244:1;10232:14;;;;10111:19;;10081:236;;;10085:3;10345:6;10336:7;10333:19;10330:201;;;10406:19;;;10400:26;-1:-1:-1;;10489:1:57;10485:14;;;10501:3;10481:24;10477:37;10473:42;10458:58;10443:74;;10330:201;-1:-1:-1;;;;;10577:1:57;10561:14;;;10557:22;10544:36;;-1:-1:-1;9495:1352:57:o;10852:396::-;11001:2;10990:9;10983:21;10964:4;11033:6;11027:13;11076:6;11071:2;11060:9;11056:18;11049:34;11092:79;11164:6;11159:2;11148:9;11144:18;11139:2;11131:6;11127:15;11092:79;:::i;:::-;11232:2;11211:15;-1:-1:-1;;11207:29:57;11192:45;;;;11239:2;11188:54;;10852:396;-1:-1:-1;;10852:396:57:o;11253:208::-;11323:6;11376:2;11364:9;11355:7;11351:23;11347:32;11344:52;;;11392:1;11389;11382:12;11344:52;11415:40;11445:9;11415:40;:::i;:::-;11405:50;11253:208;-1:-1:-1;;;11253:208:57:o;11466:127::-;11527:10;11522:3;11518:20;11515:1;11508:31;11558:4;11555:1;11548:15;11582:4;11579:1;11572:15;11598:127;11659:10;11654:3;11650:20;11647:1;11640:31;11690:4;11687:1;11680:15;11714:4;11711:1;11704:15;13085:232;13124:3;13145:17;;;13142:140;;13204:10;13199:3;13195:20;13192:1;13185:31;13239:4;13236:1;13229:15;13267:4;13264:1;13257:15;13142:140;-1:-1:-1;13309:1:57;13298:13;;13085:232::o;:::-;223:3262:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", + "linkReferences": { + + } + }, + "deployedBytecode": { + "object": "0x608060405234801561001057600080fd5b50600436106101da5760003560e01c80638813ce1211610104578063c187bbc1116100a2578063cea8eb4e11610071578063cea8eb4e1461045e578063e068970314610471578063e985e9c514610484578063f2fde38b1461049757600080fd5b8063c187bbc1146103dc578063c4b2e8ff1461041c578063c87b56dd14610443578063c9512d991461045657600080fd5b806395d89b41116100de57806395d89b4114610387578063a183dc271461038f578063a22cb465146103b6578063b88d4fde146103c957600080fd5b80638813ce121461034e5780638da5cb5b1461036357806395652cfa1461037457600080fd5b8063469163011161017c57806370a082311161014b57806370a08231146102f6578063715018a614610317578063754b377c1461031f57806379502c551461033957600080fd5b8063469163011461029557806349161195146102b05780636352211e146102d05780636e01370e146102e357600080fd5b8063081812fc116101b8578063081812fc14610231578063095ea7b31461025c57806323b872dd1461026f57806342842e0e1461028257600080fd5b806301ffc9a7146101df57806306fdde031461020757806307c8064f1461021c575b600080fd5b6101f26101ed366004611e20565b6104aa565b60405190151581526020015b60405180910390f35b61020f6104fc565b6040516101fe9190611e8d565b61022f61022a366004612015565b61058e565b005b61024461023f366004612062565b6108a7565b6040516001600160a01b0390911681526020016101fe565b61022f61026a36600461207b565b6108ce565b61022f61027d3660046120a5565b6109e8565b61022f6102903660046120a5565b610a19565b610244733cd5334eb64ebbd4003b72022cc25465f1bfcee681565b6102c36102be3660046120ef565b610a34565b6040516101fe919061214f565b6102446102de366004612062565b610adb565b6102c36102f1366004612162565b610b3b565b6103096103043660046121c5565b610bed565b6040519081526020016101fe565b61022f610c73565b610327600181565b60405160ff90911681526020016101fe565b610341610c87565b6040516101fe91906121e0565b610356610cfc565b6040516101fe9190612386565b6006546001600160a01b0316610244565b61022f6103823660046123bf565b610fe6565b61020f610ffa565b6101f27f000000000000000000000000000000000000000000000000000000000000000081565b61022f6103c4366004612407565b611009565b61022f6103d736600461243e565b611056565b6104037f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160801b031990911681526020016101fe565b6101f27f000000000000000000000000000000000000000000000000000000000000000081565b61020f610451366004612062565b611088565b610309600281565b6102c361046c3660046124a5565b61111c565b6102c361047f3660046124ea565b611182565b6101f2610492366004612561565b611237565b61022f6104a53660046121c5565b6112a6565b60006001600160e01b031982166380ac58cd60e01b14806104db57506001600160e01b03198216635b5e139f60e01b145b806104f657506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461050b9061258b565b80601f01602080910402602001604051908101604052809291908181526020018280546105379061258b565b80156105845780601f1061055957610100808354040283529160200191610584565b820191906000526020600020905b81548152906001019060200180831161056757829003601f168201915b5050505050905090565b6008805460408051602080840282018101909252828152600093610887938793869084015b828210156106df576000848152602090206040805160c08101909152600484029091018054829060ff1660058111156105ee576105ee612204565b60058111156105ff576105ff612204565b815260018201546020820152600282015460ff80821615156040840152610100820481161515606084015262010000909104161515608082015260038201805460a09092019161064e9061258b565b80601f016020809104026020016040519081016040528092919081815260200182805461067a9061258b565b80156106c75780601f1061069c576101008083540402835291602001916106c7565b820191906000526020600020905b8154815290600101906020018083116106aa57829003601f168201915b505050505081525050815260200190600101906105b3565b505050506008600101805480602002602001604051908101604052809291908181526020016000905b82821015610851576000848152602090206040805160e08101909152600584029091018054829060ff16600481111561074357610743612204565b600481111561075457610754612204565b8152815461010090819004608090811b6001600160801b031990811660208501526001850154821b16604084015260028401546060840152600384015460ff8082161515928501929092529190910416151560a082015260048201805460c0909201916107c09061258b565b80601f01602080910402602001604051908101604052809291908181526020018280546107ec9061258b565b80156108395780601f1061080e57610100808354040283529160200191610839565b820191906000526020600020905b81548152906001019060200180831161081c57829003601f168201915b50505050508152505081526020019060010190610708565b5050604080516001600160a01b038a166020820152610882935001905060405160208183030381529060405261131c565b611380565b905060006108958282611481565b90506108a18382611534565b50505050565b60006108b2826116cd565b506000908152600460205260409020546001600160a01b031690565b60006108d982610adb565b9050806001600160a01b0316836001600160a01b03160361094b5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061096757506109678133611237565b6109d95760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610942565b6109e3838361172c565b505050565b6109f2338261179a565b610a0e5760405162461bcd60e51b8152600401610942906125c5565b6109e38383836117f8565b6109e383838360405180602001604052806000815250611056565b604080516060808201835280825260006020830152818301529051631f6c2b9760e11b815282151560048201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633ed8572e906024015b600060405180830381865afa158015610ab3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104f69190810190612701565b6000818152600260205260408120546001600160a01b0316806104f65760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610942565b604080516060808201835280825260006020830152818301529051631778ed1360e21b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635de3b44c90610ba19086908690600401612735565b600060405180830381865afa158015610bbe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610be69190810190612701565b9392505050565b60006001600160a01b038216610c575760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610942565b506001600160a01b031660009081526003602052604090205490565b610c7b611969565b610c8560006119c3565b565b610cad604080518082018252600080825282516020818101909452908152909182015290565b610cf77f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611a15565b905090565b6040805180820190915260608082526020820152604080516008805460606020820284018101855293830181815260009484928491879085015b82821015610e62576000848152602090206040805160c08101909152600484029091018054829060ff166005811115610d7157610d71612204565b6005811115610d8257610d82612204565b815260018201546020820152600282015460ff80821615156040840152610100820481161515606084015262010000909104161515608082015260038201805460a090920191610dd19061258b565b80601f0160208091040260200160405190810160405280929190818152602001828054610dfd9061258b565b8015610e4a5780601f10610e1f57610100808354040283529160200191610e4a565b820191906000526020600020905b815481529060010190602001808311610e2d57829003601f168201915b50505050508152505081526020019060010190610d36565b50505050815260200160018201805480602002602001604051908101604052809291908181526020016000905b82821015610fd8576000848152602090206040805160e08101909152600584029091018054829060ff166004811115610eca57610eca612204565b6004811115610edb57610edb612204565b8152815461010090819004608090811b6001600160801b031990811660208501526001850154821b16604084015260028401546060840152600384015460ff8082161515928501929092529190910416151560a082015260048201805460c090920191610f479061258b565b80601f0160208091040260200160405190810160405280929190818152602001828054610f739061258b565b8015610fc05780601f10610f9557610100808354040283529160200191610fc0565b820191906000526020600020905b815481529060010190602001808311610fa357829003601f168201915b50505050508152505081526020019060010190610e8f565b505050915250909392505050565b610fee611969565b610ff781611a83565b50565b60606001805461050b9061258b565b7f00000000000000000000000000000000000000000000000000000000000000001561104857604051632630e0df60e11b815260040160405180910390fd5b6110528282611aca565b5050565b611060338361179a565b61107c5760405162461bcd60e51b8152600401610942906125c5565b6108a184848484611ad5565b6060600780546110979061258b565b80601f01602080910402602001604051908101604052809291908181526020018280546110c39061258b565b80156111105780601f106110e557610100808354040283529160200191611110565b820191906000526020600020905b8154815290600101906020018083116110f357829003601f168201915b50505050509050919050565b604080516060808201835280825260006020830152818301529051631d1db46b60e21b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637476d1ac90610ba1908690869060040161275a565b604080516060808201835280825260006020830152818301529051631f785c9560e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690631f785c95906111ea90879087908790600401612775565b600060405180830381865afa158015611207573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261122f9190810190612701565b949350505050565b60007f00000000000000000000000000000000000000000000000000000000000000001561127857604051632630e0df60e11b815260040160405180910390fd5b6001600160a01b0380841660009081526005602090815260408083209386168352929052205460ff16610be6565b6112ae611969565b6001600160a01b0381166113135760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610942565b610ff7816119c3565b604080516060808201835280825260006020830152818301529051631a0d7ccb60e21b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636835f32c90610a96908590600401611e8d565b6040805160c0810182526000808252602082018190529181019190915260608082018190526080820181905260a08201526000858060200190518101906113c79190612a1a565b905060006113d6868686611b08565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166312b037ff8383611411610c87565b6040518463ffffffff1660e01b815260040161142f93929190612cf0565b6000604051808303816000875af115801561144e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261147691908101906130f6565b979650505050505050565b6000805b836060015151811015611518578260058111156114a4576114a4612204565b846060015182815181106114ba576114ba6131d6565b60200260200101516000015160058111156114d7576114d7612204565b0361150657836060015181815181106114f2576114f26131d6565b6020026020010151604001519150506104f6565b80611510816131ec565b915050611485565b508160405163267ac2cf60e01b81526004016109429190613213565b6001600160a01b03821661158a5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610942565b6000818152600260205260409020546001600160a01b0316156115ef5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610942565b6115fd600083836001611ba5565b6000818152600260205260409020546001600160a01b0316156116625760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610942565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000818152600260205260409020546001600160a01b0316610ff75760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610942565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061176182610adb565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806117a683610adb565b9050806001600160a01b0316846001600160a01b031614806117cd57506117cd8185611237565b8061122f5750836001600160a01b03166117e6846108a7565b6001600160a01b031614949350505050565b826001600160a01b031661180b82610adb565b6001600160a01b0316146118315760405162461bcd60e51b815260040161094290613221565b6001600160a01b0382166118935760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610942565b6118a08383836001611ba5565b826001600160a01b03166118b382610adb565b6001600160a01b0316146118d95760405162461bcd60e51b815260040161094290613221565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6006546001600160a01b03163314610c855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610942565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611a3b604080518082018252600080825282516020818101909452908152909182015290565b6040518060400160405280846001600160801b0319168152602001611a7a84604080516020808201835260009091528151908101909152901515815290565b90529392505050565b6007611a8f82826132b4565b507f2e9b34e5ec7377754a85ec13c1e9a442a00db0c46dbdefbb143dd0371fd20c1c81604051611abf9190611e8d565b60405180910390a150565b611052338383611be9565b611ae08484846117f8565b611aec84848484611cb7565b6108a15760405162461bcd60e51b815260040161094290613373565b611b10611dba565b604051634c92019b60e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639924033690611b60908790879087906004016133c5565b600060405180830381865afa158015611b7d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261122f9190810190613519565b7f000000000000000000000000000000000000000000000000000000000000000015611be457604051632630e0df60e11b815260040160405180910390fd5b6108a1565b816001600160a01b0316836001600160a01b031603611c4a5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610942565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b60006001600160a01b0384163b15611dad57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611cfb9033908990889088906004016136d4565b6020604051808303816000875af1925050508015611d36575060408051601f3d908101601f19168201909252611d3391810190613707565b60015b611d93573d808015611d64576040519150601f19603f3d011682016040523d82523d6000602084013e611d69565b606091505b508051600003611d8b5760405162461bcd60e51b815260040161094290613373565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061122f565b50600161122f565b905290565b604051806080016040528060006001600160801b03191681526020016060815260200160608152602001611db5604051806060016040528060608152602001600015158152602001606081525090565b6001600160e01b031981168114610ff757600080fd5b600060208284031215611e3257600080fd5b8135610be681611e0a565b60005b83811015611e58578181015183820152602001611e40565b50506000910152565b60008151808452611e79816020860160208601611e3d565b601f01601f19169290920160200192915050565b602081526000610be66020830184611e61565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b0381118282101715611ed857611ed8611ea0565b60405290565b60405160c081016001600160401b0381118282101715611ed857611ed8611ea0565b60405160e081016001600160401b0381118282101715611ed857611ed8611ea0565b604051608081016001600160401b0381118282101715611ed857611ed8611ea0565b604051601f8201601f191681016001600160401b0381118282101715611f6c57611f6c611ea0565b604052919050565b60006001600160401b03821115611f8d57611f8d611ea0565b50601f01601f191660200190565b6000611fae611fa984611f74565b611f44565b9050828152838383011115611fc257600080fd5b828260208301376000602084830101529392505050565b600082601f830112611fea57600080fd5b610be683833560208501611f9b565b80356001600160a01b038116811461201057600080fd5b919050565b6000806040838503121561202857600080fd5b82356001600160401b0381111561203e57600080fd5b61204a85828601611fd9565b92505061205960208401611ff9565b90509250929050565b60006020828403121561207457600080fd5b5035919050565b6000806040838503121561208e57600080fd5b61209783611ff9565b946020939093013593505050565b6000806000606084860312156120ba57600080fd5b6120c384611ff9565b92506120d160208501611ff9565b9150604084013590509250925092565b8015158114610ff757600080fd5b60006020828403121561210157600080fd5b8135610be6816120e1565b60008151606084526121216060850182611e61565b9050602083015115156020850152604083015184820360408601526121468282611e61565b95945050505050565b602081526000610be6602083018461210c565b6000806040838503121561217557600080fd5b82356001600160401b038082111561218c57600080fd5b61219886838701611fd9565b935060208501359150808211156121ae57600080fd5b506121bb85828601611fd9565b9150509250929050565b6000602082840312156121d757600080fd5b610be682611ff9565b81516001600160801b031916815260208083015151151590820152604081016104f6565b634e487b7160e01b600052602160045260246000fd5b6006811061222a5761222a612204565b9052565b600082825180855260208086019550808260051b84010181860160005b848110156122c357601f19868403018952815160c061226b85835161221a565b818601518587015260408083015115159086015260608083015115159086015260808083015115159086015260a0918201519185018190526122af81860183611e61565b9a86019a945050509083019060010161224b565b5090979650505050505050565b6005811061222a5761222a612204565b6000815180845260208085019450848260051b860182860160005b858110156122c3578383038952815160e06123178583516122d0565b818701516001600160801b031990811686890152604080840151909116908601526060808301519086015260808083015115159086015260a08083015115159086015260c09182015191850181905261237281860183611e61565b9a87019a94505050908401906001016122fb565b6020815260008251604060208401526123a2606084018261222e565b90506020840151601f1984830301604085015261214682826122e0565b6000602082840312156123d157600080fd5b81356001600160401b038111156123e757600080fd5b8201601f810184136123f857600080fd5b61122f84823560208401611f9b565b6000806040838503121561241a57600080fd5b61242383611ff9565b91506020830135612433816120e1565b809150509250929050565b6000806000806080858703121561245457600080fd5b61245d85611ff9565b935061246b60208601611ff9565b92506040850135915060608501356001600160401b0381111561248d57600080fd5b61249987828801611fd9565b91505092959194509250565b600080604083850312156124b857600080fd5b82356124c3816120e1565b915060208301356001600160401b038111156124de57600080fd5b6121bb85828601611fd9565b6000806000606084860312156124ff57600080fd5b83356001600160401b038082111561251657600080fd5b61252287838801611fd9565b945060208601359150612534826120e1565b9092506040850135908082111561254a57600080fd5b5061255786828701611fd9565b9150509250925092565b6000806040838503121561257457600080fd5b61257d83611ff9565b915061205960208401611ff9565b600181811c9082168061259f57607f821691505b6020821081036125bf57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b600082601f83011261262357600080fd5b8151612631611fa982611f74565b81815284602083860101111561264657600080fd5b61122f826020830160208701611e3d565b8051612010816120e1565b60006060828403121561267457600080fd5b604051606081016001600160401b03828210818311171561269757612697611ea0565b8160405282935084519150808211156126af57600080fd5b6126bb86838701612612565b8352602085015191506126cd826120e1565b81602084015260408501519150808211156126e757600080fd5b506126f485828601612612565b6040830152505092915050565b60006020828403121561271357600080fd5b81516001600160401b0381111561272957600080fd5b61122f84828501612662565b6040815260006127486040830185611e61565b82810360208401526121468185611e61565b821515815260406020820152600061122f6040830184611e61565b6060815260006127886060830186611e61565b841515602084015282810360408401526127a28185611e61565b9695505050505050565b80516001600160801b03198116811461201057600080fd5b60006001600160401b038211156127dd576127dd611ea0565b5060051b60200190565b80516006811061201057600080fd5b600082601f83011261280757600080fd5b81516020612817611fa9836127c4565b82815260059290921b8401810191818101908684111561283657600080fd5b8286015b848110156128f45780516001600160401b038082111561285a5760008081fd5b9088019060a0828b03601f19018113156128745760008081fd5b61287c611eb6565b6128878885016127e7565b8152604080850151612898816120e1565b828a01526060858101516128ab816120e1565b80838501525060809150818601518184015250828501519250838311156128d25760008081fd5b6128e08d8a85880101612612565b90820152865250505091830191830161283a565b509695505050505050565b80516005811061201057600080fd5b600082601f83011261291f57600080fd5b8151602061292f611fa9836127c4565b82815260059290921b8401810191818101908684111561294e57600080fd5b8286015b848110156128f45780516001600160401b03808211156129725760008081fd5b9088019060c0828b03601f190181131561298c5760008081fd5b612994611ede565b61299f8885016128ff565b815260406129ae8186016127ac565b8983015260606129bf8187016127ac565b8284015260809150818601516129d4816120e1565b9083015260a085810151828401529285015192848411156129f757600091508182fd5b612a058e8b86890101612612565b90830152508652505050918301918301612952565b60006020808385031215612a2d57600080fd5b82516001600160401b0380821115612a4457600080fd5b9084019060a08287031215612a5857600080fd5b612a60611eb6565b612a69836127ac565b8152612a768484016127ac565b8482015260408301516040820152606083015182811115612a9657600080fd5b612aa288828601612612565b60608301525060808084015183811115612abb57600080fd5b80850194505087601f850112612ad057600080fd5b8351612ade611fa9826127c4565b81815260059190911b8501860190868101908a831115612afd57600080fd5b8787015b83811015612be557805187811115612b195760008081fd5b880160a0818e03601f19011215612b305760008081fd5b612b38611eb6565b8a82015189811115612b4a5760008081fd5b612b588f8d838601016127f6565b825250604082015189811115612b6e5760008081fd5b612b7c8f8d8386010161290e565b8c83015250606082015160408201528682015189811115612b9d5760008081fd5b612bab8f8d83860101612612565b60608301525060a082015189811115612bc45760008081fd5b612bd28f8d83860101612612565b8289015250845250918801918801612b01565b50928401929092525090979650505050505050565b6000815180845260208085019450848260051b860182860160005b858110156122c3578383038952815160c0612c318583516122d0565b818701516001600160801b031990811686890152604080840151909116908601526060808301511515908601526080808301519086015260a091820151918501819052612c8081860183611e61565b9a87019a9450505090840190600101612c15565b6001600160801b031981511682526000602082015160806020850152612cbd608085018261222e565b905060408301518482036040860152612cd682826122e0565b91505060608301518482036060860152612146828261210c565b600060808083526001600160801b0319808751168285015260208088015182811660a087015250604088015191508160c08601526060880151915060a060e0860152612d40610120860183611e61565b88840151868203607f1901610100880152805180835291935082019082840190600581901b8501840160005b82811015612e7957601f198783030184528451805160a0808552815190850181905260c0600582901b86018101928a01919086019060005b81811015612e0e5760bf198886030183528351612dc286825161221a565b8c81015115158d870152604081015115156040870152606081015160608701528e810151905060a08f870152612dfb60a0870182611e61565b955050928b0192918b0191600101612da4565b505050508782015184820389860152612e278282612bfa565b9150506040820151604085015260608201518482036060860152612e4b8282611e61565b9150508982015191508381038a850152612e658183611e61565b968801969588019593505050600101612d6c565b50888103858a0152612e8b818c612c94565b8a516001600160801b03191660408b015260208b015151151560608b0152975061122f9650505050505050565b600082601f830112612ec957600080fd5b81516020612ed9611fa9836127c4565b82815260059290921b84018101918181019086841115612ef857600080fd5b8286015b848110156128f45780516001600160401b0380821115612f1c5760008081fd5b9088019060a0828b03601f1901811315612f365760008081fd5b612f3e611eb6565b612f498885016127e7565b8152604080850151612f5a816120e1565b808a8401525060608086015182840152608091508186015185811115612f805760008081fd5b612f8e8f8c838a0101612612565b82850152505082850151925083831115612fa85760008081fd5b612fb68d8a85880101612612565b908201528652505050918301918301612efc565b600082601f830112612fdb57600080fd5b81516020612feb611fa9836127c4565b82815260059290921b8401810191818101908684111561300a57600080fd5b8286015b848110156128f45780516001600160401b038082111561302e5760008081fd5b9088019060e0828b03601f19018113156130485760008081fd5b613050611f00565b61305b8885016128ff565b8152604061306a8186016127ac565b89830152606061307b8187016127ac565b828401526080915081860151818401525060a080860151858111156130a05760008081fd5b6130ae8f8c838a0101612612565b838501525060c09150818601518184015250828501519250838311156130d45760008081fd5b6130e28d8a85880101612612565b90820152865250505091830191830161300e565b60006020828403121561310857600080fd5b81516001600160401b038082111561311f57600080fd5b9083019060c0828603121561313357600080fd5b61313b611ede565b613144836127ac565b8152613152602084016127ac565b60208201526040830151604082015260608301518281111561317357600080fd5b61317f87828601612eb8565b60608301525060808301518281111561319757600080fd5b6131a387828601612fca565b60808301525060a0830151828111156131bb57600080fd5b6131c787828601612612565b60a08301525095945050505050565b634e487b7160e01b600052603260045260246000fd5b60006001820161320c57634e487b7160e01b600052601160045260246000fd5b5060010190565b602081016104f6828461221a565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b601f8211156109e357600081815260208120601f850160051c8101602086101561328d5750805b601f850160051c820191505b818110156132ac57828155600101613299565b505050505050565b81516001600160401b038111156132cd576132cd611ea0565b6132e1816132db845461258b565b84613266565b602080601f83116001811461331657600084156132fe5750858301515b600019600386901b1c1916600185901b1785556132ac565b600085815260208120601f198616915b8281101561334557888601518255948401946001909101908401613326565b50858210156133635787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6060815260006133d8606083018661222e565b82810360208401526133ea81866122e0565b905082810360408401526127a2818561210c565b600082601f83011261340f57600080fd5b8151602061341f611fa9836127c4565b82815260059290921b8401810191818101908684111561343e57600080fd5b8286015b848110156128f45780516001600160401b03808211156134625760008081fd5b9088019060e0828b03601f190181131561347c5760008081fd5b613484611f00565b61348f8885016128ff565b8152604061349e8186016127ac565b8983015260606134af8187016127ac565b828401526080915081860151818401525060a06134cd818701612657565b8284015260c091506134e0828701612657565b908301529184015191838311156134f75760008081fd5b6135058d8a85880101612612565b908201528652505050918301918301613442565b6000602080838503121561352c57600080fd5b82516001600160401b038082111561354357600080fd5b908401906080828703121561355757600080fd5b61355f611f22565b613568836127ac565b8152838301518281111561357b57600080fd5b8301601f8101881361358c57600080fd5b805161359a611fa9826127c4565b81815260059190911b8201860190868101908a8311156135b957600080fd5b8784015b83811015613676578051878111156135d457600080fd5b850160c0818e03601f190112156135ea57600080fd5b6135f2611ede565b6135fd8b83016127e7565b815260408201518b8201526060820151613616816120e1565b60408201526080820151613629816120e1565b606082015260a082015161363c816120e1565b608082015260c0820151898111156136545760008081fd5b6136628f8d83860101612612565b60a0830152508452509188019188016135bd565b50808886015250505050604083015193508184111561369457600080fd5b6136a0878585016133fe565b604082015260608301519350818411156136b957600080fd5b6136c587858501612662565b60608201529695505050505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906127a290830184611e61565b60006020828403121561371957600080fd5b8151610be681611e0a56fea2646970667358221220951f770327b0f3c4c923ab0c5ab39b6259e0990664bc13501bf0f2c1cf10535864736f6c63430008140033", + "sourceMap": "223:3262:54:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1570:300:26;;;;;;:::i;:::-;;:::i;:::-;;;661:14:57;;654:22;636:41;;624:2;609:18;1570:300:26;;;;;;;;2471:98;;;:::i;:::-;;;;;;;:::i;1192:387:54:-;;;;;;:::i;:::-;;:::i;:::-;;3935:167:26;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;4571:32:57;;;4553:51;;4541:2;4526:18;3935:167:26;4407:203:57;3468:406:26;;;;;;:::i;:::-;;:::i;4612:296::-;;;;;;:::i;:::-;;:::i;4974:149::-;;;;;;:::i;:::-;;:::i;972:125:41:-;;1054:42;972:125;;23032:158;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2190:219:26:-;;;;;;:::i;:::-;;:::i;22593:191:41:-;;;;;;:::i;:::-;;:::i;1929:204:26:-;;;;;;:::i;:::-;;:::i;:::-;;;7427:25:57;;;7415:2;7400:18;1929:204:26;7281:177:57;1824:101:18;;;:::i;336:48:54:-;;383:1;336:48;;;;;7635:4:57;7623:17;;;7605:36;;7593:2;7578:18;336:48:54;7463:184:57;2333:126:41;;;:::i;:::-;;;;;;;:::i;1583:131:54:-;;;:::i;:::-;;;;;;;:::i;1201:85:18:-;1273:6;;-1:-1:-1;;;;;1273:6:18;1201:85;;1718:103:54;;;;;;:::i;:::-;;:::i;2633:102:26:-;;;:::i;1430:43:41:-;;;;;2569:214:54;;;;;;:::i;:::-;;:::i;5189:276:26:-;;;;;;:::i;:::-;;:::i;1395:31:41:-;;;;;;;;-1:-1:-1;;;;;;13261:52:57;;;13243:71;;13231:2;13216:18;1395:31:41;13097:223:57;528:41:54;;;;;1825:103;;;;;;:::i;:::-;;:::i;914:53:41:-;;966:1;914:53;;23194:205;;;;;;:::i;:::-;;:::i;22788:240::-;;;;;;:::i;:::-;;:::i;2861:248:54:-;;;;;;:::i;:::-;;:::i;2074:198:18:-;;;;;;:::i;:::-;;:::i;1570:300:26:-;1672:4;-1:-1:-1;;;;;;1707:40:26;;-1:-1:-1;;;1707:40:26;;:104;;-1:-1:-1;;;;;;;1763:48:26;;-1:-1:-1;;;1763:48:26;1707:104;:156;;;-1:-1:-1;;;;;;;;;;937:40:34;;;1827:36:26;1688:175;1570:300;-1:-1:-1;;1570:300:26:o;2471:98::-;2525:13;2557:5;2550:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2471:98;:::o;1192:387:54:-;1379:9;1321:172;;;;;;;;;;;;;;;;;;;1278:40;;1321:172;;1351:13;;1278:40;;1321:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1410:9;:16;;1321:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;;1321:172:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1470:14:54;;;-1:-1:-1;;;;;4571:32:57;;1470:14:54;;;4553:51:57;1445:41:54;;-1:-1:-1;4526:18:57;;-1:-1:-1;1470:14:54;;;;;;;;;;;;1445;:41::i;:::-;1321:6;:172::i;:::-;1278:215;-1:-1:-1;1500:15:54;1518:32;1278:215;1500:15;1518:16;:32::i;:::-;1500:50;;1556:18;1562:2;1566:7;1556:5;:18::i;:::-;1272:307;;1192:387;;:::o;3935:167:26:-;4011:7;4030:23;4045:7;4030:14;:23::i;:::-;-1:-1:-1;4071:24:26;;;;:15;:24;;;;;;-1:-1:-1;;;;;4071:24:26;;3935:167::o;3468:406::-;3548:13;3564:23;3579:7;3564:14;:23::i;:::-;3548:39;;3611:5;-1:-1:-1;;;;;3605:11:26;:2;-1:-1:-1;;;;;3605:11:26;;3597:57;;;;-1:-1:-1;;;3597:57:26;;15304:2:57;3597:57:26;;;15286:21:57;15343:2;15323:18;;;15316:30;15382:34;15362:18;;;15355:62;-1:-1:-1;;;15433:18:57;;;15426:31;15474:19;;3597:57:26;;;;;;;;;719:10:31;-1:-1:-1;;;;;3686:21:26;;;;:62;;-1:-1:-1;3711:37:26;3728:5;719:10:31;2861:248:54;:::i;3711:37:26:-;3665:170;;;;-1:-1:-1;;;3665:170:26;;15706:2:57;3665:170:26;;;15688:21:57;15745:2;15725:18;;;15718:30;15784:34;15764:18;;;15757:62;15855:31;15835:18;;;15828:59;15904:19;;3665:170:26;15504:425:57;3665:170:26;3846:21;3855:2;3859:7;3846:8;:21::i;:::-;3538:336;3468:406;;:::o;4612:296::-;4771:41;719:10:31;4804:7:26;4771:18;:41::i;:::-;4763:99;;;;-1:-1:-1;;;4763:99:26;;;;;;;:::i;:::-;4873:28;4883:4;4889:2;4893:7;4873:9;:28::i;4974:149::-;5077:39;5094:4;5100:2;5104:7;5077:39;;;;;;;;;;;;:16;:39::i;23032:158:41:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;23142:43:41;;-1:-1:-1;;;23142:43:41;;661:14:57;;654:22;23142:43:41;;;636:41:57;-1:-1:-1;;;;;23142:17:41;:23;;;;609:18:57;;23142:43:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23142:43:41;;;;;;;;;;;;:::i;2190:219:26:-;2262:7;6794:16;;;:7;:16;;;;;;-1:-1:-1;;;;;6794:16:26;;2324:56;;;;-1:-1:-1;;;2324:56:26;;18400:2:57;2324:56:26;;;18382:21:57;18439:2;18419:18;;;18412:30;-1:-1:-1;;;18458:18:57;;;18451:54;18522:18;;2324:56:26;18198:348:57;22593:191:41;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;22736:43:41;;-1:-1:-1;;;22736:43:41;;:17;-1:-1:-1;;;;;22736:23:41;;;;:43;;22760:7;;22769:9;;22736:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22736:43:41;;;;;;;;;;;;:::i;:::-;22729:50;22593:191;-1:-1:-1;;;22593:191:41:o;1929:204:26:-;2001:7;-1:-1:-1;;;;;2028:19:26;;2020:73;;;;-1:-1:-1;;;2020:73:26;;19137:2:57;2020:73:26;;;19119:21:57;19176:2;19156:18;;;19149:30;19215:34;19195:18;;;19188:62;-1:-1:-1;;;19266:18:57;;;19259:39;19315:19;;2020:73:26;18935:405:57;2020:73:26;-1:-1:-1;;;;;;2110:16:26;;;;;:9;:16;;;;;;;1929:204::o;1824:101:18:-;1094:13;:11;:13::i;:::-;1888:30:::1;1915:1;1888:18;:30::i;:::-;1824:101::o:0;2333:126:41:-;2372:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2372:25:41;2412:42;2424:6;2432:21;2412:11;:42::i;:::-;2405:49;;2333:126;:::o;1583:131:54:-;-1:-1:-1;;;;;;;;;;;;;;;;;1652:36:54;;;1679:9;1652:36;;;;;;;;;;;;;;;;;;:24;;:36;;1679:9;;1652:24;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;;1652:36:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1652:36:54;;-1:-1:-1;1652:36:54;;1583:131;-1:-1:-1;;;1583:131:54:o;1718:103::-;1094:13:18;:11;:13::i;:::-;1791:25:54::1;1808:7;1791:16;:25::i;:::-;1718:103:::0;:::o;2633:102:26:-;2689:13;2721:7;2714:14;;;;;:::i;2569:214:54:-;2663:19;2659:70;;;2699:23;;-1:-1:-1;;;2699:23:54;;;;;;;;;;;2659:70;2734:44;2759:8;2769;2734:24;:44::i;:::-;2569:214;;:::o;5189:276:26:-;5319:41;719:10:31;5352:7:26;5319:18;:41::i;:::-;5311:99;;;;-1:-1:-1;;;5311:99:26;;;;;;;:::i;:::-;5420:38;5434:4;5440:2;5444:7;5453:4;5420:13;:38::i;1825:103:54:-;1882:13;1910;1903:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1825:103;;;:::o;23194:205:41:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;23340:54:41;;-1:-1:-1;;;23340:54:41;;:17;-1:-1:-1;;;;;23340:23:41;;;;:54;;23364:18;;23384:9;;23340:54;;;:::i;22788:240::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;22960:63:41;;-1:-1:-1;;;22960:63:41;;:17;-1:-1:-1;;;;;22960:23:41;;;;:63;;22984:7;;22993:18;;23013:9;;22960:63;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22960:63:41;;;;;;;;;;;;:::i;:::-;22953:70;22788:240;-1:-1:-1;;;;22788:240:41:o;2861:248:54:-;2970:4;2986:19;2982:70;;;3022:23;;-1:-1:-1;;;3022:23:54;;;;;;;;;;;2982:70;-1:-1:-1;;;;;4508:25:26;;;4485:4;4508:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;3064:40:54;4388:162:26;2074:198:18;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2162:22:18;::::1;2154:73;;;::::0;-1:-1:-1;;;2154:73:18;;20316:2:57;2154:73:18::1;::::0;::::1;20298:21:57::0;20355:2;20335:18;;;20328:30;20394:34;20374:18;;;20367:62;-1:-1:-1;;;20445:18:57;;;20438:36;20491:19;;2154:73:18::1;20114:402:57::0;2154:73:18::1;2237:28;2256:8;2237:18;:28::i;22240:144:41:-:0;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;22347:32:41;;-1:-1:-1;;;22347:32:41;;:17;-1:-1:-1;;;;;22347:23:41;;;;:32;;22371:7;;22347:32;;;:::i;11242:460::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11458:36:41;11508:13;11497:49;;;;;;;;;;;;:::i;:::-;11458:88;;11552:34;11589:38;11602:5;11609:6;11617:9;11589:12;:38::i;:::-;11552:75;;11640:21;-1:-1:-1;;;;;11640:28:41;;11669:8;11679:7;11688:8;:6;:8::i;:::-;11640:57;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11640:57:41;;;;;;;;;;;;:::i;:::-;11633:64;11242:460;-1:-1:-1;;;;;;;11242:460:41:o;176:397:46:-;291:7;;360:154;384:6;:12;;;:19;380:1;:23;360:154;;;450:8;422:36;;;;;;;;:::i;:::-;:6;:12;;;435:1;422:15;;;;;;;;:::i;:::-;;;;;;;:24;;;:36;;;;;;;;:::i;:::-;;418:90;;477:6;:12;;;490:1;477:15;;;;;;;;:::i;:::-;;;;;;;:22;;;470:29;;;;;418:90;405:3;;;;:::i;:::-;;;;360:154;;;;559:8;526:42;;-1:-1:-1;;;526:42:46;;;;;;;;:::i;8925:920:26:-;-1:-1:-1;;;;;9004:16:26;;8996:61;;;;-1:-1:-1;;;8996:61:26;;40195:2:57;8996:61:26;;;40177:21:57;;;40214:18;;;40207:30;40273:34;40253:18;;;40246:62;40325:18;;8996:61:26;39993:356:57;8996:61:26;7185:4;6794:16;;;:7;:16;;;;;;-1:-1:-1;;;;;6794:16:26;7208:31;9067:58;;;;-1:-1:-1;;;9067:58:26;;40556:2:57;9067:58:26;;;40538:21:57;40595:2;40575:18;;;40568:30;40634;40614:18;;;40607:58;40682:18;;9067:58:26;40354:352:57;9067:58:26;9136:48;9165:1;9169:2;9173:7;9182:1;9136:20;:48::i;:::-;7185:4;6794:16;;;:7;:16;;;;;;-1:-1:-1;;;;;6794:16:26;7208:31;9271:58;;;;-1:-1:-1;;;9271:58:26;;40556:2:57;9271:58:26;;;40538:21:57;40595:2;40575:18;;;40568:30;40634;40614:18;;;40607:58;40682:18;;9271:58:26;40354:352:57;9271:58:26;-1:-1:-1;;;;;9671:13:26;;;;;;:9;:13;;;;;;;;:18;;9688:1;9671:18;;;9710:16;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;9710:21:26;;;;;9747:33;9718:7;;9671:13;;9747:33;;9671:13;;9747:33;2569:214:54;;:::o;13240:133:26:-;7185:4;6794:16;;;:7;:16;;;;;;-1:-1:-1;;;;;6794:16:26;13313:53;;;;-1:-1:-1;;;13313:53:26;;18400:2:57;13313:53:26;;;18382:21:57;18439:2;18419:18;;;18412:30;-1:-1:-1;;;18458:18:57;;;18451:54;18522:18;;13313:53:26;18198:348:57;12572:171:26;12646:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;12646:29:26;-1:-1:-1;;;;;12646:29:26;;;;;;;;:24;;12699:23;12646:24;12699:14;:23::i;:::-;-1:-1:-1;;;;;12690:46:26;;;;;;;;;;;12572:171;;:::o;7404:261::-;7497:4;7513:13;7529:23;7544:7;7529:14;:23::i;:::-;7513:39;;7581:5;-1:-1:-1;;;;;7570:16:26;:7;-1:-1:-1;;;;;7570:16:26;;:52;;;;7590:32;7607:5;7614:7;7590:16;:32::i;:::-;7570:87;;;;7650:7;-1:-1:-1;;;;;7626:31:26;:20;7638:7;7626:11;:20::i;:::-;-1:-1:-1;;;;;7626:31:26;;7562:96;7404:261;-1:-1:-1;;;;7404:261:26:o;11257:1203::-;11381:4;-1:-1:-1;;;;;11354:31:26;:23;11369:7;11354:14;:23::i;:::-;-1:-1:-1;;;;;11354:31:26;;11346:81;;;;-1:-1:-1;;;11346:81:26;;;;;;;:::i;:::-;-1:-1:-1;;;;;11445:16:26;;11437:65;;;;-1:-1:-1;;;11437:65:26;;41319:2:57;11437:65:26;;;41301:21:57;41358:2;41338:18;;;41331:30;41397:34;41377:18;;;41370:62;-1:-1:-1;;;41448:18:57;;;41441:34;41492:19;;11437:65:26;41117:400:57;11437:65:26;11513:42;11534:4;11540:2;11544:7;11553:1;11513:20;:42::i;:::-;11682:4;-1:-1:-1;;;;;11655:31:26;:23;11670:7;11655:14;:23::i;:::-;-1:-1:-1;;;;;11655:31:26;;11647:81;;;;-1:-1:-1;;;11647:81:26;;;;;;;:::i;:::-;11797:24;;;;:15;:24;;;;;;;;11790:31;;-1:-1:-1;;;;;;11790:31:26;;;;;;-1:-1:-1;;;;;12265:15:26;;;;;;:9;:15;;;;;:20;;-1:-1:-1;;12265:20:26;;;12299:13;;;;;;;;;:18;;11790:31;12299:18;;;12337:16;;;:7;:16;;;;;;:21;;;;;;;;;;12374:27;;11813:7;;12374:27;;;3538:336;3468:406;;:::o;1359:130:18:-;1273:6;;-1:-1:-1;;;;;1273:6:18;719:10:31;1422:23:18;1414:68;;;;-1:-1:-1;;;1414:68:18;;41724:2:57;1414:68:18;;;41706:21:57;;;41743:18;;;41736:30;41802:34;41782:18;;;41775:62;41854:18;;1414:68:18;41522:356:57;2426:187:18;2518:6;;;-1:-1:-1;;;;;2534:17:18;;;-1:-1:-1;;;;;;2534:17:18;;;;;;;2566:40;;2518:6;;;2534:17;2518:6;;2566:40;;2499:16;;2566:40;2489:124;2426:187;:::o;2632:222:41:-;2729:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2729:25:41;2769:80;;;;;;;;2796:5;-1:-1:-1;;;;;2769:80:41;;;;;;2810:37;2827:19;-1:-1:-1;;;;;;;;;;;;;3100:55:41;;;;;;;;;;;;;;2992:168;2810:37;2769:80;;2762:87;2632:222;-1:-1:-1;;;2632:222:41:o;2258:126:54:-;2321:13;:23;2337:7;2321:13;:23;:::i;:::-;;2355:24;2371:7;2355:24;;;;;;:::i;:::-;;;;;;;;2258:126;:::o;4169:153:26:-;4263:52;719:10:31;4296:8:26;4306;4263:18;:52::i;6326:267::-;6438:28;6448:4;6454:2;6458:7;6438:9;:28::i;:::-;6484:47;6507:4;6513:2;6517:7;6526:4;6484:22;:47::i;:::-;6476:110;;;;-1:-1:-1;;;6476:110:26;;;;;;;:::i;26123:247:41:-;26277:26;;:::i;:::-;26318:47;;-1:-1:-1;;;26318:47:41;;-1:-1:-1;;;;;26318:15:41;:21;;;;:47;;26340:5;;26347:6;;26355:9;;26318:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;26318:47:41;;;;;;;;;;;;:::i;3192:291:54:-;3345:19;3341:70;;;3381:23;;-1:-1:-1;;;3381:23:54;;;;;;;;;;;3341:70;3416:62;1192:387;12879:277:26;12999:8;-1:-1:-1;;;;;12990:17:26;:5;-1:-1:-1;;;;;12990:17:26;;12982:55;;;;-1:-1:-1;;;12982:55:26;;50276:2:57;12982:55:26;;;50258:21:57;50315:2;50295:18;;;50288:30;50354:27;50334:18;;;50327:55;50399:18;;12982:55:26;50074:349:57;12982:55:26;-1:-1:-1;;;;;13047:25:26;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;13047:46:26;;;;;;;;;;13108:41;;636::57;;;13108::26;;609:18:57;13108:41:26;;;;;;;12879:277;;;:::o;13925:831::-;14074:4;-1:-1:-1;;;;;14094:13:26;;1702:19:30;:23;14090:660:26;;14129:71;;-1:-1:-1;;;14129:71:26;;-1:-1:-1;;;;;14129:36:26;;;;;:71;;719:10:31;;14180:4:26;;14186:7;;14195:4;;14129:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14129:71:26;;;;;;;;-1:-1:-1;;14129:71:26;;;;;;;;;;;;:::i;:::-;;;14125:573;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14367:6;:13;14384:1;14367:18;14363:321;;14409:60;;-1:-1:-1;;;14409:60:26;;;;;;;:::i;14363:321::-;14636:6;14630:13;14621:6;14617:2;14613:15;14606:38;14125:573;-1:-1:-1;;;;;;14250:51:26;-1:-1:-1;;;14250:51:26;;-1:-1:-1;14243:58:26;;14090:660;-1:-1:-1;14735:4:26;14728:11;;-1:-1:-1;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:131:57;-1:-1:-1;;;;;;88:32:57;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;688:250::-;773:1;783:113;797:6;794:1;791:13;783:113;;;873:11;;;867:18;854:11;;;847:39;819:2;812:10;783:113;;;-1:-1:-1;;930:1:57;912:16;;905:27;688:250::o;943:271::-;985:3;1023:5;1017:12;1050:6;1045:3;1038:19;1066:76;1135:6;1128:4;1123:3;1119:14;1112:4;1105:5;1101:16;1066:76;:::i;:::-;1196:2;1175:15;-1:-1:-1;;1171:29:57;1162:39;;;;1203:4;1158:50;;943:271;-1:-1:-1;;943:271:57:o;1219:220::-;1368:2;1357:9;1350:21;1331:4;1388:45;1429:2;1418:9;1414:18;1406:6;1388:45;:::i;1444:127::-;1505:10;1500:3;1496:20;1493:1;1486:31;1536:4;1533:1;1526:15;1560:4;1557:1;1550:15;1576:253;1648:2;1642:9;1690:4;1678:17;;-1:-1:-1;;;;;1710:34:57;;1746:22;;;1707:62;1704:88;;;1772:18;;:::i;:::-;1808:2;1801:22;1576:253;:::o;1834:::-;1906:2;1900:9;1948:4;1936:17;;-1:-1:-1;;;;;1968:34:57;;2004:22;;;1965:62;1962:88;;;2030:18;;:::i;2092:253::-;2164:2;2158:9;2206:4;2194:17;;-1:-1:-1;;;;;2226:34:57;;2262:22;;;2223:62;2220:88;;;2288:18;;:::i;2350:253::-;2422:2;2416:9;2464:4;2452:17;;-1:-1:-1;;;;;2484:34:57;;2520:22;;;2481:62;2478:88;;;2546:18;;:::i;2608:275::-;2679:2;2673:9;2744:2;2725:13;;-1:-1:-1;;2721:27:57;2709:40;;-1:-1:-1;;;;;2764:34:57;;2800:22;;;2761:62;2758:88;;;2826:18;;:::i;:::-;2862:2;2855:22;2608:275;;-1:-1:-1;2608:275:57:o;2888:186::-;2936:4;-1:-1:-1;;;;;2961:6:57;2958:30;2955:56;;;2991:18;;:::i;:::-;-1:-1:-1;3057:2:57;3036:15;-1:-1:-1;;3032:29:57;3063:4;3028:40;;2888:186::o;3079:336::-;3143:5;3172:52;3188:35;3216:6;3188:35;:::i;:::-;3172:52;:::i;:::-;3163:61;;3247:6;3240:5;3233:21;3287:3;3278:6;3273:3;3269:16;3266:25;3263:45;;;3304:1;3301;3294:12;3263:45;3353:6;3348:3;3341:4;3334:5;3330:16;3317:43;3407:1;3400:4;3391:6;3384:5;3380:18;3376:29;3369:40;3079:336;;;;;:::o;3420:220::-;3462:5;3515:3;3508:4;3500:6;3496:17;3492:27;3482:55;;3533:1;3530;3523:12;3482:55;3555:79;3630:3;3621:6;3608:20;3601:4;3593:6;3589:17;3555:79;:::i;3645:173::-;3713:20;;-1:-1:-1;;;;;3762:31:57;;3752:42;;3742:70;;3808:1;3805;3798:12;3742:70;3645:173;;;:::o;3823:394::-;3900:6;3908;3961:2;3949:9;3940:7;3936:23;3932:32;3929:52;;;3977:1;3974;3967:12;3929:52;4017:9;4004:23;-1:-1:-1;;;;;4042:6:57;4039:30;4036:50;;;4082:1;4079;4072:12;4036:50;4105:49;4146:7;4137:6;4126:9;4122:22;4105:49;:::i;:::-;4095:59;;;4173:38;4207:2;4196:9;4192:18;4173:38;:::i;:::-;4163:48;;3823:394;;;;;:::o;4222:180::-;4281:6;4334:2;4322:9;4313:7;4309:23;4305:32;4302:52;;;4350:1;4347;4340:12;4302:52;-1:-1:-1;4373:23:57;;4222:180;-1:-1:-1;4222:180:57:o;4615:254::-;4683:6;4691;4744:2;4732:9;4723:7;4719:23;4715:32;4712:52;;;4760:1;4757;4750:12;4712:52;4783:29;4802:9;4783:29;:::i;:::-;4773:39;4859:2;4844:18;;;;4831:32;;-1:-1:-1;;;4615:254:57:o;4874:328::-;4951:6;4959;4967;5020:2;5008:9;4999:7;4995:23;4991:32;4988:52;;;5036:1;5033;5026:12;4988:52;5059:29;5078:9;5059:29;:::i;:::-;5049:39;;5107:38;5141:2;5130:9;5126:18;5107:38;:::i;:::-;5097:48;;5192:2;5181:9;5177:18;5164:32;5154:42;;4874:328;;;;;:::o;5443:118::-;5529:5;5522:13;5515:21;5508:5;5505:32;5495:60;;5551:1;5548;5541:12;5566:241;5622:6;5675:2;5663:9;5654:7;5650:23;5646:32;5643:52;;;5691:1;5688;5681:12;5643:52;5730:9;5717:23;5749:28;5771:5;5749:28;:::i;5812:437::-;5871:3;5915:5;5909:12;5942:4;5937:3;5930:17;5968:47;6009:4;6004:3;6000:14;5986:12;5968:47;:::i;:::-;5956:59;;6078:4;6071:5;6067:16;6061:23;6054:31;6047:39;6040:4;6035:3;6031:14;6024:63;6135:4;6128:5;6124:16;6118:23;6183:3;6177:4;6173:14;6166:4;6161:3;6157:14;6150:38;6204:39;6238:4;6222:14;6204:39;:::i;:::-;6197:46;5812:437;-1:-1:-1;;;;;5812:437:57:o;6254:287::-;6453:2;6442:9;6435:21;6416:4;6473:62;6531:2;6520:9;6516:18;6508:6;6473:62;:::i;6546:539::-;6632:6;6640;6693:2;6681:9;6672:7;6668:23;6664:32;6661:52;;;6709:1;6706;6699:12;6661:52;6749:9;6736:23;-1:-1:-1;;;;;6819:2:57;6811:6;6808:14;6805:34;;;6835:1;6832;6825:12;6805:34;6858:49;6899:7;6890:6;6879:9;6875:22;6858:49;:::i;:::-;6848:59;;6960:2;6949:9;6945:18;6932:32;6916:48;;6989:2;6979:8;6976:16;6973:36;;;7005:1;7002;6995:12;6973:36;;7028:51;7071:7;7060:8;7049:9;7045:24;7028:51;:::i;:::-;7018:61;;;6546:539;;;;;:::o;7090:186::-;7149:6;7202:2;7190:9;7181:7;7177:23;7173:32;7170:52;;;7218:1;7215;7208:12;7170:52;7241:29;7260:9;7241:29;:::i;7885:281::-;7740:12;;-1:-1:-1;;;;;;7736:58:57;7724:71;;7864:4;7853:16;;;7847:23;7841:30;7834:38;7827:46;7811:14;;;7804:70;8093:2;8078:18;;8105:55;7652:228;8171:127;8232:10;8227:3;8223:20;8220:1;8213:31;8263:4;8260:1;8253:15;8287:4;8284:1;8277:15;8303:139;8383:1;8376:5;8373:12;8363:46;;8389:18;;:::i;:::-;8418;;8303:139::o;8447:1190::-;8511:3;8542;8574:5;8568:12;8601:6;8596:3;8589:19;8627:4;8656:2;8651:3;8647:12;8640:19;;8712:2;8702:6;8699:1;8695:14;8688:5;8684:26;8680:35;8749:2;8742:5;8738:14;8770:1;8780:831;8794:6;8791:1;8788:13;8780:831;;;8881:2;8877:7;8869:5;8863:4;8859:16;8855:30;8850:3;8843:43;8915:6;8909:13;8945:4;8962:41;8998:4;8993:2;8987:9;8962:41;:::i;:::-;9044:11;;;9038:18;9023:13;;;9016:41;9080:4;9139:11;;;9133:18;9126:26;9119:34;9104:13;;;9097:57;9177:4;9236:11;;;9230:18;9223:26;9216:34;9201:13;;;9194:57;9274:4;9333:11;;;9327:18;9320:26;9313:34;9298:13;;;9291:57;9371:4;9414:11;;;9408:18;9446:13;;;9439:25;;;9485:46;9517:13;;;9408:18;9485:46;:::i;:::-;9589:12;;;;9477:54;-1:-1:-1;;;9554:15:57;;;;8816:1;8809:9;8780:831;;;-1:-1:-1;9627:4:57;;8447:1190;-1:-1:-1;;;;;;;8447:1190:57:o;9642:140::-;9723:1;9716:5;9713:12;9703:46;;9729:18;;:::i;9787:1403::-;9852:3;9890:5;9884:12;9917:6;9912:3;9905:19;9943:4;9972:2;9967:3;9963:12;9956:19;;9997:3;10037:6;10034:1;10030:14;10025:3;10021:24;10079:2;10072:5;10068:14;10100:1;10110:1054;10124:6;10121:1;10118:13;10110:1054;;;10195:5;10189:4;10185:16;10180:3;10173:29;10231:6;10225:13;10261:4;10278:42;10315:4;10310:2;10304:9;10278:42;:::i;:::-;10359:11;;;10353:18;-1:-1:-1;;;;;;10468:21:57;;;10453:13;;;10446:44;10513:4;10562:11;;;10556:18;10552:27;;;10537:13;;;10530:50;10603:4;10648:11;;;10642:18;10627:13;;;10620:41;10684:4;10743:11;;;10737:18;10730:26;10723:34;10708:13;;;10701:57;10781:4;10826:11;;;10820:18;470:13;463:21;10883:13;;;451:34;10920:4;10965:11;;;10959:18;10997:13;;;10990:25;;;11036:48;11070:13;;;10959:18;11036:48;:::i;:::-;11142:12;;;;11028:56;-1:-1:-1;;;11107:15:57;;;;10146:1;10139:9;10110:1054;;11195:580;11378:2;11367:9;11360:21;11341:4;11416:6;11410:13;11459:4;11454:2;11443:9;11439:18;11432:32;11487:73;11556:2;11545:9;11541:18;11527:12;11487:73;:::i;:::-;11473:87;;11609:2;11601:6;11597:15;11591:22;11683:2;11679:7;11667:9;11659:6;11655:22;11651:36;11644:4;11633:9;11629:20;11622:66;11705:64;11762:6;11746:14;11705:64;:::i;11780:450::-;11849:6;11902:2;11890:9;11881:7;11877:23;11873:32;11870:52;;;11918:1;11915;11908:12;11870:52;11958:9;11945:23;-1:-1:-1;;;;;11983:6:57;11980:30;11977:50;;;12023:1;12020;12013:12;11977:50;12046:22;;12099:4;12091:13;;12087:27;-1:-1:-1;12077:55:57;;12128:1;12125;12118:12;12077:55;12151:73;12216:7;12211:2;12198:16;12193:2;12189;12185:11;12151:73;:::i;12235:315::-;12300:6;12308;12361:2;12349:9;12340:7;12336:23;12332:32;12329:52;;;12377:1;12374;12367:12;12329:52;12400:29;12419:9;12400:29;:::i;:::-;12390:39;;12479:2;12468:9;12464:18;12451:32;12492:28;12514:5;12492:28;:::i;:::-;12539:5;12529:15;;;12235:315;;;;;:::o;12555:537::-;12650:6;12658;12666;12674;12727:3;12715:9;12706:7;12702:23;12698:33;12695:53;;;12744:1;12741;12734:12;12695:53;12767:29;12786:9;12767:29;:::i;:::-;12757:39;;12815:38;12849:2;12838:9;12834:18;12815:38;:::i;:::-;12805:48;;12900:2;12889:9;12885:18;12872:32;12862:42;;12955:2;12944:9;12940:18;12927:32;-1:-1:-1;;;;;12974:6:57;12971:30;12968:50;;;13014:1;13011;13004:12;12968:50;13037:49;13078:7;13069:6;13058:9;13054:22;13037:49;:::i;:::-;13027:59;;;12555:537;;;;;;;:::o;13325:449::-;13399:6;13407;13460:2;13448:9;13439:7;13435:23;13431:32;13428:52;;;13476:1;13473;13466:12;13428:52;13515:9;13502:23;13534:28;13556:5;13534:28;:::i;:::-;13581:5;-1:-1:-1;13637:2:57;13622:18;;13609:32;-1:-1:-1;;;;;13653:30:57;;13650:50;;;13696:1;13693;13686:12;13650:50;13719:49;13760:7;13751:6;13740:9;13736:22;13719:49;:::i;13779:668::-;13871:6;13879;13887;13940:2;13928:9;13919:7;13915:23;13911:32;13908:52;;;13956:1;13953;13946:12;13908:52;13996:9;13983:23;-1:-1:-1;;;;;14066:2:57;14058:6;14055:14;14052:34;;;14082:1;14079;14072:12;14052:34;14105:49;14146:7;14137:6;14126:9;14122:22;14105:49;:::i;:::-;14095:59;;14204:2;14193:9;14189:18;14176:32;14163:45;;14217:28;14239:5;14217:28;:::i;:::-;14264:5;;-1:-1:-1;14322:2:57;14307:18;;14294:32;;14338:16;;;14335:36;;;14367:1;14364;14357:12;14335:36;;14390:51;14433:7;14422:8;14411:9;14407:24;14390:51;:::i;:::-;14380:61;;;13779:668;;;;;:::o;14452:260::-;14520:6;14528;14581:2;14569:9;14560:7;14556:23;14552:32;14549:52;;;14597:1;14594;14587:12;14549:52;14620:29;14639:9;14620:29;:::i;:::-;14610:39;;14668:38;14702:2;14691:9;14687:18;14668:38;:::i;14717:380::-;14796:1;14792:12;;;;14839;;;14860:61;;14914:4;14906:6;14902:17;14892:27;;14860:61;14967:2;14959:6;14956:14;14936:18;14933:38;14930:161;;15013:10;15008:3;15004:20;15001:1;14994:31;15048:4;15045:1;15038:15;15076:4;15073:1;15066:15;14930:161;;14717:380;;;:::o;15934:409::-;16136:2;16118:21;;;16175:2;16155:18;;;16148:30;16214:34;16209:2;16194:18;;16187:62;-1:-1:-1;;;16280:2:57;16265:18;;16258:43;16333:3;16318:19;;15934:409::o;16348:441::-;16401:5;16454:3;16447:4;16439:6;16435:17;16431:27;16421:55;;16472:1;16469;16462:12;16421:55;16501:6;16495:13;16532:48;16548:31;16576:2;16548:31;:::i;16532:48::-;16605:2;16596:7;16589:19;16651:3;16644:4;16639:2;16631:6;16627:15;16623:26;16620:35;16617:55;;;16668:1;16665;16658:12;16617:55;16681:77;16755:2;16748:4;16739:7;16735:18;16728:4;16720:6;16716:17;16681:77;:::i;16794:132::-;16870:13;;16892:28;16870:13;16892:28;:::i;16931:878::-;17005:5;17053:4;17041:9;17036:3;17032:19;17028:30;17025:50;;;17071:1;17068;17061:12;17025:50;17104:2;17098:9;17146:4;17138:6;17134:17;-1:-1:-1;;;;;17238:6:57;17226:10;17223:22;17218:2;17206:10;17203:18;17200:46;17197:72;;;17249:18;;:::i;:::-;17289:10;17285:2;17278:22;17318:6;17309:15;;17353:9;17347:16;17333:30;;17386:2;17378:6;17375:14;17372:34;;;17402:1;17399;17392:12;17372:34;17430:56;17482:3;17473:6;17462:9;17458:22;17430:56;:::i;:::-;17422:6;17415:72;17532:2;17521:9;17517:18;17511:25;17496:40;;17545:30;17567:7;17545:30;:::i;:::-;17608:7;17603:2;17595:6;17591:15;17584:32;17662:2;17651:9;17647:18;17641:25;17625:41;;17691:2;17681:8;17678:16;17675:36;;;17707:1;17704;17697:12;17675:36;;17744:58;17798:3;17787:8;17776:9;17772:24;17744:58;:::i;:::-;17739:2;17731:6;17727:15;17720:83;;;16931:878;;;;:::o;17814:379::-;17919:6;17972:2;17960:9;17951:7;17947:23;17943:32;17940:52;;;17988:1;17985;17978:12;17940:52;18021:9;18015:16;-1:-1:-1;;;;;18046:6:57;18043:30;18040:50;;;18086:1;18083;18076:12;18040:50;18109:78;18179:7;18170:6;18159:9;18155:22;18109:78;:::i;18551:379::-;18744:2;18733:9;18726:21;18707:4;18770:45;18811:2;18800:9;18796:18;18788:6;18770:45;:::i;:::-;18863:9;18855:6;18851:22;18846:2;18835:9;18831:18;18824:50;18891:33;18917:6;18909;18891:33;:::i;19345:299::-;19528:6;19521:14;19514:22;19503:9;19496:41;19573:2;19568;19557:9;19553:18;19546:30;19477:4;19593:45;19634:2;19623:9;19619:18;19611:6;19593:45;:::i;19649:460::-;19864:2;19853:9;19846:21;19827:4;19890:45;19931:2;19920:9;19916:18;19908:6;19890:45;:::i;:::-;19985:6;19978:14;19971:22;19966:2;19955:9;19951:18;19944:50;20042:9;20034:6;20030:22;20025:2;20014:9;20010:18;20003:50;20070:33;20096:6;20088;20070:33;:::i;:::-;20062:41;19649:460;-1:-1:-1;;;;;;19649:460:57:o;20744:197::-;20823:13;;-1:-1:-1;;;;;;20865:51:57;;20855:62;;20845:90;;20931:1;20928;20921:12;20946:200;21023:4;-1:-1:-1;;;;;21048:6:57;21045:30;21042:56;;;21078:18;;:::i;:::-;-1:-1:-1;21123:1:57;21119:14;21135:4;21115:25;;20946:200::o;21151:153::-;21236:13;;21278:1;21268:12;;21258:40;;21294:1;21291;21284:12;21309:1882;21378:5;21431:3;21424:4;21416:6;21412:17;21408:27;21398:55;;21449:1;21446;21439:12;21398:55;21478:6;21472:13;21504:4;21528:77;21544:60;21601:2;21544:60;:::i;21528:77::-;21639:15;;;21725:1;21721:10;;;;21709:23;;21705:32;;;21670:12;;;;21749:15;;;21746:35;;;21777:1;21774;21767:12;21746:35;21813:2;21805:6;21801:15;21825:1337;21841:6;21836:3;21833:15;21825:1337;;;21920:3;21914:10;-1:-1:-1;;;;;21997:2:57;21984:11;21981:19;21978:109;;;22041:1;22070:2;22066;22059:14;21978:109;22110:24;;;;22157:4;22185:12;;;-1:-1:-1;;22181:26:57;22177:35;-1:-1:-1;22174:125:57;;;22253:1;22282:2;22278;22271:14;22174:125;22325:22;;:::i;:::-;22374:48;22418:2;22414;22410:11;22374:48;:::i;:::-;22367:5;22360:63;22446:2;22490;22486;22482:11;22476:18;22507:30;22529:7;22507:30;:::i;:::-;22557:14;;;22550:31;22604:2;22640:11;;;22634:18;22665:30;22634:18;22665:30;:::i;:::-;22731:7;22726:2;22719:5;22715:14;22708:31;;22763:3;22752:14;;22816:3;22812:2;22808:12;22802:19;22797:2;22790:5;22786:14;22779:43;;22865:2;22861;22857:11;22851:18;22835:34;;22898:2;22888:8;22885:16;22882:109;;;22943:1;22973:3;22968;22961:16;22882:109;23028:60;23084:3;23079:2;23068:8;23064:2;23060:17;23056:26;23028:60;:::i;:::-;23011:15;;;23004:85;23102:18;;-1:-1:-1;;;23140:12:57;;;;21858;;21825:1337;;;-1:-1:-1;23180:5:57;21309:1882;-1:-1:-1;;;;;;21309:1882:57:o;23196:154::-;23282:13;;23324:1;23314:12;;23304:40;;23340:1;23337;23330:12;23355:1938;23425:5;23478:3;23471:4;23463:6;23459:17;23455:27;23445:55;;23496:1;23493;23486:12;23445:55;23525:6;23519:13;23551:4;23575:77;23591:60;23648:2;23591:60;:::i;23575:77::-;23686:15;;;23772:1;23768:10;;;;23756:23;;23752:32;;;23717:12;;;;23796:15;;;23793:35;;;23824:1;23821;23814:12;23793:35;23860:2;23852:6;23848:15;23872:1392;23888:6;23883:3;23880:15;23872:1392;;;23967:3;23961:10;-1:-1:-1;;;;;24044:2:57;24031:11;24028:19;24025:109;;;24088:1;24117:2;24113;24106:14;24025:109;24157:24;;;;24204:4;24232:12;;;-1:-1:-1;;24228:26:57;24224:35;-1:-1:-1;24221:125:57;;;24300:1;24329:2;24325;24318:14;24221:125;24372:22;;:::i;:::-;24421:49;24466:2;24462;24458:11;24421:49;:::i;:::-;24414:5;24407:64;24494:2;24532:42;24570:2;24566;24562:11;24532:42;:::i;:::-;24527:2;24520:5;24516:14;24509:66;24598:2;24636:42;24674:2;24670;24666:11;24636:42;:::i;:::-;24631:2;24624:5;24620:14;24613:66;24703:3;24692:14;;24748:3;24744:2;24740:12;24734:19;24766:30;24788:7;24766:30;:::i;:::-;24816:14;;;24809:31;24864:3;24910:12;;;24904:19;24887:15;;;24880:44;24959:11;;;24953:18;;24987:16;;;24984:109;;;25045:1;25034:12;;25075:3;25070;25063:16;24984:109;25130:60;25186:3;25181:2;25170:8;25166:2;25162:17;25158:26;25130:60;:::i;:::-;25113:15;;;25106:85;-1:-1:-1;25204:18:57;;-1:-1:-1;;;25242:12:57;;;;23905;;23872:1392;;25298:3145;25407:6;25438:2;25481;25469:9;25460:7;25456:23;25452:32;25449:52;;;25497:1;25494;25487:12;25449:52;25530:9;25524:16;-1:-1:-1;;;;;25600:2:57;25592:6;25589:14;25586:34;;;25616:1;25613;25606:12;25586:34;25639:22;;;;25695:4;25677:16;;;25673:27;25670:47;;;25713:1;25710;25703:12;25670:47;25739:22;;:::i;:::-;25784:33;25814:2;25784:33;:::i;:::-;25777:5;25770:48;25850:42;25888:2;25884;25880:11;25850:42;:::i;:::-;25845:2;25838:5;25834:14;25827:66;25939:2;25935;25931:11;25925:18;25920:2;25913:5;25909:14;25902:42;25983:2;25979;25975:11;25969:18;26012:2;26002:8;25999:16;25996:36;;;26028:1;26025;26018:12;25996:36;26064:55;26111:7;26100:8;26096:2;26092:17;26064:55;:::i;:::-;26059:2;26052:5;26048:14;26041:79;;26139:3;26181:2;26177;26173:11;26167:18;26210:2;26200:8;26197:16;26194:36;;;26226:1;26223;26216:12;26194:36;26257:8;26253:2;26249:17;26239:27;;;26304:7;26297:4;26293:2;26289:13;26285:27;26275:55;;26326:1;26323;26316:12;26275:55;26355:2;26349:9;26378:77;26394:60;26451:2;26394:60;:::i;26378:77::-;26489:15;;;26571:1;26567:10;;;;26559:19;;26555:28;;;26520:12;;;;26595:19;;;26592:39;;;26627:1;26624;26617:12;26592:39;26659:2;26655;26651:11;26671:1704;26687:6;26682:3;26679:15;26671:1704;;;26766:3;26760:10;26802:2;26789:11;26786:19;26783:109;;;26846:1;26875:2;26871;26864:14;26783:109;26915:20;;26987:4;26959:16;;;-1:-1:-1;;26955:30:57;26951:41;26948:131;;;27033:1;27062:2;27058;27051:14;26948:131;27107:22;;:::i;:::-;27172:2;27168;27164:11;27158:18;27205:2;27195:8;27192:16;27189:109;;;27250:1;27280:3;27275;27268:16;27189:109;27327:80;27399:7;27394:2;27383:8;27379:2;27375:17;27371:26;27327:80;:::i;:::-;27318:7;27311:97;;27451:2;27447;27443:11;27437:18;27484:2;27474:8;27471:16;27468:109;;;27529:1;27559:3;27554;27547:16;27468:109;27615:81;27688:7;27683:2;27672:8;27668:2;27664:17;27660:26;27615:81;:::i;:::-;27610:2;27601:7;27597:16;27590:107;;27749:2;27745;27741:11;27735:18;27730:2;27721:7;27717:16;27710:44;27797:2;27793;27789:11;27783:18;27830:2;27820:8;27817:16;27814:109;;;27875:1;27905:3;27900;27893:16;27814:109;27961:64;28017:7;28012:2;28001:8;27997:2;27993:17;27989:26;27961:64;:::i;:::-;27956:2;27947:7;27943:16;27936:90;;28069:4;28065:2;28061:13;28055:20;28104:2;28094:8;28091:16;28088:109;;;28149:1;28179:3;28174;28167:16;28088:109;28235:64;28291:7;28286:2;28275:8;28271:2;28267:17;28263:26;28235:64;:::i;:::-;28217:16;;;28210:90;-1:-1:-1;28313:20:57;;-1:-1:-1;28353:12:57;;;;26704;;26671:1704;;;-1:-1:-1;28391:14:57;;;28384:29;;;;-1:-1:-1;28395:5:57;;25298:3145;-1:-1:-1;;;;;;;25298:3145:57:o;28448:1257::-;28506:3;28544:5;28538:12;28571:6;28566:3;28559:19;28597:4;28626:2;28621:3;28617:12;28610:19;;28651:3;28691:6;28688:1;28684:14;28679:3;28675:24;28733:2;28726:5;28722:14;28754:1;28764:915;28778:6;28775:1;28772:13;28764:915;;;28849:5;28843:4;28839:16;28834:3;28827:29;28885:6;28879:13;28915:4;28932:42;28969:4;28964:2;28958:9;28932:42;:::i;:::-;29013:11;;;29007:18;-1:-1:-1;;;;;;29122:21:57;;;29107:13;;;29100:44;29167:4;29216:11;;;29210:18;29206:27;;;29191:13;;;29184:50;29257:4;29316:11;;;29310:18;29303:26;29296:34;29281:13;;;29274:57;29354:4;29399:11;;;29393:18;29378:13;;;29371:41;29435:4;29480:11;;;29474:18;29512:13;;;29505:25;;;29551:48;29585:13;;;29474:18;29551:48;:::i;:::-;29657:12;;;;29543:56;-1:-1:-1;;;29622:15:57;;;;28800:1;28793:9;28764:915;;29710:699;-1:-1:-1;;;;;29820:39:57;29812:5;29806:12;29802:58;29797:3;29790:71;29772:3;29907:4;29900:5;29896:16;29890:23;29945:4;29938;29933:3;29929:14;29922:28;29971:69;30034:4;30029:3;30025:14;30011:12;29971:69;:::i;:::-;29959:81;;30088:4;30081:5;30077:16;30071:23;30136:3;30130:4;30126:14;30119:4;30114:3;30110:14;30103:38;30164:62;30221:4;30205:14;30164:62;:::i;:::-;30150:76;;;30274:4;30267:5;30263:16;30257:23;30324:3;30316:6;30312:16;30305:4;30300:3;30296:14;30289:40;30345:58;30396:6;30380:14;30345:58;:::i;30414:3550::-;30790:4;30819:3;30849:2;30838:9;30831:21;-1:-1:-1;;;;;30871:39:57;30965:2;30956:6;30950:13;30946:22;30941:2;30930:9;30926:18;30919:50;30988:4;31039:2;31031:6;31027:15;31021:22;31099:2;31085:12;31081:21;31074:4;31063:9;31059:20;31052:51;;31140:4;31132:6;31128:17;31122:24;31112:34;;31183:2;31177:3;31166:9;31162:19;31155:31;31235:4;31227:6;31223:17;31217:24;31195:46;;31278:4;31272:3;31261:9;31257:19;31250:33;31306:54;31355:3;31344:9;31340:19;31324:14;31306:54;:::i;:::-;31397:15;;;31391:22;31454;;;-1:-1:-1;;31450:37:57;31444:3;31429:19;;31422:66;31537:21;;31567:22;;;31292:68;;-1:-1:-1;31702:23:57;;;31605:15;;;;31663:1;31659:14;;;31647:27;;31643:36;;31743:1;31753:2001;31767:6;31764:1;31761:13;31753:2001;;;-1:-1:-1;;31832:19:57;;;31828:33;31816:46;;31885:13;;31977:9;;31937:4;31999:20;;;32080:21;;31925:17;;;32114:24;;;32172:3;32223:1;32219:16;;;32207:29;;32203:39;;;32271:23;;;32160:16;;;;-1:-1:-1;32332:732:57;32348:8;32343:3;32340:17;32332:732;;;32454:3;32450:8;32441:6;32433;32429:19;32425:34;32418:5;32411:49;32493:8;32487:15;32519:43;32555:6;32550:2;32544:9;32519:43;:::i;:::-;32631:2;32627;32623:11;32617:18;32610:26;32603:34;32598:2;32590:6;32586:15;32579:59;32709:4;32705:2;32701:13;32695:20;32688:28;32681:36;32674:4;32666:6;32662:17;32655:63;32775:4;32771:2;32767:13;32761:20;32754:4;32746:6;32742:17;32735:47;32835:2;32831;32827:11;32821:18;32799:40;;32880:4;32875:2;32867:6;32863:15;32856:29;32912:52;32958:4;32950:6;32946:17;32930:14;32912:52;:::i;:::-;32902:62;-1:-1:-1;;32993:17:57;;;;33036:14;;;;32376:1;32367:11;32332:732;;;32336:3;;;;33113:2;33109;33105:11;33099:18;33166:6;33158;33154:19;33149:2;33141:6;33137:15;33130:44;33201:57;33251:6;33235:14;33201:57;:::i;:::-;33187:71;;;33311:4;33307:2;33303:13;33297:20;33290:4;33282:6;33278:17;33271:47;33367:4;33363:2;33359:13;33353:20;33424:6;33416;33412:19;33405:4;33397:6;33393:17;33386:46;33459:41;33493:6;33477:14;33459:41;:::i;:::-;33445:55;;;33549:2;33545;33541:11;33535:18;33513:40;;33602:6;33594;33590:19;33585:2;33577:6;33573:15;33566:44;33633:41;33667:6;33651:14;33633:41;:::i;:::-;33697:15;;;;33732:12;;;;33623:51;-1:-1:-1;;;31789:1:57;31782:9;31753:2001;;;31757:3;33802:9;33794:6;33790:22;33785:2;33774:9;33770:18;33763:50;33830:53;33876:6;33868;33830:53;:::i;:::-;7740:12;;-1:-1:-1;;;;;;7736:58:57;33952:4;33937:20;;7724:71;7864:4;7853:16;;7847:23;7841:30;7834:38;7827:46;7811:14;;;7804:70;33822:61;-1:-1:-1;33892:66:57;;-1:-1:-1;;;;;;;7652:228:57;33969:2023;34046:5;34099:3;34092:4;34084:6;34080:17;34076:27;34066:55;;34117:1;34114;34107:12;34066:55;34146:6;34140:13;34172:4;34196:77;34212:60;34269:2;34212:60;:::i;34196:77::-;34307:15;;;34393:1;34389:10;;;;34377:23;;34373:32;;;34338:12;;;;34417:15;;;34414:35;;;34445:1;34442;34435:12;34414:35;34481:2;34473:6;34469:15;34493:1470;34509:6;34504:3;34501:15;34493:1470;;;34588:3;34582:10;-1:-1:-1;;;;;34665:2:57;34652:11;34649:19;34646:109;;;34709:1;34738:2;34734;34727:14;34646:109;34778:24;;;;34825:4;34853:12;;;-1:-1:-1;;34849:26:57;34845:35;-1:-1:-1;34842:125:57;;;34921:1;34950:2;34946;34939:14;34842:125;34993:22;;:::i;:::-;35042:48;35086:2;35082;35078:11;35042:48;:::i;:::-;35035:5;35028:63;35114:2;35158;35154;35150:11;35144:18;35175:30;35197:7;35175:30;:::i;:::-;35241:7;35236:2;35229:5;35225:14;35218:31;;35272:2;35324;35320;35316:11;35310:18;35305:2;35298:5;35294:14;35287:42;35353:3;35342:14;;35399:3;35395:2;35391:12;35385:19;35433:2;35423:8;35420:16;35417:109;;;35478:1;35508:3;35503;35496:16;35417:109;35562:60;35618:3;35613:2;35602:8;35598:2;35594:17;35590:26;35562:60;:::i;:::-;35557:2;35550:5;35546:14;35539:84;;;35666:2;35662;35658:11;35652:18;35636:34;;35699:2;35689:8;35686:16;35683:109;;;35744:1;35774:3;35769;35762:16;35683:109;35829:60;35885:3;35880:2;35869:8;35865:2;35861:17;35857:26;35829:60;:::i;:::-;35812:15;;;35805:85;35903:18;;-1:-1:-1;;;35941:12:57;;;;34526;;34493:1470;;35997:2163;36075:5;36128:3;36121:4;36113:6;36109:17;36105:27;36095:55;;36146:1;36143;36136:12;36095:55;36175:6;36169:13;36201:4;36225:77;36241:60;36298:2;36241:60;:::i;36225:77::-;36336:15;;;36422:1;36418:10;;;;36406:23;;36402:32;;;36367:12;;;;36446:15;;;36443:35;;;36474:1;36471;36464:12;36443:35;36510:2;36502:6;36498:15;36522:1609;36538:6;36533:3;36530:15;36522:1609;;;36617:3;36611:10;-1:-1:-1;;;;;36694:2:57;36681:11;36678:19;36675:109;;;36738:1;36767:2;36763;36756:14;36675:109;36807:24;;;;36854:4;36882:12;;;-1:-1:-1;;36878:26:57;36874:35;-1:-1:-1;36871:125:57;;;36950:1;36979:2;36975;36968:14;36871:125;37022:22;;:::i;:::-;37071:49;37116:2;37112;37108:11;37071:49;:::i;:::-;37064:5;37057:64;37144:2;37182:42;37220:2;37216;37212:11;37182:42;:::i;:::-;37177:2;37170:5;37166:14;37159:66;37248:2;37286:42;37324:2;37320;37316:11;37286:42;:::i;:::-;37281:2;37274:5;37270:14;37263:66;37353:3;37342:14;;37406:3;37402:2;37398:12;37392:19;37387:2;37380:5;37376:14;37369:43;;37436:3;37482;37478:2;37474:12;37468:19;37516:2;37506:8;37503:16;37500:109;;;37561:1;37591:3;37586;37579:16;37500:109;37646:60;37702:3;37697:2;37686:8;37682:2;37678:17;37674:26;37646:60;:::i;:::-;37640:3;37633:5;37629:15;37622:85;;37731:3;37720:14;;37785:3;37781:2;37777:12;37771:19;37765:3;37758:5;37754:15;37747:44;;37834:2;37830;37826:11;37820:18;37804:34;;37867:2;37857:8;37854:16;37851:109;;;37912:1;37942:3;37937;37930:16;37851:109;37997:60;38053:3;38048:2;38037:8;38033:2;38029:17;38025:26;37997:60;:::i;:::-;37980:15;;;37973:85;38071:18;;-1:-1:-1;;;38109:12:57;;;;36555;;36522:1609;;38165:1242;38280:6;38333:2;38321:9;38312:7;38308:23;38304:32;38301:52;;;38349:1;38346;38339:12;38301:52;38382:9;38376:16;-1:-1:-1;;;;;38452:2:57;38444:6;38441:14;38438:34;;;38468:1;38465;38458:12;38438:34;38491:22;;;;38547:4;38529:16;;;38525:27;38522:47;;;38565:1;38562;38555:12;38522:47;38591:22;;:::i;:::-;38636:33;38666:2;38636:33;:::i;:::-;38629:5;38622:48;38702:42;38740:2;38736;38732:11;38702:42;:::i;:::-;38697:2;38690:5;38686:14;38679:66;38791:2;38787;38783:11;38777:18;38772:2;38765:5;38761:14;38754:42;38835:2;38831;38827:11;38821:18;38864:2;38854:8;38851:16;38848:36;;;38880:1;38877;38870:12;38848:36;38916:79;38987:7;38976:8;38972:2;38968:17;38916:79;:::i;:::-;38911:2;38904:5;38900:14;38893:103;;39035:3;39031:2;39027:12;39021:19;39065:2;39055:8;39052:16;39049:36;;;39081:1;39078;39071:12;39049:36;39118:80;39190:7;39179:8;39175:2;39171:17;39118:80;:::i;:::-;39112:3;39105:5;39101:15;39094:105;;39238:3;39234:2;39230:12;39224:19;39268:2;39258:8;39255:16;39252:36;;;39284:1;39281;39274:12;39252:36;39321:55;39368:7;39357:8;39353:2;39349:17;39321:55;:::i;:::-;39315:3;39304:15;;39297:80;-1:-1:-1;39308:5:57;38165:1242;-1:-1:-1;;;;;38165:1242:57:o;39412:127::-;39473:10;39468:3;39464:20;39461:1;39454:31;39504:4;39501:1;39494:15;39528:4;39525:1;39518:15;39544:232;39583:3;39604:17;;;39601:140;;39663:10;39658:3;39654:20;39651:1;39644:31;39698:4;39695:1;39688:15;39726:4;39723:1;39716:15;39601:140;-1:-1:-1;39768:1:57;39757:13;;39544:232::o;39781:207::-;39927:2;39912:18;;39939:43;39916:9;39964:6;39939:43;:::i;40711:401::-;40913:2;40895:21;;;40952:2;40932:18;;;40925:30;40991:34;40986:2;40971:18;;40964:62;-1:-1:-1;;;41057:2:57;41042:18;;41035:35;41102:3;41087:19;;40711:401::o;42009:545::-;42111:2;42106:3;42103:11;42100:448;;;42147:1;42172:5;42168:2;42161:17;42217:4;42213:2;42203:19;42287:2;42275:10;42271:19;42268:1;42264:27;42258:4;42254:38;42323:4;42311:10;42308:20;42305:47;;;-1:-1:-1;42346:4:57;42305:47;42401:2;42396:3;42392:12;42389:1;42385:20;42379:4;42375:31;42365:41;;42456:82;42474:2;42467:5;42464:13;42456:82;;;42519:17;;;42500:1;42489:13;42456:82;;;42460:3;;;42009:545;;;:::o;42730:1352::-;42856:3;42850:10;-1:-1:-1;;;;;42875:6:57;42872:30;42869:56;;;42905:18;;:::i;:::-;42934:97;43024:6;42984:38;43016:4;43010:11;42984:38;:::i;:::-;42978:4;42934:97;:::i;:::-;43086:4;;43150:2;43139:14;;43167:1;43162:663;;;;43869:1;43886:6;43883:89;;;-1:-1:-1;43938:19:57;;;43932:26;43883:89;-1:-1:-1;;42687:1:57;42683:11;;;42679:24;42675:29;42665:40;42711:1;42707:11;;;42662:57;43985:81;;43132:944;;43162:663;41956:1;41949:14;;;41993:4;41980:18;;-1:-1:-1;;43198:20:57;;;43316:236;43330:7;43327:1;43324:14;43316:236;;;43419:19;;;43413:26;43398:42;;43511:27;;;;43479:1;43467:14;;;;43346:19;;43316:236;;;43320:3;43580:6;43571:7;43568:19;43565:201;;;43641:19;;;43635:26;-1:-1:-1;;43724:1:57;43720:14;;;43736:3;43716:24;43712:37;43708:42;43693:58;43678:74;;43565:201;-1:-1:-1;;;;;43812:1:57;43796:14;;;43792:22;43779:36;;-1:-1:-1;42730:1352:57:o;44087:414::-;44289:2;44271:21;;;44328:2;44308:18;;;44301:30;44367:34;44362:2;44347:18;;44340:62;-1:-1:-1;;;44433:2:57;44418:18;;44411:48;44491:3;44476:19;;44087:414::o;44506:840::-;44983:2;44972:9;44965:21;44946:4;45009:67;45072:2;45061:9;45057:18;45049:6;45009:67;:::i;:::-;45124:9;45116:6;45112:22;45107:2;45096:9;45092:18;45085:50;45158:56;45207:6;45199;45158:56;:::i;:::-;45144:70;;45262:9;45254:6;45250:22;45245:2;45234:9;45230:18;45223:50;45290;45333:6;45325;45290:50;:::i;45351:1993::-;45428:5;45481:3;45474:4;45466:6;45462:17;45458:27;45448:55;;45499:1;45496;45489:12;45448:55;45528:6;45522:13;45554:4;45578:77;45594:60;45651:2;45594:60;:::i;45578:77::-;45689:15;;;45775:1;45771:10;;;;45759:23;;45755:32;;;45720:12;;;;45799:15;;;45796:35;;;45827:1;45824;45817:12;45796:35;45863:2;45855:6;45851:15;45875:1440;45891:6;45886:3;45883:15;45875:1440;;;45970:3;45964:10;-1:-1:-1;;;;;46047:2:57;46034:11;46031:19;46028:109;;;46091:1;46120:2;46116;46109:14;46028:109;46160:24;;;;46207:4;46235:12;;;-1:-1:-1;;46231:26:57;46227:35;-1:-1:-1;46224:125:57;;;46303:1;46332:2;46328;46321:14;46224:125;46375:22;;:::i;:::-;46424:49;46469:2;46465;46461:11;46424:49;:::i;:::-;46417:5;46410:64;46497:2;46535:42;46573:2;46569;46565:11;46535:42;:::i;:::-;46530:2;46523:5;46519:14;46512:66;46601:2;46639:42;46677:2;46673;46669:11;46639:42;:::i;:::-;46634:2;46627:5;46623:14;46616:66;46706:3;46695:14;;46759:3;46755:2;46751:12;46745:19;46740:2;46733:5;46729:14;46722:43;;46789:3;46829:40;46864:3;46860:2;46856:12;46829:40;:::i;:::-;46823:3;46816:5;46812:15;46805:65;46894:3;46883:14;;46934:40;46969:3;46965:2;46961:12;46934:40;:::i;:::-;46917:15;;;46910:65;47010:11;;;47004:18;;47038:16;;;47035:109;;;47096:1;47126:3;47121;47114:16;47035:109;47181:60;47237:3;47232:2;47221:8;47217:2;47213:17;47209:26;47181:60;:::i;:::-;47164:15;;;47157:85;47255:18;;-1:-1:-1;;;47293:12:57;;;;45908;;45875:1440;;47349:2720;47457:6;47488:2;47531;47519:9;47510:7;47506:23;47502:32;47499:52;;;47547:1;47544;47537:12;47499:52;47580:9;47574:16;-1:-1:-1;;;;;47650:2:57;47642:6;47639:14;47636:34;;;47666:1;47663;47656:12;47636:34;47689:22;;;;47745:4;47727:16;;;47723:27;47720:47;;;47763:1;47760;47753:12;47720:47;47789:22;;:::i;:::-;47834:33;47864:2;47834:33;:::i;:::-;47827:5;47820:48;47907:2;47903;47899:11;47893:18;47936:2;47926:8;47923:16;47920:36;;;47952:1;47949;47942:12;47920:36;47975:17;;48023:4;48015:13;;48011:27;-1:-1:-1;48001:55:57;;48052:1;48049;48042:12;48001:55;48081:2;48075:9;48104:77;48120:60;48177:2;48120:60;:::i;48104:77::-;48215:15;;;48297:1;48293:10;;;;48285:19;;48281:28;;;48246:12;;;;48321:19;;;48318:39;;;48353:1;48350;48343:12;48318:39;48385:2;48381;48377:11;48397:1210;48413:6;48408:3;48405:15;48397:1210;;;48492:3;48486:10;48528:2;48515:11;48512:19;48509:39;;;48544:1;48541;48534:12;48509:39;48571:20;;48643:4;48615:16;;;-1:-1:-1;;48611:30:57;48607:41;48604:61;;;48661:1;48658;48651:12;48604:61;48693:22;;:::i;:::-;48744:48;48788:2;48784;48780:11;48744:48;:::i;:::-;48735:7;48728:65;48845:2;48841;48837:11;48831:18;48826:2;48817:7;48813:16;48806:44;48892:2;48888;48884:11;48878:18;48909:30;48931:7;48909:30;:::i;:::-;48972:2;48959:16;;48952:33;49027:4;49019:13;;49013:20;49046:30;49013:20;49046:30;:::i;:::-;49109:2;49096:16;;49089:33;49164:3;49156:12;;49150:19;49182:30;49150:19;49182:30;:::i;:::-;49245:4;49232:18;;49225:35;49303:4;49295:13;;49289:20;49325:16;;;49322:106;;;49382:1;49411:2;49407;49400:14;49322:106;49467:64;49523:7;49518:2;49507:8;49503:2;49499:17;49495:26;49467:64;:::i;:::-;49461:3;49448:17;;49441:91;-1:-1:-1;49545:20:57;;-1:-1:-1;49585:12:57;;;;48430;;48397:1210;;;48401:3;49639:5;49634:2;49627:5;49623:14;49616:29;;;;;49684:2;49680;49676:11;49670:18;49654:34;;49713:2;49703:8;49700:16;49697:36;;;49729:1;49726;49719:12;49697:36;49765:79;49836:7;49825:8;49821:2;49817:17;49765:79;:::i;:::-;49760:2;49753:5;49749:14;49742:103;49884:2;49880;49876:11;49870:18;49854:34;;49913:2;49903:8;49900:16;49897:36;;;49929:1;49926;49919:12;49897:36;49965:73;50030:7;50019:8;50015:2;50011:17;49965:73;:::i;:::-;49960:2;49949:14;;49942:97;49953:5;47349:2720;-1:-1:-1;;;;;;47349:2720:57:o;50428:489::-;-1:-1:-1;;;;;50697:15:57;;;50679:34;;50749:15;;50744:2;50729:18;;50722:43;50796:2;50781:18;;50774:34;;;50844:3;50839:2;50824:18;;50817:31;;;50622:4;;50865:46;;50891:19;;50883:6;50865:46;:::i;50922:249::-;50991:6;51044:2;51032:9;51023:7;51019:23;51015:32;51012:52;;;51060:1;51057;51050:12;51012:52;51092:9;51086:16;51111:30;51135:5;51111:30;:::i", + "linkReferences": { + + }, + "immutableReferences": { + "34162": [ + { + "start": 5082, + "length": 32 + } + ], + "34171": [ + { + "start": 2667, + "length": 32 + }, + { + "start": 2914, + "length": 32 + }, + { + "start": 4419, + "length": 32 + }, + { + "start": 4521, + "length": 32 + }, + { + "start": 4931, + "length": 32 + } + ], + "34174": [ + { + "start": 6951, + "length": 32 + } + ], + "34176": [ + { + "start": 993, + "length": 32 + }, + { + "start": 3250, + "length": 32 + } + ], + "34178": [ + { + "start": 916, + "length": 32 + }, + { + "start": 3283, + "length": 32 + } + ], + "40715": [ + { + "start": 1057, + "length": 32 + }, + { + "start": 4107, + "length": 32 + }, + { + "start": 4667, + "length": 32 + }, + { + "start": 7079, + "length": 32 + } + ] + } + }, + "methodIdentifiers": { + "ADDRESSES_PROVIDER_V2()": "46916301", + "APP_ID()": "c187bbc1", + "IMPLEMENTATION_VERSION()": "754b377c", + "IS_IMPERSONATION_MODE()": "a183dc27", + "IS_NON_TRANSFERABLE()": "c4b2e8ff", + "SISMO_CONNECT_LIB_VERSION()": "c9512d99", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "buildSignature(bool)": "49161195", + "buildSignature(bool,bytes)": "cea8eb4e", + "buildSignature(bytes,bool,bytes)": "e0689703", + "buildSignature(bytes,bytes)": "6e01370e", + "claimWithSismoConnect(bytes,address)": "07c8064f", + "config()": "79502c55", + "getApproved(uint256)": "081812fc", + "getRequests()": "8813ce12", + "isApprovedForAll(address,address)": "e985e9c5", + "name()": "06fdde03", + "owner()": "8da5cb5b", + "ownerOf(uint256)": "6352211e", + "renounceOwnership()": "715018a6", + "safeTransferFrom(address,address,uint256)": "42842e0e", + "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde", + "setApprovalForAll(address,bool)": "a22cb465", + "setBaseTokenUri(string)": "95652cfa", + "supportsInterface(bytes4)": "01ffc9a7", + "symbol()": "95d89b41", + "tokenURI(uint256)": "c87b56dd", + "transferFrom(address,address,uint256)": "23b872dd", + "transferOwnership(address)": "f2fde38b" + }, + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"baseURI_\",\"type\":\"string\"},{\"internalType\":\"bytes16\",\"name\":\"appId_\",\"type\":\"bytes16\"},{\"internalType\":\"bool\",\"name\":\"isImpersonationMode_\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum AuthType\",\"name\":\"authType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"userId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isAnon\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isOptional\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSelectableByUser\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"internalType\":\"struct AuthRequest[]\",\"name\":\"authRequests_\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum ClaimType\",\"name\":\"claimType\",\"type\":\"uint8\"},{\"internalType\":\"bytes16\",\"name\":\"groupId\",\"type\":\"bytes16\"},{\"internalType\":\"bytes16\",\"name\":\"groupTimestamp\",\"type\":\"bytes16\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isOptional\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSelectableByUser\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"internalType\":\"struct ClaimRequest[]\",\"name\":\"claimRequests_\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isNonTransferable_\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"enum AuthType\",\"name\":\"authType\",\"type\":\"uint8\"}],\"name\":\"AuthTypeNotFoundInVerifiedResult\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC721NonTransferable\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"baseTokenURI\",\"type\":\"string\"}],\"name\":\"BaseTokenURISet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESSES_PROVIDER_V2\",\"outputs\":[{\"internalType\":\"contract IAddressesProvider\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"APP_ID\",\"outputs\":[{\"internalType\":\"bytes16\",\"name\":\"\",\"type\":\"bytes16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IMPLEMENTATION_VERSION\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IS_IMPERSONATION_MODE\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IS_NON_TRANSFERABLE\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SISMO_CONNECT_LIB_VERSION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"isSelectableByUser\",\"type\":\"bool\"}],\"name\":\"buildSignature\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isSelectableByUser\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"internalType\":\"struct SignatureRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"buildSignature\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isSelectableByUser\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"internalType\":\"struct SignatureRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"isSelectableByUser\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"buildSignature\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isSelectableByUser\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"internalType\":\"struct SignatureRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isSelectableByUser\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"buildSignature\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isSelectableByUser\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"internalType\":\"struct SignatureRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"responseBytes\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"claimWithSismoConnect\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"config\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes16\",\"name\":\"appId\",\"type\":\"bytes16\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"isImpersonationMode\",\"type\":\"bool\"}],\"internalType\":\"struct VaultConfig\",\"name\":\"vault\",\"type\":\"tuple\"}],\"internalType\":\"struct SismoConnectConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRequests\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum AuthType\",\"name\":\"authType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"userId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isAnon\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isOptional\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSelectableByUser\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"internalType\":\"struct AuthRequest[]\",\"name\":\"auths\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum ClaimType\",\"name\":\"claimType\",\"type\":\"uint8\"},{\"internalType\":\"bytes16\",\"name\":\"groupId\",\"type\":\"bytes16\"},{\"internalType\":\"bytes16\",\"name\":\"groupTimestamp\",\"type\":\"bytes16\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isOptional\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSelectableByUser\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"internalType\":\"struct ClaimRequest[]\",\"name\":\"claims\",\"type\":\"tuple[]\"}],\"internalType\":\"struct ZKDrop.Requests\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"baseUri\",\"type\":\"string\"}],\"name\":\"setBaseTokenUri\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Reverts, this is a non transferable ERC115 contract\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"ERC721 can be set to non transferable in the constructor\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/ZKDrop.sol\":\"ZKDrop\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/lib/openzeppelin-contracts/contracts/\",\":@sismo-core/hydra-s3/=lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/lib/hydra-s3-zkps/package/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":hydra-s3-zkps/=lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/lib/hydra-s3-zkps/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":sismo-connect-onchain-verifier/=lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/\",\":sismo-connect-packages/=lib/sismo-connect-packages/packages/sismo-connect-solidity/src/\",\":sismo-connect-solidity/=lib/sismo-connect-packages/packages/sismo-connect-solidity/src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc980984badf3984b6303b377711220e067722bbd6a135b24669ff5069ef9f32\",\"dweb:/ipfs/QmPHXMSXj99XjSVM21YsY6aNtLLjLVXDbyN76J5HQYvvrz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x2c309e7df9e05e6ce15bedfe74f3c61b467fc37e0fae9eab496acf5ea0bbd7ff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7063b5c98711a98018ba4635ac74cee1c1cfa2ea01099498e062699ed9530005\",\"dweb:/ipfs/QmeJ8rGXkcv7RrqLdAW8PCXPAykxVsddfYY6g5NaTwmRFE\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e66dfde185df46104c11bc89d08fa0760737aa59a2b8546a656473d810a8ea4\",\"dweb:/ipfs/QmXvyqtXPaPss2PD7eqPoSao5Szm2n6UMoiG8TZZDjmChR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b81d9ff6559ea5c47fc573e17ece6d9ba5d6839e213e6ebc3b4c5c8fe4199d7f\",\"dweb:/ipfs/QmPCW1bFisUzJkyjroY3yipwfism9RRCigCcK1hbXtVM8n\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c\",\"dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7\",\"dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6\"]},\"lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/src/interfaces/ISismoConnectVerifier.sol\":{\"keccak256\":\"0x5d75914f12cf3f8d0cf67bca21aaf9d54fb9906e445fc1f2faf61110e1f17a2b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1910f1912cf2e967620a6863972f14a4d6b46e1896645691dd0a3d94ba080bd\",\"dweb:/ipfs/QmcBbYEz7T74rWCRKA4bTXWWuXCVSFfMRujjCj1DWjbqyz\"]},\"lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/src/libs/sismo-connect/SismoConnectLib.sol\":{\"keccak256\":\"0x33aa00d8e5e494f53d8d094210ec314fd8d84becb9d2070ee0f23760d0c96d5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aeb0e6b4386ff99259e27fd774f755f535644d4231a883d5586d3cb7252fa7d3\",\"dweb:/ipfs/QmQt7ueMtQvQLbWrRULJC5AgP47TG6ANTsSnQ2gDUK7BkT\"]},\"lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/src/libs/utils/AuthRequestBuilder.sol\":{\"keccak256\":\"0xbdda4b5b5409ac0c27f2400f51862a9571522c5d7e208026a18999485c5f014b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187d17390b234da4204b007ef4a55e66a6c924ee86fc84172e4b6933b97f239b\",\"dweb:/ipfs/QmPgfmeZYdS2fvVFn24QCLaKJGsVqR3BceHsigGhDfKY3J\"]},\"lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/src/libs/utils/ClaimRequestBuilder.sol\":{\"keccak256\":\"0x7b4109877f1339b0d98201b4c850a25d78ffe238e255eaec1b07a1064c8d8742\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://58584f1e68aeb2e1ebb8fa05c0a756ec082afff05ef21b5f373f199d9e83bb2a\",\"dweb:/ipfs/QmUvT1HHThpEf8zRJYkhsVjVX4w3nZZoG718n2Cad2z6wH\"]},\"lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/src/libs/utils/RequestBuilder.sol\":{\"keccak256\":\"0x19fc14558d3512750b4d4d92238df61f66ab0687bef02468565c3e98fe969ac4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bfea028b27cc576b4cb219fb6c5283b108ccb3e876bccfc4321c7b86360c7807\",\"dweb:/ipfs/QmWrXZXhBHVjgpSNnP45iNqihjGwKyszsSsbbDgTu1yfpy\"]},\"lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/src/libs/utils/SignatureBuilder.sol\":{\"keccak256\":\"0x5d071367c63510c3e38d4fe73b81ec2b7eda1c442fe3e8c75fcbab0d929524dc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4e6ca7efdab0b903c060b743cf88c1f33db62e23a53786be56f91eddc6ccaeac\",\"dweb:/ipfs/QmSRmRKouzYAqeEArZDrquG5i1hJHnNE18qegMhKaQYVEk\"]},\"lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/src/libs/utils/SismoConnectHelper.sol\":{\"keccak256\":\"0xa3affedc6093d4b9a5796ee1ac1a6bc552991f19ca319a76ef5f8f522f730346\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b6bb082dd92cae11ab6a470a0cd5522e9f79664fe4b8967b8fad6420bed3c9a\",\"dweb:/ipfs/QmQEg2YE76ZPAfRaVUJSURT7BFPV7D4XqXYoztHYzNpNnf\"]},\"lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/src/libs/utils/Structs.sol\":{\"keccak256\":\"0x978c56d685ed88ce85590f7f7acec107e34f5ef6b4cf9f4dcfc2be5b5d3e97d8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6373516cad9fa0e4fbc344b3ce7155a4eca356403f748209cd13d86f8b24dee4\",\"dweb:/ipfs/QmRDHCyetFYKL36GdM3hibo4hFHEWEZ9xPKrrvw9fBnLQn\"]},\"lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/src/periphery/interfaces/IAddressesProvider.sol\":{\"keccak256\":\"0x7088a8721bb95c4d2ae77db038542e3afccfdb5772a9f6af500098f34514369e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://80cbf6bd03d96a9ef936b00d3cc7041e74e88ae6aa3bd6d8ab5a87a3c1eb7092\",\"dweb:/ipfs/QmTxXhUhPC9siLtnudFpqtcV1JsJyDULmTV17F1NQdKFy7\"]},\"lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/src/verifiers/IHydraS3Verifier.sol\":{\"keccak256\":\"0x2c826b5e1ecfa9744fac3e13e9d19bc3eee097c5327844239c2d39ff37393825\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dd09478db59c454a03532b66024bd544cb537c7a3f6d9b5f7cdf5afae5e0e1ad\",\"dweb:/ipfs/QmTf64dzbbCfFbssr8b8QG7K1AYDV5MThJ55Gyzi8DrwKv\"]},\"lib/sismo-connect-packages/packages/sismo-connect-solidity/src/SismoLib.sol\":{\"keccak256\":\"0xcacd8c83ca5df7d2562f05aaf299a65bdc2af393065b67cff0dc5f31ea6589b0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c3e7736338bab098b47788ac36d001c15d4441e344f0a52e012089417c4b134\",\"dweb:/ipfs/QmfJjb7LQ31o7XdFsE917sZKXYVJTry8npdhSmKo9KywNu\"]},\"src/ZKDrop.sol\":{\"keccak256\":\"0xdca8cfb8d7d5808cc94247ebec1245f3eaf9eb64608a50f19fc31c9d97147914\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de49f07be7b5fbb54fc97e74f5e68b72c1e37dd224151d2a86c472edd90e0769\",\"dweb:/ipfs/QmaGxT3kiP13zfeXFYsLwnqSR18VR3SCEq3cVbU2QUx7Tt\"]}},\"version\":1}", + "metadata": { + "compiler": { + "version": "0.8.20+commit.a1b79de6" + }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "name_", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol_", + "type": "string" + }, + { + "internalType": "string", + "name": "baseURI_", + "type": "string" + }, + { + "internalType": "bytes16", + "name": "appId_", + "type": "bytes16" + }, + { + "internalType": "bool", + "name": "isImpersonationMode_", + "type": "bool" + }, + { + "internalType": "struct AuthRequest[]", + "name": "authRequests_", + "type": "tuple[]", + "components": [ + { + "internalType": "enum AuthType", + "name": "authType", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "userId", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "isAnon", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isOptional", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isSelectableByUser", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "extraData", + "type": "bytes" + } + ] + }, + { + "internalType": "struct ClaimRequest[]", + "name": "claimRequests_", + "type": "tuple[]", + "components": [ + { + "internalType": "enum ClaimType", + "name": "claimType", + "type": "uint8" + }, + { + "internalType": "bytes16", + "name": "groupId", + "type": "bytes16" + }, + { + "internalType": "bytes16", + "name": "groupTimestamp", + "type": "bytes16" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "isOptional", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isSelectableByUser", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "extraData", + "type": "bytes" + } + ] + }, + { + "internalType": "address", + "name": "owner_", + "type": "address" + }, + { + "internalType": "bool", + "name": "isNonTransferable_", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "enum AuthType", + "name": "authType", + "type": "uint8" + } + ], + "type": "error", + "name": "AuthTypeNotFoundInVerifiedResult" + }, + { + "inputs": [ + + ], + "type": "error", + "name": "ERC721NonTransferable" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address", + "indexed": true + }, + { + "internalType": "address", + "name": "approved", + "type": "address", + "indexed": true + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256", + "indexed": true + } + ], + "type": "event", + "name": "Approval", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address", + "indexed": true + }, + { + "internalType": "address", + "name": "operator", + "type": "address", + "indexed": true + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool", + "indexed": false + } + ], + "type": "event", + "name": "ApprovalForAll", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "string", + "name": "baseTokenURI", + "type": "string", + "indexed": false + } + ], + "type": "event", + "name": "BaseTokenURISet", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "previousOwner", + "type": "address", + "indexed": true + }, + { + "internalType": "address", + "name": "newOwner", + "type": "address", + "indexed": true + } + ], + "type": "event", + "name": "OwnershipTransferred", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address", + "indexed": true + }, + { + "internalType": "address", + "name": "to", + "type": "address", + "indexed": true + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256", + "indexed": true + } + ], + "type": "event", + "name": "Transfer", + "anonymous": false + }, + { + "inputs": [ + + ], + "stateMutability": "view", + "type": "function", + "name": "ADDRESSES_PROVIDER_V2", + "outputs": [ + { + "internalType": "contract IAddressesProvider", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [ + + ], + "stateMutability": "view", + "type": "function", + "name": "APP_ID", + "outputs": [ + { + "internalType": "bytes16", + "name": "", + "type": "bytes16" + } + ] + }, + { + "inputs": [ + + ], + "stateMutability": "view", + "type": "function", + "name": "IMPLEMENTATION_VERSION", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ] + }, + { + "inputs": [ + + ], + "stateMutability": "view", + "type": "function", + "name": "IS_IMPERSONATION_MODE", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [ + + ], + "stateMutability": "view", + "type": "function", + "name": "IS_NON_TRANSFERABLE", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [ + + ], + "stateMutability": "view", + "type": "function", + "name": "SISMO_CONNECT_LIB_VERSION", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "approve" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function", + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "isSelectableByUser", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function", + "name": "buildSignature", + "outputs": [ + { + "internalType": "struct SignatureRequest", + "name": "", + "type": "tuple", + "components": [ + { + "internalType": "bytes", + "name": "message", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "isSelectableByUser", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "extraData", + "type": "bytes" + } + ] + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "message", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "extraData", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function", + "name": "buildSignature", + "outputs": [ + { + "internalType": "struct SignatureRequest", + "name": "", + "type": "tuple", + "components": [ + { + "internalType": "bytes", + "name": "message", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "isSelectableByUser", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "extraData", + "type": "bytes" + } + ] + } + ] + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "isSelectableByUser", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "extraData", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function", + "name": "buildSignature", + "outputs": [ + { + "internalType": "struct SignatureRequest", + "name": "", + "type": "tuple", + "components": [ + { + "internalType": "bytes", + "name": "message", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "isSelectableByUser", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "extraData", + "type": "bytes" + } + ] + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "message", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "isSelectableByUser", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "extraData", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function", + "name": "buildSignature", + "outputs": [ + { + "internalType": "struct SignatureRequest", + "name": "", + "type": "tuple", + "components": [ + { + "internalType": "bytes", + "name": "message", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "isSelectableByUser", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "extraData", + "type": "bytes" + } + ] + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "responseBytes", + "type": "bytes" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "claimWithSismoConnect" + }, + { + "inputs": [ + + ], + "stateMutability": "view", + "type": "function", + "name": "config", + "outputs": [ + { + "internalType": "struct SismoConnectConfig", + "name": "", + "type": "tuple", + "components": [ + { + "internalType": "bytes16", + "name": "appId", + "type": "bytes16" + }, + { + "internalType": "struct VaultConfig", + "name": "vault", + "type": "tuple", + "components": [ + { + "internalType": "bool", + "name": "isImpersonationMode", + "type": "bool" + } + ] + } + ] + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function", + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [ + + ], + "stateMutability": "view", + "type": "function", + "name": "getRequests", + "outputs": [ + { + "internalType": "struct ZKDrop.Requests", + "name": "", + "type": "tuple", + "components": [ + { + "internalType": "struct AuthRequest[]", + "name": "auths", + "type": "tuple[]", + "components": [ + { + "internalType": "enum AuthType", + "name": "authType", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "userId", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "isAnon", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isOptional", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isSelectableByUser", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "extraData", + "type": "bytes" + } + ] + }, + { + "internalType": "struct ClaimRequest[]", + "name": "claims", + "type": "tuple[]", + "components": [ + { + "internalType": "enum ClaimType", + "name": "claimType", + "type": "uint8" + }, + { + "internalType": "bytes16", + "name": "groupId", + "type": "bytes16" + }, + { + "internalType": "bytes16", + "name": "groupTimestamp", + "type": "bytes16" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "isOptional", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isSelectableByUser", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "extraData", + "type": "bytes" + } + ] + } + ] + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function", + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [ + + ], + "stateMutability": "view", + "type": "function", + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ] + }, + { + "inputs": [ + + ], + "stateMutability": "view", + "type": "function", + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function", + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [ + + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "renounceOwnership" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "safeTransferFrom" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "safeTransferFrom" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "setApprovalForAll" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "baseUri", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "setBaseTokenUri" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function", + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [ + + ], + "stateMutability": "view", + "type": "function", + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function", + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "transferFrom" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "transferOwnership" + } + ], + "devdoc": { + "kind": "dev", + "methods": { + "approve(address,uint256)": { + "details": "See {IERC721-approve}." + }, + "balanceOf(address)": { + "details": "See {IERC721-balanceOf}." + }, + "getApproved(uint256)": { + "details": "See {IERC721-getApproved}." + }, + "isApprovedForAll(address,address)": { + "details": "Reverts, this is a non transferable ERC115 contract" + }, + "name()": { + "details": "See {IERC721Metadata-name}." + }, + "owner()": { + "details": "Returns the address of the current owner." + }, + "ownerOf(uint256)": { + "details": "See {IERC721-ownerOf}." + }, + "renounceOwnership()": { + "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner." + }, + "safeTransferFrom(address,address,uint256)": { + "details": "See {IERC721-safeTransferFrom}." + }, + "safeTransferFrom(address,address,uint256,bytes)": { + "details": "See {IERC721-safeTransferFrom}." + }, + "setApprovalForAll(address,bool)": { + "details": "ERC721 can be set to non transferable in the constructor" + }, + "supportsInterface(bytes4)": { + "details": "See {IERC165-supportsInterface}." + }, + "symbol()": { + "details": "See {IERC721Metadata-symbol}." + }, + "transferFrom(address,address,uint256)": { + "details": "See {IERC721-transferFrom}." + }, + "transferOwnership(address)": { + "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner." + } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": { + + }, + "version": 1 + } + }, + "settings": { + "remappings": [ + ":@openzeppelin/contracts/=lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/lib/openzeppelin-contracts/contracts/", + ":@sismo-core/hydra-s3/=lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/lib/hydra-s3-zkps/package/contracts/", + ":ds-test/=lib/forge-std/lib/ds-test/src/", + ":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/", + ":forge-std/=lib/forge-std/src/", + ":hydra-s3-zkps/=lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/lib/hydra-s3-zkps/", + ":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/", + ":openzeppelin-contracts/=lib/openzeppelin-contracts/", + ":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", + ":openzeppelin/=lib/openzeppelin-contracts/contracts/", + ":sismo-connect-onchain-verifier/=lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/", + ":sismo-connect-packages/=lib/sismo-connect-packages/packages/sismo-connect-solidity/src/", + ":sismo-connect-solidity/=lib/sismo-connect-packages/packages/sismo-connect-solidity/src/" + ], + "optimizer": { + "enabled": true, + "runs": 200 + }, + "metadata": { + "bytecodeHash": "ipfs" + }, + "compilationTarget": { + "src/ZKDrop.sol": "ZKDrop" + }, + "libraries": { + + } + }, + "sources": { + "lib/openzeppelin-contracts/contracts/access/Ownable.sol": { + "keccak256": "0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218", + "urls": [ + "bzz-raw://fc980984badf3984b6303b377711220e067722bbd6a135b24669ff5069ef9f32", + "dweb:/ipfs/QmPHXMSXj99XjSVM21YsY6aNtLLjLVXDbyN76J5HQYvvrz" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol": { + "keccak256": "0x2c309e7df9e05e6ce15bedfe74f3c61b467fc37e0fae9eab496acf5ea0bbd7ff", + "urls": [ + "bzz-raw://7063b5c98711a98018ba4635ac74cee1c1cfa2ea01099498e062699ed9530005", + "dweb:/ipfs/QmeJ8rGXkcv7RrqLdAW8PCXPAykxVsddfYY6g5NaTwmRFE" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol": { + "keccak256": "0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266", + "urls": [ + "bzz-raw://7e66dfde185df46104c11bc89d08fa0760737aa59a2b8546a656473d810a8ea4", + "dweb:/ipfs/QmXvyqtXPaPss2PD7eqPoSao5Szm2n6UMoiG8TZZDjmChR" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol": { + "keccak256": "0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da", + "urls": [ + "bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708", + "dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol": { + "keccak256": "0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9", + "urls": [ + "bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146", + "dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/Address.sol": { + "keccak256": "0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa", + "urls": [ + "bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931", + "dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/Context.sol": { + "keccak256": "0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7", + "urls": [ + "bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92", + "dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/Strings.sol": { + "keccak256": "0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0", + "urls": [ + "bzz-raw://b81d9ff6559ea5c47fc573e17ece6d9ba5d6839e213e6ebc3b4c5c8fe4199d7f", + "dweb:/ipfs/QmPCW1bFisUzJkyjroY3yipwfism9RRCigCcK1hbXtVM8n" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol": { + "keccak256": "0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b", + "urls": [ + "bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d", + "dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol": { + "keccak256": "0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1", + "urls": [ + "bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f", + "dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/math/Math.sol": { + "keccak256": "0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3", + "urls": [ + "bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c", + "dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol": { + "keccak256": "0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc", + "urls": [ + "bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7", + "dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6" + ], + "license": "MIT" + }, + "lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/src/interfaces/ISismoConnectVerifier.sol": { + "keccak256": "0x5d75914f12cf3f8d0cf67bca21aaf9d54fb9906e445fc1f2faf61110e1f17a2b", + "urls": [ + "bzz-raw://b1910f1912cf2e967620a6863972f14a4d6b46e1896645691dd0a3d94ba080bd", + "dweb:/ipfs/QmcBbYEz7T74rWCRKA4bTXWWuXCVSFfMRujjCj1DWjbqyz" + ], + "license": "MIT" + }, + "lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/src/libs/sismo-connect/SismoConnectLib.sol": { + "keccak256": "0x33aa00d8e5e494f53d8d094210ec314fd8d84becb9d2070ee0f23760d0c96d5c", + "urls": [ + "bzz-raw://aeb0e6b4386ff99259e27fd774f755f535644d4231a883d5586d3cb7252fa7d3", + "dweb:/ipfs/QmQt7ueMtQvQLbWrRULJC5AgP47TG6ANTsSnQ2gDUK7BkT" + ], + "license": "MIT" + }, + "lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/src/libs/utils/AuthRequestBuilder.sol": { + "keccak256": "0xbdda4b5b5409ac0c27f2400f51862a9571522c5d7e208026a18999485c5f014b", + "urls": [ + "bzz-raw://187d17390b234da4204b007ef4a55e66a6c924ee86fc84172e4b6933b97f239b", + "dweb:/ipfs/QmPgfmeZYdS2fvVFn24QCLaKJGsVqR3BceHsigGhDfKY3J" + ], + "license": "MIT" + }, + "lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/src/libs/utils/ClaimRequestBuilder.sol": { + "keccak256": "0x7b4109877f1339b0d98201b4c850a25d78ffe238e255eaec1b07a1064c8d8742", + "urls": [ + "bzz-raw://58584f1e68aeb2e1ebb8fa05c0a756ec082afff05ef21b5f373f199d9e83bb2a", + "dweb:/ipfs/QmUvT1HHThpEf8zRJYkhsVjVX4w3nZZoG718n2Cad2z6wH" + ], + "license": "MIT" + }, + "lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/src/libs/utils/RequestBuilder.sol": { + "keccak256": "0x19fc14558d3512750b4d4d92238df61f66ab0687bef02468565c3e98fe969ac4", + "urls": [ + "bzz-raw://bfea028b27cc576b4cb219fb6c5283b108ccb3e876bccfc4321c7b86360c7807", + "dweb:/ipfs/QmWrXZXhBHVjgpSNnP45iNqihjGwKyszsSsbbDgTu1yfpy" + ], + "license": "MIT" + }, + "lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/src/libs/utils/SignatureBuilder.sol": { + "keccak256": "0x5d071367c63510c3e38d4fe73b81ec2b7eda1c442fe3e8c75fcbab0d929524dc", + "urls": [ + "bzz-raw://4e6ca7efdab0b903c060b743cf88c1f33db62e23a53786be56f91eddc6ccaeac", + "dweb:/ipfs/QmSRmRKouzYAqeEArZDrquG5i1hJHnNE18qegMhKaQYVEk" + ], + "license": "MIT" + }, + "lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/src/libs/utils/SismoConnectHelper.sol": { + "keccak256": "0xa3affedc6093d4b9a5796ee1ac1a6bc552991f19ca319a76ef5f8f522f730346", + "urls": [ + "bzz-raw://6b6bb082dd92cae11ab6a470a0cd5522e9f79664fe4b8967b8fad6420bed3c9a", + "dweb:/ipfs/QmQEg2YE76ZPAfRaVUJSURT7BFPV7D4XqXYoztHYzNpNnf" + ], + "license": "MIT" + }, + "lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/src/libs/utils/Structs.sol": { + "keccak256": "0x978c56d685ed88ce85590f7f7acec107e34f5ef6b4cf9f4dcfc2be5b5d3e97d8", + "urls": [ + "bzz-raw://6373516cad9fa0e4fbc344b3ce7155a4eca356403f748209cd13d86f8b24dee4", + "dweb:/ipfs/QmRDHCyetFYKL36GdM3hibo4hFHEWEZ9xPKrrvw9fBnLQn" + ], + "license": "MIT" + }, + "lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/src/periphery/interfaces/IAddressesProvider.sol": { + "keccak256": "0x7088a8721bb95c4d2ae77db038542e3afccfdb5772a9f6af500098f34514369e", + "urls": [ + "bzz-raw://80cbf6bd03d96a9ef936b00d3cc7041e74e88ae6aa3bd6d8ab5a87a3c1eb7092", + "dweb:/ipfs/QmTxXhUhPC9siLtnudFpqtcV1JsJyDULmTV17F1NQdKFy7" + ], + "license": "MIT" + }, + "lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/src/verifiers/IHydraS3Verifier.sol": { + "keccak256": "0x2c826b5e1ecfa9744fac3e13e9d19bc3eee097c5327844239c2d39ff37393825", + "urls": [ + "bzz-raw://dd09478db59c454a03532b66024bd544cb537c7a3f6d9b5f7cdf5afae5e0e1ad", + "dweb:/ipfs/QmTf64dzbbCfFbssr8b8QG7K1AYDV5MThJ55Gyzi8DrwKv" + ], + "license": "MIT" + }, + "lib/sismo-connect-packages/packages/sismo-connect-solidity/src/SismoLib.sol": { + "keccak256": "0xcacd8c83ca5df7d2562f05aaf299a65bdc2af393065b67cff0dc5f31ea6589b0", + "urls": [ + "bzz-raw://1c3e7736338bab098b47788ac36d001c15d4441e344f0a52e012089417c4b134", + "dweb:/ipfs/QmfJjb7LQ31o7XdFsE917sZKXYVJTry8npdhSmKo9KywNu" + ], + "license": "MIT" + }, + "src/ZKDrop.sol": { + "keccak256": "0xdca8cfb8d7d5808cc94247ebec1245f3eaf9eb64608a50f19fc31c9d97147914", + "urls": [ + "bzz-raw://de49f07be7b5fbb54fc97e74f5e68b72c1e37dd224151d2a86c472edd90e0769", + "dweb:/ipfs/QmaGxT3kiP13zfeXFYsLwnqSR18VR3SCEq3cVbU2QUx7Tt" + ], + "license": "MIT" + } + }, + "version": 1 + }, + "ast": { + "absolutePath": "src/ZKDrop.sol", + "id": 41015, + "exportedSymbols": { + "Auth": [ + 39279 + ], + "AuthRequest": [ + 39231 + ], + "AuthRequestBuilder": [ + 37258 + ], + "AuthType": [ + 39261 + ], + "Claim": [ + 39293 + ], + "ClaimRequest": [ + 39247 + ], + "ClaimRequestBuilder": [ + 37905 + ], + "ClaimType": [ + 39267 + ], + "ERC721": [ + 31163 + ], + "IAddressesProvider": [ + 39441 + ], + "IHydraS3Verifier": [ + 39522 + ], + "ISismoConnectVerifier": [ + 34116 + ], + "Ownable": [ + 29479 + ], + "RequestBuilder": [ + 38939 + ], + "Signature": [ + 39298 + ], + "SignatureBuilder": [ + 39065 + ], + "SignatureRequest": [ + 39254 + ], + "SismoConnect": [ + 36800 + ], + "SismoConnectConfig": [ + 39214 + ], + "SismoConnectHelper": [ + 39192 + ], + "SismoConnectRequest": [ + 39208 + ], + "SismoConnectResponse": [ + 39311 + ], + "SismoConnectVerifiedResult": [ + 39343 + ], + "VaultConfig": [ + 39217 + ], + "VerifiedAuth": [ + 39355 + ], + "VerifiedClaim": [ + 39371 + ], + "ZKDrop": [ + 41014 + ] + }, + "nodeType": "SourceUnit", + "src": "32:3454:54", + "nodes": [ + { + "id": 40681, + "nodeType": "PragmaDirective", + "src": "32:24:54", + "nodes": [ + + ], + "literals": [ + "solidity", + "^", + "0.8", + ".17" + ] + }, + { + "id": 40682, + "nodeType": "ImportDirective", + "src": "58:45:54", + "nodes": [ + + ], + "absolutePath": "lib/sismo-connect-packages/packages/sismo-connect-solidity/src/SismoLib.sol", + "file": "sismo-connect-solidity/SismoLib.sol", + "nameLocation": "-1:-1:-1", + "scope": 41015, + "sourceUnit": 39526, + "symbolAliases": [ + + ], + "unitAlias": "" + }, + { + "id": 40684, + "nodeType": "ImportDirective", + "src": "104:60:54", + "nodes": [ + + ], + "absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol", + "file": "openzeppelin/token/ERC721/ERC721.sol", + "nameLocation": "-1:-1:-1", + "scope": 41015, + "sourceUnit": 31164, + "symbolAliases": [ + { + "foreign": { + "id": 40683, + "name": "ERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 31163, + "src": "112:6:54", + "typeDescriptions": { + + } + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 40686, + "nodeType": "ImportDirective", + "src": "165:56:54", + "nodes": [ + + ], + "absolutePath": "lib/openzeppelin-contracts/contracts/access/Ownable.sol", + "file": "openzeppelin/access/Ownable.sol", + "nameLocation": "-1:-1:-1", + "scope": 41015, + "sourceUnit": 29480, + "symbolAliases": [ + { + "foreign": { + "id": 40685, + "name": "Ownable", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 29479, + "src": "173:7:54", + "typeDescriptions": { + + } + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 41014, + "nodeType": "ContractDefinition", + "src": "223:3262:54", + "nodes": [ + { + "id": 40696, + "nodeType": "UsingForDirective", + "src": "276:56:54", + "nodes": [ + + ], + "global": false, + "libraryName": { + "id": 40693, + "name": "SismoConnectHelper", + "nameLocations": [ + "282:18:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 39192, + "src": "282:18:54" + }, + "typeName": { + "id": 40695, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 40694, + "name": "SismoConnectVerifiedResult", + "nameLocations": [ + "305:26:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 39343, + "src": "305:26:54" + }, + "referencedDeclaration": 39343, + "src": "305:26:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SismoConnectVerifiedResult_$39343_storage_ptr", + "typeString": "struct SismoConnectVerifiedResult" + } + } + }, + { + "id": 40699, + "nodeType": "VariableDeclaration", + "src": "336:48:54", + "nodes": [ + + ], + "constant": true, + "functionSelector": "754b377c", + "mutability": "constant", + "name": "IMPLEMENTATION_VERSION", + "nameLocation": "358:22:54", + "scope": 41014, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 40697, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "336:5:54", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": { + "hexValue": "31", + "id": 40698, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "383:1:54", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "visibility": "public" + }, + { + "id": 40708, + "nodeType": "StructDefinition", + "src": "389:73:54", + "nodes": [ + + ], + "canonicalName": "ZKDrop.Requests", + "members": [ + { + "constant": false, + "id": 40703, + "mutability": "mutable", + "name": "auths", + "nameLocation": "425:5:54", + "nodeType": "VariableDeclaration", + "scope": 40708, + "src": "411:19:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_AuthRequest_$39231_storage_$dyn_storage_ptr", + "typeString": "struct AuthRequest[]" + }, + "typeName": { + "baseType": { + "id": 40701, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 40700, + "name": "AuthRequest", + "nameLocations": [ + "411:11:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 39231, + "src": "411:11:54" + }, + "referencedDeclaration": 39231, + "src": "411:11:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AuthRequest_$39231_storage_ptr", + "typeString": "struct AuthRequest" + } + }, + "id": 40702, + "nodeType": "ArrayTypeName", + "src": "411:13:54", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_AuthRequest_$39231_storage_$dyn_storage_ptr", + "typeString": "struct AuthRequest[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 40707, + "mutability": "mutable", + "name": "claims", + "nameLocation": "451:6:54", + "nodeType": "VariableDeclaration", + "scope": 40708, + "src": "436:21:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_ClaimRequest_$39247_storage_$dyn_storage_ptr", + "typeString": "struct ClaimRequest[]" + }, + "typeName": { + "baseType": { + "id": 40705, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 40704, + "name": "ClaimRequest", + "nameLocations": [ + "436:12:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 39247, + "src": "436:12:54" + }, + "referencedDeclaration": 39247, + "src": "436:12:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ClaimRequest_$39247_storage_ptr", + "typeString": "struct ClaimRequest" + } + }, + "id": 40706, + "nodeType": "ArrayTypeName", + "src": "436:14:54", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_ClaimRequest_$39247_storage_$dyn_storage_ptr", + "typeString": "struct ClaimRequest[]" + } + }, + "visibility": "internal" + } + ], + "name": "Requests", + "nameLocation": "396:8:54", + "scope": 41014, + "visibility": "public" + }, + { + "id": 40710, + "nodeType": "VariableDeclaration", + "src": "466:28:54", + "nodes": [ + + ], + "constant": false, + "mutability": "mutable", + "name": "_baseTokenURI", + "nameLocation": "481:13:54", + "scope": 41014, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 40709, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "466:6:54", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "private" + }, + { + "id": 40713, + "nodeType": "VariableDeclaration", + "src": "498:26:54", + "nodes": [ + + ], + "constant": false, + "mutability": "mutable", + "name": "_requests", + "nameLocation": "515:9:54", + "scope": 41014, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Requests_$40708_storage", + "typeString": "struct ZKDrop.Requests" + }, + "typeName": { + "id": 40712, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 40711, + "name": "Requests", + "nameLocations": [ + "498:8:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 40708, + "src": "498:8:54" + }, + "referencedDeclaration": 40708, + "src": "498:8:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Requests_$40708_storage_ptr", + "typeString": "struct ZKDrop.Requests" + } + }, + "visibility": "private" + }, + { + "id": 40715, + "nodeType": "VariableDeclaration", + "src": "528:41:54", + "nodes": [ + + ], + "constant": false, + "functionSelector": "c4b2e8ff", + "mutability": "immutable", + "name": "IS_NON_TRANSFERABLE", + "nameLocation": "550:19:54", + "scope": 41014, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 40714, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "528:4:54", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "public" + }, + { + "id": 40717, + "nodeType": "ErrorDefinition", + "src": "574:30:54", + "nodes": [ + + ], + "errorSelector": "4c61c1be", + "name": "ERC721NonTransferable", + "nameLocation": "580:21:54", + "parameters": { + "id": 40716, + "nodeType": "ParameterList", + "parameters": [ + + ], + "src": "601:2:54" + } + }, + { + "id": 40721, + "nodeType": "EventDefinition", + "src": "607:43:54", + "nodes": [ + + ], + "anonymous": false, + "eventSelector": "2e9b34e5ec7377754a85ec13c1e9a442a00db0c46dbdefbb143dd0371fd20c1c", + "name": "BaseTokenURISet", + "nameLocation": "613:15:54", + "parameters": { + "id": 40720, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 40719, + "indexed": false, + "mutability": "mutable", + "name": "baseTokenURI", + "nameLocation": "636:12:54", + "nodeType": "VariableDeclaration", + "scope": 40721, + "src": "629:19:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 40718, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "629:6:54", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "628:21:54" + } + }, + { + "id": 40777, + "nodeType": "FunctionDefinition", + "src": "654:534:54", + "nodes": [ + + ], + "body": { + "id": 40776, + "nodeType": "Block", + "src": "1011:177:54", + "nodes": [ + + ], + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 40757, + "name": "owner_", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40741, + "src": "1036:6:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 40756, + "name": "_transferOwnership", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 29478, + "src": "1017:18:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 40758, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [ + + ], + "names": [ + + ], + "nodeType": "FunctionCall", + "src": "1017:26:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 40759, + "nodeType": "ExpressionStatement", + "src": "1017:26:54" + }, + { + "expression": { + "arguments": [ + { + "id": 40761, + "name": "baseURI_", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40727, + "src": "1066:8:54", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 40760, + "name": "_setBaseTokenUri", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40928, + "src": "1049:16:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory)" + } + }, + "id": 40762, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [ + + ], + "names": [ + + ], + "nodeType": "FunctionCall", + "src": "1049:26:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 40763, + "nodeType": "ExpressionStatement", + "src": "1049:26:54" + }, + { + "expression": { + "arguments": [ + { + "id": 40765, + "name": "authRequests_", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40735, + "src": "1091:13:54", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_AuthRequest_$39231_memory_ptr_$dyn_memory_ptr", + "typeString": "struct AuthRequest memory[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_struct$_AuthRequest_$39231_memory_ptr_$dyn_memory_ptr", + "typeString": "struct AuthRequest memory[] memory" + } + ], + "id": 40764, + "name": "_setAuths", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40883, + "src": "1081:9:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_AuthRequest_$39231_memory_ptr_$dyn_memory_ptr_$returns$__$", + "typeString": "function (struct AuthRequest memory[] memory)" + } + }, + "id": 40766, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [ + + ], + "names": [ + + ], + "nodeType": "FunctionCall", + "src": "1081:24:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 40767, + "nodeType": "ExpressionStatement", + "src": "1081:24:54" + }, + { + "expression": { + "arguments": [ + { + "id": 40769, + "name": "claimRequests_", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40739, + "src": "1122:14:54", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_ClaimRequest_$39247_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ClaimRequest memory[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_struct$_ClaimRequest_$39247_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ClaimRequest memory[] memory" + } + ], + "id": 40768, + "name": "_setClaims", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40914, + "src": "1111:10:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_ClaimRequest_$39247_memory_ptr_$dyn_memory_ptr_$returns$__$", + "typeString": "function (struct ClaimRequest memory[] memory)" + } + }, + "id": 40770, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [ + + ], + "names": [ + + ], + "nodeType": "FunctionCall", + "src": "1111:26:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 40771, + "nodeType": "ExpressionStatement", + "src": "1111:26:54" + }, + { + "expression": { + "id": 40774, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 40772, + "name": "IS_NON_TRANSFERABLE", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40715, + "src": "1143:19:54", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 40773, + "name": "isNonTransferable_", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40743, + "src": "1165:18:54", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1143:40:54", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 40775, + "nodeType": "ExpressionStatement", + "src": "1143:40:54" + } + ] + }, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "id": 40746, + "name": "name_", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40723, + "src": "939:5:54", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "id": 40747, + "name": "symbol_", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40725, + "src": "946:7:54", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "id": 40748, + "kind": "baseConstructorSpecifier", + "modifierName": { + "id": 40745, + "name": "ERC721", + "nameLocations": [ + "932:6:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 31163, + "src": "932:6:54" + }, + "nodeType": "ModifierInvocation", + "src": "932:22:54" + }, + { + "arguments": [ + { + "arguments": [ + { + "id": 40751, + "name": "appId_", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40729, + "src": "980:6:54", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + }, + { + "id": 40752, + "name": "isImpersonationMode_", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40731, + "src": "988:20:54", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 40750, + "name": "buildConfig", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 34283, + 34301 + ], + "referencedDeclaration": 34301, + "src": "968:11:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes16_$_t_bool_$returns$_t_struct$_SismoConnectConfig_$39214_memory_ptr_$", + "typeString": "function (bytes16,bool) pure returns (struct SismoConnectConfig memory)" + } + }, + "id": 40753, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [ + + ], + "names": [ + + ], + "nodeType": "FunctionCall", + "src": "968:41:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_SismoConnectConfig_$39214_memory_ptr", + "typeString": "struct SismoConnectConfig memory" + } + } + ], + "id": 40754, + "kind": "baseConstructorSpecifier", + "modifierName": { + "id": 40749, + "name": "SismoConnect", + "nameLocations": [ + "955:12:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 36800, + "src": "955:12:54" + }, + "nodeType": "ModifierInvocation", + "src": "955:55:54" + } + ], + "name": "", + "nameLocation": "-1:-1:-1", + "parameters": { + "id": 40744, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 40723, + "mutability": "mutable", + "name": "name_", + "nameLocation": "685:5:54", + "nodeType": "VariableDeclaration", + "scope": 40777, + "src": "671:19:54", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 40722, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "671:6:54", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 40725, + "mutability": "mutable", + "name": "symbol_", + "nameLocation": "710:7:54", + "nodeType": "VariableDeclaration", + "scope": 40777, + "src": "696:21:54", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 40724, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "696:6:54", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 40727, + "mutability": "mutable", + "name": "baseURI_", + "nameLocation": "737:8:54", + "nodeType": "VariableDeclaration", + "scope": 40777, + "src": "723:22:54", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 40726, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "723:6:54", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 40729, + "mutability": "mutable", + "name": "appId_", + "nameLocation": "759:6:54", + "nodeType": "VariableDeclaration", + "scope": 40777, + "src": "751:14:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + }, + "typeName": { + "id": 40728, + "name": "bytes16", + "nodeType": "ElementaryTypeName", + "src": "751:7:54", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 40731, + "mutability": "mutable", + "name": "isImpersonationMode_", + "nameLocation": "776:20:54", + "nodeType": "VariableDeclaration", + "scope": 40777, + "src": "771:25:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 40730, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "771:4:54", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 40735, + "mutability": "mutable", + "name": "authRequests_", + "nameLocation": "823:13:54", + "nodeType": "VariableDeclaration", + "scope": 40777, + "src": "802:34:54", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_AuthRequest_$39231_memory_ptr_$dyn_memory_ptr", + "typeString": "struct AuthRequest[]" + }, + "typeName": { + "baseType": { + "id": 40733, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 40732, + "name": "AuthRequest", + "nameLocations": [ + "802:11:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 39231, + "src": "802:11:54" + }, + "referencedDeclaration": 39231, + "src": "802:11:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AuthRequest_$39231_storage_ptr", + "typeString": "struct AuthRequest" + } + }, + "id": 40734, + "nodeType": "ArrayTypeName", + "src": "802:13:54", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_AuthRequest_$39231_storage_$dyn_storage_ptr", + "typeString": "struct AuthRequest[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 40739, + "mutability": "mutable", + "name": "claimRequests_", + "nameLocation": "864:14:54", + "nodeType": "VariableDeclaration", + "scope": 40777, + "src": "842:36:54", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_ClaimRequest_$39247_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ClaimRequest[]" + }, + "typeName": { + "baseType": { + "id": 40737, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 40736, + "name": "ClaimRequest", + "nameLocations": [ + "842:12:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 39247, + "src": "842:12:54" + }, + "referencedDeclaration": 39247, + "src": "842:12:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ClaimRequest_$39247_storage_ptr", + "typeString": "struct ClaimRequest" + } + }, + "id": 40738, + "nodeType": "ArrayTypeName", + "src": "842:14:54", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_ClaimRequest_$39247_storage_$dyn_storage_ptr", + "typeString": "struct ClaimRequest[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 40741, + "mutability": "mutable", + "name": "owner_", + "nameLocation": "892:6:54", + "nodeType": "VariableDeclaration", + "scope": 40777, + "src": "884:14:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 40740, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "884:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 40743, + "mutability": "mutable", + "name": "isNonTransferable_", + "nameLocation": "909:18:54", + "nodeType": "VariableDeclaration", + "scope": 40777, + "src": "904:23:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 40742, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "904:4:54", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "665:266:54" + }, + "returnParameters": { + "id": 40755, + "nodeType": "ParameterList", + "parameters": [ + + ], + "src": "1011:0:54" + }, + "scope": 41014, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "id": 40815, + "nodeType": "FunctionDefinition", + "src": "1192:387:54", + "nodes": [ + + ], + "body": { + "id": 40814, + "nodeType": "Block", + "src": "1272:307:54", + "nodes": [ + + ], + "statements": [ + { + "assignments": [ + 40786 + ], + "declarations": [ + { + "constant": false, + "id": 40786, + "mutability": "mutable", + "name": "result", + "nameLocation": "1312:6:54", + "nodeType": "VariableDeclaration", + "scope": 40814, + "src": "1278:40:54", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SismoConnectVerifiedResult_$39343_memory_ptr", + "typeString": "struct SismoConnectVerifiedResult" + }, + "typeName": { + "id": 40785, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 40784, + "name": "SismoConnectVerifiedResult", + "nameLocations": [ + "1278:26:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 39343, + "src": "1278:26:54" + }, + "referencedDeclaration": 39343, + "src": "1278:26:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SismoConnectVerifiedResult_$39343_storage_ptr", + "typeString": "struct SismoConnectVerifiedResult" + } + }, + "visibility": "internal" + } + ], + "id": 40800, + "initialValue": { + "arguments": [ + { + "id": 40788, + "name": "responseBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40779, + "src": "1351:13:54", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "expression": { + "id": 40789, + "name": "_requests", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40713, + "src": "1379:9:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Requests_$40708_storage", + "typeString": "struct ZKDrop.Requests storage ref" + } + }, + "id": 40790, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1389:5:54", + "memberName": "auths", + "nodeType": "MemberAccess", + "referencedDeclaration": 40703, + "src": "1379:15:54", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_AuthRequest_$39231_storage_$dyn_storage", + "typeString": "struct AuthRequest storage ref[] storage ref" + } + }, + { + "expression": { + "id": 40791, + "name": "_requests", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40713, + "src": "1410:9:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Requests_$40708_storage", + "typeString": "struct ZKDrop.Requests storage ref" + } + }, + "id": 40792, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1420:6:54", + "memberName": "claims", + "nodeType": "MemberAccess", + "referencedDeclaration": 40707, + "src": "1410:16:54", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_ClaimRequest_$39247_storage_$dyn_storage", + "typeString": "struct ClaimRequest storage ref[] storage ref" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "id": 40796, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40781, + "src": "1481:2:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 40794, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": -1, + "src": "1470:3:54", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 40795, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1474:6:54", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "1470:10:54", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 40797, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [ + + ], + "names": [ + + ], + "nodeType": "FunctionCall", + "src": "1470:14:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 40793, + "name": "buildSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 36187, + 36204 + ], + "referencedDeclaration": 36187, + "src": "1445:14:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$_t_struct$_SignatureRequest_$39254_memory_ptr_$", + "typeString": "function (bytes memory) view returns (struct SignatureRequest memory)" + } + }, + "id": 40798, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [ + "1461:7:54" + ], + "names": [ + "message" + ], + "nodeType": "FunctionCall", + "src": "1445:41:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignatureRequest_$39254_memory_ptr", + "typeString": "struct SignatureRequest memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_array$_t_struct$_AuthRequest_$39231_storage_$dyn_storage", + "typeString": "struct AuthRequest storage ref[] storage ref" + }, + { + "typeIdentifier": "t_array$_t_struct$_ClaimRequest_$39247_storage_$dyn_storage", + "typeString": "struct ClaimRequest storage ref[] storage ref" + }, + { + "typeIdentifier": "t_struct$_SignatureRequest_$39254_memory_ptr", + "typeString": "struct SignatureRequest memory" + } + ], + "id": 40787, + "name": "verify", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 34373, + 34417, + 34461, + 34505, + 34545, + 34585, + 34630, + 34671, + 34712, + 34753, + 34790, + 34827, + 34857, + 34907, + 34953, + 34998, + 35043, + 35084, + 35125, + 35172, + 35215, + 35257, + 35299, + 35337, + 35375 + ], + "referencedDeclaration": 35172, + "src": "1321:6:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_array$_t_struct$_AuthRequest_$39231_memory_ptr_$dyn_memory_ptr_$_t_array$_t_struct$_ClaimRequest_$39247_memory_ptr_$dyn_memory_ptr_$_t_struct$_SignatureRequest_$39254_memory_ptr_$returns$_t_struct$_SismoConnectVerifiedResult_$39343_memory_ptr_$", + "typeString": "function (bytes memory,struct AuthRequest memory[] memory,struct ClaimRequest memory[] memory,struct SignatureRequest memory) returns (struct SismoConnectVerifiedResult memory)" + } + }, + "id": 40799, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [ + "1336:13:54", + "1372:5:54", + "1402:6:54", + "1434:9:54" + ], + "names": [ + "responseBytes", + "auths", + "claims", + "signature" + ], + "nodeType": "FunctionCall", + "src": "1321:172:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_SismoConnectVerifiedResult_$39343_memory_ptr", + "typeString": "struct SismoConnectVerifiedResult memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1278:215:54" + }, + { + "assignments": [ + 40802 + ], + "declarations": [ + { + "constant": false, + "id": 40802, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "1508:7:54", + "nodeType": "VariableDeclaration", + "scope": 40814, + "src": "1500:15:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 40801, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1500:7:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 40808, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 40805, + "name": "AuthType", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 39261, + "src": "1535:8:54", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_AuthType_$39261_$", + "typeString": "type(enum AuthType)" + } + }, + "id": 40806, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1544:5:54", + "memberName": "VAULT", + "nodeType": "MemberAccess", + "referencedDeclaration": 39255, + "src": "1535:14:54", + "typeDescriptions": { + "typeIdentifier": "t_enum$_AuthType_$39261", + "typeString": "enum AuthType" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_enum$_AuthType_$39261", + "typeString": "enum AuthType" + } + ], + "expression": { + "id": 40803, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40786, + "src": "1518:6:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SismoConnectVerifiedResult_$39343_memory_ptr", + "typeString": "struct SismoConnectVerifiedResult memory" + } + }, + "id": 40804, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1525:9:54", + "memberName": "getUserId", + "nodeType": "MemberAccess", + "referencedDeclaration": 39118, + "src": "1518:16:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_SismoConnectVerifiedResult_$39343_memory_ptr_$_t_enum$_AuthType_$39261_$returns$_t_uint256_$attached_to$_t_struct$_SismoConnectVerifiedResult_$39343_memory_ptr_$", + "typeString": "function (struct SismoConnectVerifiedResult memory,enum AuthType) pure returns (uint256)" + } + }, + "id": 40807, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [ + + ], + "names": [ + + ], + "nodeType": "FunctionCall", + "src": "1518:32:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1500:50:54" + }, + { + "expression": { + "arguments": [ + { + "id": 40810, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40781, + "src": "1562:2:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 40811, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40802, + "src": "1566:7:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 40809, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 30837, + "src": "1556:5:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 40812, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [ + + ], + "names": [ + + ], + "nodeType": "FunctionCall", + "src": "1556:18:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 40813, + "nodeType": "ExpressionStatement", + "src": "1556:18:54" + } + ] + }, + "functionSelector": "07c8064f", + "implemented": true, + "kind": "function", + "modifiers": [ + + ], + "name": "claimWithSismoConnect", + "nameLocation": "1201:21:54", + "parameters": { + "id": 40782, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 40779, + "mutability": "mutable", + "name": "responseBytes", + "nameLocation": "1236:13:54", + "nodeType": "VariableDeclaration", + "scope": 40815, + "src": "1223:26:54", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 40778, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1223:5:54", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 40781, + "mutability": "mutable", + "name": "to", + "nameLocation": "1259:2:54", + "nodeType": "VariableDeclaration", + "scope": 40815, + "src": "1251:10:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 40780, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1251:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1222:40:54" + }, + "returnParameters": { + "id": 40783, + "nodeType": "ParameterList", + "parameters": [ + + ], + "src": "1272:0:54" + }, + "scope": 41014, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 40829, + "nodeType": "FunctionDefinition", + "src": "1583:131:54", + "nodes": [ + + ], + "body": { + "id": 40828, + "nodeType": "Block", + "src": "1646:68:54", + "nodes": [ + + ], + "statements": [ + { + "assignments": [ + 40823 + ], + "declarations": [ + { + "constant": false, + "id": 40823, + "mutability": "mutable", + "name": "requests", + "nameLocation": "1668:8:54", + "nodeType": "VariableDeclaration", + "scope": 40828, + "src": "1652:24:54", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Requests_$40708_memory_ptr", + "typeString": "struct ZKDrop.Requests" + }, + "typeName": { + "id": 40822, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 40821, + "name": "Requests", + "nameLocations": [ + "1652:8:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 40708, + "src": "1652:8:54" + }, + "referencedDeclaration": 40708, + "src": "1652:8:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Requests_$40708_storage_ptr", + "typeString": "struct ZKDrop.Requests" + } + }, + "visibility": "internal" + } + ], + "id": 40825, + "initialValue": { + "id": 40824, + "name": "_requests", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40713, + "src": "1679:9:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Requests_$40708_storage", + "typeString": "struct ZKDrop.Requests storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1652:36:54" + }, + { + "expression": { + "id": 40826, + "name": "requests", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40823, + "src": "1701:8:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Requests_$40708_memory_ptr", + "typeString": "struct ZKDrop.Requests memory" + } + }, + "functionReturnParameters": 40820, + "id": 40827, + "nodeType": "Return", + "src": "1694:15:54" + } + ] + }, + "functionSelector": "8813ce12", + "implemented": true, + "kind": "function", + "modifiers": [ + + ], + "name": "getRequests", + "nameLocation": "1592:11:54", + "parameters": { + "id": 40816, + "nodeType": "ParameterList", + "parameters": [ + + ], + "src": "1603:2:54" + }, + "returnParameters": { + "id": 40820, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 40819, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 40829, + "src": "1629:15:54", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Requests_$40708_memory_ptr", + "typeString": "struct ZKDrop.Requests" + }, + "typeName": { + "id": 40818, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 40817, + "name": "Requests", + "nameLocations": [ + "1629:8:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 40708, + "src": "1629:8:54" + }, + "referencedDeclaration": 40708, + "src": "1629:8:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Requests_$40708_storage_ptr", + "typeString": "struct ZKDrop.Requests" + } + }, + "visibility": "internal" + } + ], + "src": "1628:17:54" + }, + "scope": 41014, + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "id": 40841, + "nodeType": "FunctionDefinition", + "src": "1718:103:54", + "nodes": [ + + ], + "body": { + "id": 40840, + "nodeType": "Block", + "src": "1785:36:54", + "nodes": [ + + ], + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 40837, + "name": "baseUri", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40831, + "src": "1808:7:54", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 40836, + "name": "_setBaseTokenUri", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40928, + "src": "1791:16:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory)" + } + }, + "id": 40838, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [ + + ], + "names": [ + + ], + "nodeType": "FunctionCall", + "src": "1791:25:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 40839, + "nodeType": "ExpressionStatement", + "src": "1791:25:54" + } + ] + }, + "functionSelector": "95652cfa", + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 40834, + "kind": "modifierInvocation", + "modifierName": { + "id": 40833, + "name": "onlyOwner", + "nameLocations": [ + "1775:9:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 29398, + "src": "1775:9:54" + }, + "nodeType": "ModifierInvocation", + "src": "1775:9:54" + } + ], + "name": "setBaseTokenUri", + "nameLocation": "1727:15:54", + "parameters": { + "id": 40832, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 40831, + "mutability": "mutable", + "name": "baseUri", + "nameLocation": "1757:7:54", + "nodeType": "VariableDeclaration", + "scope": 40841, + "src": "1743:21:54", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 40830, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1743:6:54", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "1742:23:54" + }, + "returnParameters": { + "id": 40835, + "nodeType": "ParameterList", + "parameters": [ + + ], + "src": "1785:0:54" + }, + "scope": 41014, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 40852, + "nodeType": "FunctionDefinition", + "src": "1825:103:54", + "nodes": [ + + ], + "body": { + "id": 40851, + "nodeType": "Block", + "src": "1897:31:54", + "nodes": [ + + ], + "statements": [ + { + "expression": { + "id": 40849, + "name": "_baseTokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40710, + "src": "1910:13:54", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 40848, + "id": 40850, + "nodeType": "Return", + "src": "1903:20:54" + } + ] + }, + "baseFunctions": [ + 30441 + ], + "functionSelector": "c87b56dd", + "implemented": true, + "kind": "function", + "modifiers": [ + + ], + "name": "tokenURI", + "nameLocation": "1834:8:54", + "overrides": { + "id": 40845, + "nodeType": "OverrideSpecifier", + "overrides": [ + + ], + "src": "1864:8:54" + }, + "parameters": { + "id": 40844, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 40843, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 40852, + "src": "1843:7:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 40842, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1843:7:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1842:9:54" + }, + "returnParameters": { + "id": 40848, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 40847, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 40852, + "src": "1882:13:54", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 40846, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1882:6:54", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "1881:15:54" + }, + "scope": 41014, + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "id": 40883, + "nodeType": "FunctionDefinition", + "src": "1932:156:54", + "nodes": [ + + ], + "body": { + "id": 40882, + "nodeType": "Block", + "src": "1988:100:54", + "nodes": [ + + ], + "statements": [ + { + "body": { + "id": 40880, + "nodeType": "Block", + "src": "2038:46:54", + "statements": [ + { + "expression": { + "arguments": [ + { + "baseExpression": { + "id": 40875, + "name": "auths_", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40856, + "src": "2067:6:54", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_AuthRequest_$39231_memory_ptr_$dyn_memory_ptr", + "typeString": "struct AuthRequest memory[] memory" + } + }, + "id": 40877, + "indexExpression": { + "id": 40876, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40860, + "src": "2074:1:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2067:9:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AuthRequest_$39231_memory_ptr", + "typeString": "struct AuthRequest memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_AuthRequest_$39231_memory_ptr", + "typeString": "struct AuthRequest memory" + } + ], + "expression": { + "expression": { + "id": 40870, + "name": "_requests", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40713, + "src": "2046:9:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Requests_$40708_storage", + "typeString": "struct ZKDrop.Requests storage ref" + } + }, + "id": 40873, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2056:5:54", + "memberName": "auths", + "nodeType": "MemberAccess", + "referencedDeclaration": 40703, + "src": "2046:15:54", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_AuthRequest_$39231_storage_$dyn_storage", + "typeString": "struct AuthRequest storage ref[] storage ref" + } + }, + "id": 40874, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2062:4:54", + "memberName": "push", + "nodeType": "MemberAccess", + "src": "2046:20:54", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_struct$_AuthRequest_$39231_storage_$dyn_storage_ptr_$_t_struct$_AuthRequest_$39231_storage_$returns$__$attached_to$_t_array$_t_struct$_AuthRequest_$39231_storage_$dyn_storage_ptr_$", + "typeString": "function (struct AuthRequest storage ref[] storage pointer,struct AuthRequest storage ref)" + } + }, + "id": 40878, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [ + + ], + "names": [ + + ], + "nodeType": "FunctionCall", + "src": "2046:31:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 40879, + "nodeType": "ExpressionStatement", + "src": "2046:31:54" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 40866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 40863, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40860, + "src": "2014:1:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 40864, + "name": "auths_", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40856, + "src": "2018:6:54", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_AuthRequest_$39231_memory_ptr_$dyn_memory_ptr", + "typeString": "struct AuthRequest memory[] memory" + } + }, + "id": 40865, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2025:6:54", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2018:13:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2014:17:54", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 40881, + "initializationExpression": { + "assignments": [ + 40860 + ], + "declarations": [ + { + "constant": false, + "id": 40860, + "mutability": "mutable", + "name": "i", + "nameLocation": "2007:1:54", + "nodeType": "VariableDeclaration", + "scope": 40881, + "src": "1999:9:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 40859, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1999:7:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 40862, + "initialValue": { + "hexValue": "30", + "id": 40861, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2011:1:54", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "1999:13:54" + }, + "loopExpression": { + "expression": { + "id": 40868, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "2033:3:54", + "subExpression": { + "id": 40867, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40860, + "src": "2033:1:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 40869, + "nodeType": "ExpressionStatement", + "src": "2033:3:54" + }, + "nodeType": "ForStatement", + "src": "1994:90:54" + } + ] + }, + "implemented": true, + "kind": "function", + "modifiers": [ + + ], + "name": "_setAuths", + "nameLocation": "1941:9:54", + "parameters": { + "id": 40857, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 40856, + "mutability": "mutable", + "name": "auths_", + "nameLocation": "1972:6:54", + "nodeType": "VariableDeclaration", + "scope": 40883, + "src": "1951:27:54", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_AuthRequest_$39231_memory_ptr_$dyn_memory_ptr", + "typeString": "struct AuthRequest[]" + }, + "typeName": { + "baseType": { + "id": 40854, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 40853, + "name": "AuthRequest", + "nameLocations": [ + "1951:11:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 39231, + "src": "1951:11:54" + }, + "referencedDeclaration": 39231, + "src": "1951:11:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AuthRequest_$39231_storage_ptr", + "typeString": "struct AuthRequest" + } + }, + "id": 40855, + "nodeType": "ArrayTypeName", + "src": "1951:13:54", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_AuthRequest_$39231_storage_$dyn_storage_ptr", + "typeString": "struct AuthRequest[]" + } + }, + "visibility": "internal" + } + ], + "src": "1950:29:54" + }, + "returnParameters": { + "id": 40858, + "nodeType": "ParameterList", + "parameters": [ + + ], + "src": "1988:0:54" + }, + "scope": 41014, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "id": 40914, + "nodeType": "FunctionDefinition", + "src": "2092:162:54", + "nodes": [ + + ], + "body": { + "id": 40913, + "nodeType": "Block", + "src": "2151:103:54", + "nodes": [ + + ], + "statements": [ + { + "body": { + "id": 40911, + "nodeType": "Block", + "src": "2202:48:54", + "statements": [ + { + "expression": { + "arguments": [ + { + "baseExpression": { + "id": 40906, + "name": "claims_", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40887, + "src": "2232:7:54", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_ClaimRequest_$39247_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ClaimRequest memory[] memory" + } + }, + "id": 40908, + "indexExpression": { + "id": 40907, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40891, + "src": "2240:1:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2232:10:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ClaimRequest_$39247_memory_ptr", + "typeString": "struct ClaimRequest memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_ClaimRequest_$39247_memory_ptr", + "typeString": "struct ClaimRequest memory" + } + ], + "expression": { + "expression": { + "id": 40901, + "name": "_requests", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40713, + "src": "2210:9:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Requests_$40708_storage", + "typeString": "struct ZKDrop.Requests storage ref" + } + }, + "id": 40904, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2220:6:54", + "memberName": "claims", + "nodeType": "MemberAccess", + "referencedDeclaration": 40707, + "src": "2210:16:54", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_ClaimRequest_$39247_storage_$dyn_storage", + "typeString": "struct ClaimRequest storage ref[] storage ref" + } + }, + "id": 40905, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2227:4:54", + "memberName": "push", + "nodeType": "MemberAccess", + "src": "2210:21:54", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_struct$_ClaimRequest_$39247_storage_$dyn_storage_ptr_$_t_struct$_ClaimRequest_$39247_storage_$returns$__$attached_to$_t_array$_t_struct$_ClaimRequest_$39247_storage_$dyn_storage_ptr_$", + "typeString": "function (struct ClaimRequest storage ref[] storage pointer,struct ClaimRequest storage ref)" + } + }, + "id": 40909, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [ + + ], + "names": [ + + ], + "nodeType": "FunctionCall", + "src": "2210:33:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 40910, + "nodeType": "ExpressionStatement", + "src": "2210:33:54" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 40897, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 40894, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40891, + "src": "2177:1:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 40895, + "name": "claims_", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40887, + "src": "2181:7:54", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_ClaimRequest_$39247_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ClaimRequest memory[] memory" + } + }, + "id": 40896, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2189:6:54", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2181:14:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2177:18:54", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 40912, + "initializationExpression": { + "assignments": [ + 40891 + ], + "declarations": [ + { + "constant": false, + "id": 40891, + "mutability": "mutable", + "name": "i", + "nameLocation": "2170:1:54", + "nodeType": "VariableDeclaration", + "scope": 40912, + "src": "2162:9:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 40890, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2162:7:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 40893, + "initialValue": { + "hexValue": "30", + "id": 40892, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2174:1:54", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "2162:13:54" + }, + "loopExpression": { + "expression": { + "id": 40899, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "2197:3:54", + "subExpression": { + "id": 40898, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40891, + "src": "2197:1:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 40900, + "nodeType": "ExpressionStatement", + "src": "2197:3:54" + }, + "nodeType": "ForStatement", + "src": "2157:93:54" + } + ] + }, + "implemented": true, + "kind": "function", + "modifiers": [ + + ], + "name": "_setClaims", + "nameLocation": "2101:10:54", + "parameters": { + "id": 40888, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 40887, + "mutability": "mutable", + "name": "claims_", + "nameLocation": "2134:7:54", + "nodeType": "VariableDeclaration", + "scope": 40914, + "src": "2112:29:54", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_ClaimRequest_$39247_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ClaimRequest[]" + }, + "typeName": { + "baseType": { + "id": 40885, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 40884, + "name": "ClaimRequest", + "nameLocations": [ + "2112:12:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 39247, + "src": "2112:12:54" + }, + "referencedDeclaration": 39247, + "src": "2112:12:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ClaimRequest_$39247_storage_ptr", + "typeString": "struct ClaimRequest" + } + }, + "id": 40886, + "nodeType": "ArrayTypeName", + "src": "2112:14:54", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_ClaimRequest_$39247_storage_$dyn_storage_ptr", + "typeString": "struct ClaimRequest[]" + } + }, + "visibility": "internal" + } + ], + "src": "2111:31:54" + }, + "returnParameters": { + "id": 40889, + "nodeType": "ParameterList", + "parameters": [ + + ], + "src": "2151:0:54" + }, + "scope": 41014, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "id": 40928, + "nodeType": "FunctionDefinition", + "src": "2258:126:54", + "nodes": [ + + ], + "body": { + "id": 40927, + "nodeType": "Block", + "src": "2315:69:54", + "nodes": [ + + ], + "statements": [ + { + "expression": { + "id": 40921, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 40919, + "name": "_baseTokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40710, + "src": "2321:13:54", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 40920, + "name": "baseUri", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40916, + "src": "2337:7:54", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "2321:23:54", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 40922, + "nodeType": "ExpressionStatement", + "src": "2321:23:54" + }, + { + "eventCall": { + "arguments": [ + { + "id": 40924, + "name": "baseUri", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40916, + "src": "2371:7:54", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 40923, + "name": "BaseTokenURISet", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40721, + "src": "2355:15:54", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory)" + } + }, + "id": 40925, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [ + + ], + "names": [ + + ], + "nodeType": "FunctionCall", + "src": "2355:24:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 40926, + "nodeType": "EmitStatement", + "src": "2350:29:54" + } + ] + }, + "implemented": true, + "kind": "function", + "modifiers": [ + + ], + "name": "_setBaseTokenUri", + "nameLocation": "2267:16:54", + "parameters": { + "id": 40917, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 40916, + "mutability": "mutable", + "name": "baseUri", + "nameLocation": "2298:7:54", + "nodeType": "VariableDeclaration", + "scope": 40928, + "src": "2284:21:54", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 40915, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2284:6:54", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "2283:23:54" + }, + "returnParameters": { + "id": 40918, + "nodeType": "ParameterList", + "parameters": [ + + ], + "src": "2315:0:54" + }, + "scope": 41014, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "id": 40937, + "nodeType": "FunctionDefinition", + "src": "2388:98:54", + "nodes": [ + + ], + "body": { + "id": 40936, + "nodeType": "Block", + "src": "2455:31:54", + "nodes": [ + + ], + "statements": [ + { + "expression": { + "id": 40934, + "name": "_baseTokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40710, + "src": "2468:13:54", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 40933, + "id": 40935, + "nodeType": "Return", + "src": "2461:20:54" + } + ] + }, + "baseFunctions": [ + 30450 + ], + "implemented": true, + "kind": "function", + "modifiers": [ + + ], + "name": "_baseURI", + "nameLocation": "2397:8:54", + "overrides": { + "id": 40930, + "nodeType": "OverrideSpecifier", + "overrides": [ + + ], + "src": "2422:8:54" + }, + "parameters": { + "id": 40929, + "nodeType": "ParameterList", + "parameters": [ + + ], + "src": "2405:2:54" + }, + "returnParameters": { + "id": 40933, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 40932, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 40937, + "src": "2440:13:54", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 40931, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2440:6:54", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "2439:15:54" + }, + "scope": 41014, + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "id": 40960, + "nodeType": "FunctionDefinition", + "src": "2569:214:54", + "nodes": [ + + ], + "body": { + "id": 40959, + "nodeType": "Block", + "src": "2653:130:54", + "nodes": [ + + ], + "statements": [ + { + "condition": { + "id": 40946, + "name": "IS_NON_TRANSFERABLE", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40715, + "src": "2663:19:54", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 40951, + "nodeType": "IfStatement", + "src": "2659:70:54", + "trueBody": { + "id": 40950, + "nodeType": "Block", + "src": "2684:45:54", + "statements": [ + { + "errorCall": { + "arguments": [ + + ], + "expression": { + "argumentTypes": [ + + ], + "id": 40947, + "name": "ERC721NonTransferable", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40717, + "src": "2699:21:54", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 40948, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [ + + ], + "names": [ + + ], + "nodeType": "FunctionCall", + "src": "2699:23:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 40949, + "nodeType": "RevertStatement", + "src": "2692:30:54" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 40955, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40940, + "src": "2759:8:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 40956, + "name": "approved", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40942, + "src": "2769:8:54", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 40952, + "name": "ERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 31163, + "src": "2734:6:54", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721_$31163_$", + "typeString": "type(contract ERC721)" + } + }, + "id": 40954, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2741:17:54", + "memberName": "setApprovalForAll", + "nodeType": "MemberAccess", + "referencedDeclaration": 30528, + "src": "2734:24:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bool_$returns$__$", + "typeString": "function (address,bool)" + } + }, + "id": 40957, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [ + + ], + "names": [ + + ], + "nodeType": "FunctionCall", + "src": "2734:44:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 40958, + "nodeType": "ExpressionStatement", + "src": "2734:44:54" + } + ] + }, + "baseFunctions": [ + 30528 + ], + "documentation": { + "id": 40938, + "nodeType": "StructuredDocumentation", + "src": "2490:76:54", + "text": " @dev ERC721 can be set to non transferable in the constructor" + }, + "functionSelector": "a22cb465", + "implemented": true, + "kind": "function", + "modifiers": [ + + ], + "name": "setApprovalForAll", + "nameLocation": "2578:17:54", + "overrides": { + "id": 40944, + "nodeType": "OverrideSpecifier", + "overrides": [ + + ], + "src": "2644:8:54" + }, + "parameters": { + "id": 40943, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 40940, + "mutability": "mutable", + "name": "operator", + "nameLocation": "2604:8:54", + "nodeType": "VariableDeclaration", + "scope": 40960, + "src": "2596:16:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 40939, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2596:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 40942, + "mutability": "mutable", + "name": "approved", + "nameLocation": "2619:8:54", + "nodeType": "VariableDeclaration", + "scope": 40960, + "src": "2614:13:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 40941, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2614:4:54", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2595:33:54" + }, + "returnParameters": { + "id": 40945, + "nodeType": "ParameterList", + "parameters": [ + + ], + "src": "2653:0:54" + }, + "scope": 41014, + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "id": 40984, + "nodeType": "FunctionDefinition", + "src": "2861:248:54", + "nodes": [ + + ], + "body": { + "id": 40983, + "nodeType": "Block", + "src": "2976:133:54", + "nodes": [ + + ], + "statements": [ + { + "condition": { + "id": 40971, + "name": "IS_NON_TRANSFERABLE", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40715, + "src": "2986:19:54", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 40976, + "nodeType": "IfStatement", + "src": "2982:70:54", + "trueBody": { + "id": 40975, + "nodeType": "Block", + "src": "3007:45:54", + "statements": [ + { + "errorCall": { + "arguments": [ + + ], + "expression": { + "argumentTypes": [ + + ], + "id": 40972, + "name": "ERC721NonTransferable", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40717, + "src": "3022:21:54", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 40973, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [ + + ], + "names": [ + + ], + "nodeType": "FunctionCall", + "src": "3022:23:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 40974, + "nodeType": "RevertStatement", + "src": "3015:30:54" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 40979, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40963, + "src": "3088:5:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 40980, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40965, + "src": "3095:8:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 40977, + "name": "ERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 31163, + "src": "3064:6:54", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721_$31163_$", + "typeString": "type(contract ERC721)" + } + }, + "id": 40978, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3071:16:54", + "memberName": "isApprovedForAll", + "nodeType": "MemberAccess", + "referencedDeclaration": 30546, + "src": "3064:23:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", + "typeString": "function (address,address) view returns (bool)" + } + }, + "id": 40981, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [ + + ], + "names": [ + + ], + "nodeType": "FunctionCall", + "src": "3064:40:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 40970, + "id": 40982, + "nodeType": "Return", + "src": "3057:47:54" + } + ] + }, + "baseFunctions": [ + 30546 + ], + "documentation": { + "id": 40961, + "nodeType": "StructuredDocumentation", + "src": "2787:71:54", + "text": " @dev Reverts, this is a non transferable ERC115 contract" + }, + "functionSelector": "e985e9c5", + "implemented": true, + "kind": "function", + "modifiers": [ + + ], + "name": "isApprovedForAll", + "nameLocation": "2870:16:54", + "overrides": { + "id": 40967, + "nodeType": "OverrideSpecifier", + "overrides": [ + + ], + "src": "2952:8:54" + }, + "parameters": { + "id": 40966, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 40963, + "mutability": "mutable", + "name": "owner", + "nameLocation": "2900:5:54", + "nodeType": "VariableDeclaration", + "scope": 40984, + "src": "2892:13:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 40962, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2892:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 40965, + "mutability": "mutable", + "name": "operator", + "nameLocation": "2919:8:54", + "nodeType": "VariableDeclaration", + "scope": 40984, + "src": "2911:16:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 40964, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2911:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2886:45:54" + }, + "returnParameters": { + "id": 40970, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 40969, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 40984, + "src": "2970:4:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 40968, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2970:4:54", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2969:6:54" + }, + "scope": 41014, + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "id": 41013, + "nodeType": "FunctionDefinition", + "src": "3192:291:54", + "nodes": [ + + ], + "body": { + "id": 41012, + "nodeType": "Block", + "src": "3335:148:54", + "nodes": [ + + ], + "statements": [ + { + "condition": { + "id": 40997, + "name": "IS_NON_TRANSFERABLE", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40715, + "src": "3345:19:54", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 41002, + "nodeType": "IfStatement", + "src": "3341:70:54", + "trueBody": { + "id": 41001, + "nodeType": "Block", + "src": "3366:45:54", + "statements": [ + { + "errorCall": { + "arguments": [ + + ], + "expression": { + "argumentTypes": [ + + ], + "id": 40998, + "name": "ERC721NonTransferable", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40717, + "src": "3381:21:54", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 40999, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [ + + ], + "names": [ + + ], + "nodeType": "FunctionCall", + "src": "3381:23:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 41000, + "nodeType": "RevertStatement", + "src": "3374:30:54" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 41006, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40987, + "src": "3444:4:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 41007, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40989, + "src": "3450:2:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 41008, + "name": "firstTokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40991, + "src": "3454:12:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 41009, + "name": "batchSize", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 40993, + "src": "3468:9:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 41003, + "name": "ERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [ + + ], + "referencedDeclaration": 31163, + "src": "3416:6:54", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721_$31163_$", + "typeString": "type(contract ERC721)" + } + }, + "id": 41005, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3423:20:54", + "memberName": "_beforeTokenTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 31134, + "src": "3416:27:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256,uint256)" + } + }, + "id": 41010, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [ + + ], + "names": [ + + ], + "nodeType": "FunctionCall", + "src": "3416:62:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 41011, + "nodeType": "ExpressionStatement", + "src": "3416:62:54" + } + ] + }, + "baseFunctions": [ + 31134 + ], + "documentation": { + "id": 40985, + "nodeType": "StructuredDocumentation", + "src": "3113:76:54", + "text": " @dev ERC721 can be set to non transferable in the constructor" + }, + "implemented": true, + "kind": "function", + "modifiers": [ + + ], + "name": "_beforeTokenTransfer", + "nameLocation": "3201:20:54", + "overrides": { + "id": 40995, + "nodeType": "OverrideSpecifier", + "overrides": [ + + ], + "src": "3326:8:54" + }, + "parameters": { + "id": 40994, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 40987, + "mutability": "mutable", + "name": "from", + "nameLocation": "3235:4:54", + "nodeType": "VariableDeclaration", + "scope": 41013, + "src": "3227:12:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 40986, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3227:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 40989, + "mutability": "mutable", + "name": "to", + "nameLocation": "3253:2:54", + "nodeType": "VariableDeclaration", + "scope": 41013, + "src": "3245:10:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 40988, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3245:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 40991, + "mutability": "mutable", + "name": "firstTokenId", + "nameLocation": "3269:12:54", + "nodeType": "VariableDeclaration", + "scope": 41013, + "src": "3261:20:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 40990, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3261:7:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 40993, + "mutability": "mutable", + "name": "batchSize", + "nameLocation": "3295:9:54", + "nodeType": "VariableDeclaration", + "scope": 41013, + "src": "3287:17:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 40992, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3287:7:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3221:87:54" + }, + "returnParameters": { + "id": 40996, + "nodeType": "ParameterList", + "parameters": [ + + ], + "src": "3335:0:54" + }, + "scope": 41014, + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 40687, + "name": "ERC721", + "nameLocations": [ + "242:6:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 31163, + "src": "242:6:54" + }, + "id": 40688, + "nodeType": "InheritanceSpecifier", + "src": "242:6:54" + }, + { + "baseName": { + "id": 40689, + "name": "SismoConnect", + "nameLocations": [ + "250:12:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 36800, + "src": "250:12:54" + }, + "id": 40690, + "nodeType": "InheritanceSpecifier", + "src": "250:12:54" + }, + { + "baseName": { + "id": 40691, + "name": "Ownable", + "nameLocations": [ + "264:7:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 29479, + "src": "264:7:54" + }, + "id": 40692, + "nodeType": "InheritanceSpecifier", + "src": "264:7:54" + } + ], + "canonicalName": "ZKDrop", + "contractDependencies": [ + + ], + "contractKind": "contract", + "fullyImplemented": true, + "linearizedBaseContracts": [ + 41014, + 29479, + 36800, + 31163, + 31324, + 31279, + 32039, + 32051, + 31676 + ], + "name": "ZKDrop", + "nameLocation": "232:6:54", + "scope": 41015, + "usedErrors": [ + 39073, + 40717 + ], + "usedEvents": [ + 29380, + 31178, + 31187, + 31196, + 40721 + ] + } + ], + "license": "MIT" + }, + "id": 54 + } \ No newline at end of file diff --git a/src/libs/contracts/zk-drop/constants.ts b/src/libs/contracts/zk-drop/constants.ts new file mode 100644 index 00000000..0f37c318 --- /dev/null +++ b/src/libs/contracts/zk-drop/constants.ts @@ -0,0 +1,7 @@ +import env from "@/src/environments"; +import { Network } from "../networks"; +import zkBadge from "./abi.json"; + +export const ZK_DROP_ADDRESSES: { [network in Network]?: `0x${string}` } = env.zkBadgeAddresses; + +export const ZK_DROP_ABI = zkBadge.abi; \ No newline at end of file diff --git a/src/libs/contracts/zk-drop/index.ts b/src/libs/contracts/zk-drop/index.ts new file mode 100644 index 00000000..cbcaf46a --- /dev/null +++ b/src/libs/contracts/zk-drop/index.ts @@ -0,0 +1,2 @@ +export * from "./zk-drop"; +export * from "./constants"; \ No newline at end of file diff --git a/src/libs/contracts/zk-drop/zk-drop.ts b/src/libs/contracts/zk-drop/zk-drop.ts new file mode 100644 index 00000000..e6082e06 --- /dev/null +++ b/src/libs/contracts/zk-drop/zk-drop.ts @@ -0,0 +1,30 @@ +import { Contract, ethers, Signer, Transaction } from 'ethers'; +import { ZK_DROP_ABI } from "./constants"; + +export class ZkDropContract { + private _address: `0x${string}`; + private _contractInstance; + private _signer: Signer; + + constructor({ contractAddress, signer }: { signer: Signer, contractAddress: `0x${string}` }) { + this._signer = signer; + this._address = contractAddress; + } + + private _getContractInstance(): Contract { + if (!this._contractInstance) { + const zkDropInstance = new ethers.Contract( + this._address, + ZK_DROP_ABI, + this._signer + ); + this._contractInstance = zkDropInstance; + } + return this._contractInstance; + } + + public async mint({ responseBytes, address }: { responseBytes: string, address: string }): Promise { + const instance = this._getContractInstance(); + return await instance.claimWithSismoConnect(responseBytes, address) + } +} \ No newline at end of file diff --git a/src/scripts/upload-metadata/index.ts b/src/scripts/upload-metadata/index.ts new file mode 100644 index 00000000..e69de29b diff --git a/src/scripts/upload-metadata/upload-metadata.script.ts b/src/scripts/upload-metadata/upload-metadata.script.ts new file mode 100644 index 00000000..d661e799 --- /dev/null +++ b/src/scripts/upload-metadata/upload-metadata.script.ts @@ -0,0 +1,18 @@ +import { Command } from "commander"; +import { uploadMetadata } from "./upload-metadata"; + +const program = new Command(); + +program + .description("Upload zk drop template metadata to ipfs") + .argument("", "string to split") + .action(async (spaces) => { + let formattedSpaces = []; + for (const space of spaces) { + formattedSpaces.push(...space.split(" ")); + } + const res = await uploadMetadata(formattedSpaces); + console.log(res); + }); + +program.parse(); diff --git a/src/scripts/upload-metadata/upload-metadata.test.ts b/src/scripts/upload-metadata/upload-metadata.test.ts new file mode 100644 index 00000000..a394486c --- /dev/null +++ b/src/scripts/upload-metadata/upload-metadata.test.ts @@ -0,0 +1,23 @@ +/** + * @jest-environment node + */ + +import ServiceFactory from "@/src/services/service-factory/service-factory"; +import { SpacesService } from "@/src/services/spaces-service"; +import { spaceMock1 } from "@/src/services/spaces-service/tests/spaces-mock"; +import { uploadMetadata } from "./upload-metadata"; + +describe("SCRIPT upload-metadata", () => { + let spaceService: SpacesService; + + beforeEach(async () => { + spaceService = await ServiceFactory.getSpacesService(); + spaceService.updateConfigs([spaceMock1]) + }); + + it("should upload ", async () => { + const spaces = ["space"]; + // const res = await uploadMetadata(spaces, "main"); + // console.log("res", res); + }); +}); diff --git a/src/scripts/upload-metadata/upload-metadata.ts b/src/scripts/upload-metadata/upload-metadata.ts new file mode 100644 index 00000000..fa3741d1 --- /dev/null +++ b/src/scripts/upload-metadata/upload-metadata.ts @@ -0,0 +1,40 @@ +import { ZkAppType } from "@/src/services/spaces-service"; +import ServiceFactory from "@/src/services/service-factory/service-factory"; +import { pinFileToIPFS, pinJSONToIPFS } from "./utils/pin-ipfs"; +import { StdoutLogger } from "@/src/services/logger-service/stdout-logger-service"; + +export const uploadMetadata = async (spacesSlugs: string[]) => { + const loggerService = new StdoutLogger(); + const spacesService = ServiceFactory.getSpacesService(); + + let uploadedHash: { + [spaceSlug: string]: { + [appSlug: string]: string; + }; + } = {}; + + for (const space of await spacesService.getSpaces()) { + if (!spacesSlugs.includes(space.slug)) continue; + const apps: ZkAppType[] = space.apps; + for (const app of apps) { + if (app.type !== "zkDrop") continue; + // Upload image on IPFS + const imagePath = `${__dirname}/../../../space-configs/images/${app.nftMetadata.image}`; + loggerService.info(`Pinning ${imagePath}...`); + const { ipfsHash: imageIpfsHash } = await pinFileToIPFS(imagePath); + + // Upload Metadata on IPFS + const metadata = { + name: app.nftMetadata.name, + description: app.nftMetadata.description, + image: `ipfs://${imageIpfsHash}`, + }; + loggerService.info(`Pinning ${JSON.stringify(metadata, null, 2)}...`); + const { ipfsHash: metadataIpfsHash } = await pinJSONToIPFS(metadata); + uploadedHash[space.slug] = uploadedHash[space.slug] || {}; + uploadedHash[space.slug][app.slug] = metadataIpfsHash; + } + } + + return uploadedHash; +}; diff --git a/src/scripts/upload-metadata/utils/pin-ipfs.ts b/src/scripts/upload-metadata/utils/pin-ipfs.ts new file mode 100644 index 00000000..e2c4d870 --- /dev/null +++ b/src/scripts/upload-metadata/utils/pin-ipfs.ts @@ -0,0 +1,61 @@ +import env from "@/src/environments"; + +const FormDataTS = require("form-data"); +const fs = require("fs"); +const path = require("path"); +const axios = require("axios"); + +export const pinFileToIPFS = async (filePath: string): Promise<{ ipfsHash: string }> => { + if (!fs.existsSync(path.resolve(__dirname, filePath))) { + throw new Error(`No file found in the specified folder: "${filePath}`); + } + const formData = new FormDataTS(); + const src = path.resolve(__dirname, filePath); + + const file = fs.createReadStream(src); + formData.append("file", file); + + const metadata = JSON.stringify({ + name: "Test", + }); + formData.append("pinataMetadata", metadata); + + const options = JSON.stringify({ + cidVersion: 1, + }); + formData.append("pinataOptions", options); + + try { + const res = await axios.post("https://api.pinata.cloud/pinning/pinFileToIPFS", formData, { + maxBodyLength: "Infinity", + headers: { + "Content-Type": `multipart/form-data; boundary=${formData._boundary}`, + Authorization: `Bearer ${env.pinata.jwtToken}`, + }, + }); + return { ipfsHash: res.data.IpfsHash }; + } catch (error: any) { + throw new Error("Error pinning file to IPFS"); + } +}; + +export const pinJSONToIPFS = async (json: any): Promise<{ ipfsHash: string }> => { + let data; + if (typeof json === "string") { + data = json; + } else { + data = JSON.stringify(json); + } + + try { + const res = await axios.post("https://api.pinata.cloud/pinning/pinJSONToIPFS", data, { + headers: { + "Content-Type": "application/json", + Authorization: `Bearer ${env.pinata.jwtToken}`, + }, + }); + return { ipfsHash: res.data.IpfsHash }; + } catch (error: any) { + throw new Error("Error pinning file to IPFS"); + } +}; diff --git a/src/services/spaces-service/spaces-service.test.ts b/src/services/spaces-service/spaces-service.test.ts index 37e73a5e..cc7d7298 100644 --- a/src/services/spaces-service/spaces-service.test.ts +++ b/src/services/spaces-service/spaces-service.test.ts @@ -41,7 +41,7 @@ describe('SpacesService', () => { describe('getApps', () => { it('should return all apps when no options provided', async () => { const result = await service.getApps(); - expect(result.length).toBe(8); + expect(result.length).toBe(9); }); it('should return filtered apps when spaceSlug is provide', async () => { @@ -51,7 +51,7 @@ describe('SpacesService', () => { } }; const result = await service.getApps(options); - expect(result.length).toBe(4); + expect(result.length).toBe(5); }); it('should return apps sorted by createdAt when sortedBy option is provided', async () => { diff --git a/src/services/spaces-service/spaces-service.ts b/src/services/spaces-service/spaces-service.ts index a775a001..5dc51ba8 100644 --- a/src/services/spaces-service/spaces-service.ts +++ b/src/services/spaces-service/spaces-service.ts @@ -6,6 +6,7 @@ import { ZkFormAppType, ZkTelegramBotAppType, ZkBadgeAppType, + ZkDropAppType, } from "./types"; import { AuthType } from "@sismo-core/sismo-connect-server"; import getImgSrcFromConfig from "@/src/utils/getImgSrcFromConfig"; @@ -165,6 +166,17 @@ export class SpacesService { chains, } as ZkBadgeAppType); break; + case "zkDrop": + apps.push({ + type: appConfig.type, + ...appCommon, + nftMetadata: appConfig.templateConfig.nftMetadata, + chains: appConfig.templateConfig.chains, + step1CtaText: appConfig.templateConfig.step1CtaText ?? "Sign in with Sismo", + step2CtaText: appConfig.templateConfig.step2CtaText, + appDescription: appConfig.templateConfig.appDescription, + } as ZkDropAppType); + break; } } const space: SpaceType = { diff --git a/src/services/spaces-service/tests/spaces-mock.ts b/src/services/spaces-service/tests/spaces-mock.ts index 324017d1..9e8783f4 100644 --- a/src/services/spaces-service/tests/spaces-mock.ts +++ b/src/services/spaces-service/tests/spaces-mock.ts @@ -146,6 +146,38 @@ export const spaceMock1: SpaceConfig = { name: Network.Gnosis }] } + }, + { + type: "zkDrop", + metadata: { + name: "ZK Drop name", + slug: "zk-drop-slug", + description: "Zk drop test description", + tags: ["Drop"], + image: "image.png", + createdAt: new Date("2023-07-03T18:00"), + }, + sismoConnectRequest: { + appId: "0x4", + authRequests: [{ authType: AuthType.VAULT }], + claimRequests: [{ groupId: "0x04" }], + }, + templateConfig: { + nftMetadata: { + name: "NFT Test", + description: "This is a test description", + image: "sismo-zkdrop.png" + }, + chains: [{ + contractAddress: "{{ auto-fill }}", + name: Network.Sepolia, + relayerEnabled: true, + isTransferable: true + }], + step1CtaText: "step 1", + step2CtaText: "step 2", + appDescription: "App description" + } } ], }; diff --git a/src/services/spaces-service/types.ts b/src/services/spaces-service/types.ts index 568f1590..7f42f8f3 100644 --- a/src/services/spaces-service/types.ts +++ b/src/services/spaces-service/types.ts @@ -1,4 +1,4 @@ -import { ZkBadgeChainName } from "@/space-configs/types"; +import { ZkBadgeChainName, ZkDropChainName } from "@/space-configs/types"; import { ImportedNextImage } from "@/src/utils/getImgSrcFromConfig"; import { AuthRequest, ClaimRequest } from "@sismo-core/sismo-connect-react"; @@ -80,16 +80,25 @@ export type ExternalAppType = AppCommonType & { link: string; }; + export type ZkDropAppType = AppCommonType & { - type: "zkdrop"; - chainId: number; - userSelection?: UserSelection; // default none - contractAddress: string; - step1CtaText: string; + type: "zkDrop"; + nftMetadata: { + name: string; + description: string; + image: string; + }; + chains: { + contractAddress: `0x${string}`; + name: ZkDropChainName; + relayerEnabled?: boolean; + }[]; + step1CtaText?: string; step2CtaText: string; appDescription?: string; }; + export type ZkBadgeAppType = AppCommonType & { type: "zkBadge"; step1CtaText?: string; diff --git a/yarn.lock b/yarn.lock index 2df27093..20f7c3e1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4511,6 +4511,11 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" +commander@^11.0.0: + version "11.0.0" + resolved "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz#43e19c25dbedc8256203538e8d7e9346877a6f67" + integrity sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ== + commander@^2.20.3: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"