From c1c8d05943dcca3323b4cd4150d76137a99793d6 Mon Sep 17 00:00:00 2001 From: cedoor Date: Wed, 10 Jul 2024 10:54:00 +0100 Subject: [PATCH] build: build components sequentially --- .github/workflows/production.yml | 10 +- apps/subgraph/abis/Semaphore.json | 828 --------------------------- apps/subgraph/package.json | 3 +- apps/subgraph/subgraph.template.yaml | 2 +- package.json | 6 +- 5 files changed, 9 insertions(+), 840 deletions(-) delete mode 100644 apps/subgraph/abis/Semaphore.json diff --git a/.github/workflows/production.yml b/.github/workflows/production.yml index 4f058e4a7..0d68a27a8 100644 --- a/.github/workflows/production.yml +++ b/.github/workflows/production.yml @@ -24,14 +24,8 @@ jobs: - name: Install dependencies run: yarn - - name: Build libraries - run: yarn build:libraries - - - name: Compile contracts - run: yarn compile:contracts - - - name: Build subgraph - run: yarn build:subgraph + - name: Build packages and apps + run: yarn build - name: Format run: yarn format diff --git a/apps/subgraph/abis/Semaphore.json b/apps/subgraph/abis/Semaphore.json deleted file mode 100644 index 671370e5b..000000000 --- a/apps/subgraph/abis/Semaphore.json +++ /dev/null @@ -1,828 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "Semaphore", - "sourceName": "contracts/Semaphore.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "contract ISemaphoreVerifier", - "name": "_verifier", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [], - "name": "LeafAlreadyExists", - "type": "error" - }, - { - "inputs": [], - "name": "LeafCannotBeZero", - "type": "error" - }, - { - "inputs": [], - "name": "LeafDoesNotExist", - "type": "error" - }, - { - "inputs": [], - "name": "LeafGreaterThanSnarkScalarField", - "type": "error" - }, - { - "inputs": [], - "name": "Semaphore__CallerIsNotTheGroupAdmin", - "type": "error" - }, - { - "inputs": [], - "name": "Semaphore__GroupDoesNotExist", - "type": "error" - }, - { - "inputs": [], - "name": "Semaphore__GroupHasNoMembers", - "type": "error" - }, - { - "inputs": [], - "name": "Semaphore__InvalidProof", - "type": "error" - }, - { - "inputs": [], - "name": "Semaphore__MerkleTreeDepthIsNotSupported", - "type": "error" - }, - { - "inputs": [], - "name": "Semaphore__MerkleTreeRootIsExpired", - "type": "error" - }, - { - "inputs": [], - "name": "Semaphore__MerkleTreeRootIsNotPartOfTheGroup", - "type": "error" - }, - { - "inputs": [], - "name": "Semaphore__YouAreUsingTheSameNullifierTwice", - "type": "error" - }, - { - "inputs": [], - "name": "WrongSiblingNodes", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "groupId", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "address", - "name": "oldAdmin", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "GroupAdminUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "groupId", - "type": "uint256" - } - ], - "name": "GroupCreated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "groupId", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "oldMerkleTreeDuration", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "newMerkleTreeDuration", - "type": "uint256" - } - ], - "name": "GroupMerkleTreeDurationUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "groupId", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "index", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "identityCommitment", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "merkleTreeRoot", - "type": "uint256" - } - ], - "name": "MemberAdded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "groupId", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "index", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "identityCommitment", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "merkleTreeRoot", - "type": "uint256" - } - ], - "name": "MemberRemoved", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "groupId", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "index", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "identityCommitment", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "newIdentityCommitment", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "merkleTreeRoot", - "type": "uint256" - } - ], - "name": "MemberUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "groupId", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "startIndex", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256[]", - "name": "identityCommitments", - "type": "uint256[]" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "merkleTreeRoot", - "type": "uint256" - } - ], - "name": "MembersAdded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "groupId", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "merkleTreeDepth", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "merkleTreeRoot", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "nullifier", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "message", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "scope", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256[8]", - "name": "points", - "type": "uint256[8]" - } - ], - "name": "ProofValidated", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "groupId", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "identityCommitment", - "type": "uint256" - } - ], - "name": "addMember", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "groupId", - "type": "uint256" - }, - { - "internalType": "uint256[]", - "name": "identityCommitments", - "type": "uint256[]" - } - ], - "name": "addMembers", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "admin", - "type": "address" - }, - { - "internalType": "uint256", - "name": "merkleTreeDuration", - "type": "uint256" - } - ], - "name": "createGroup", - "outputs": [ - { - "internalType": "uint256", - "name": "groupId", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "admin", - "type": "address" - } - ], - "name": "createGroup", - "outputs": [ - { - "internalType": "uint256", - "name": "groupId", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "groupId", - "type": "uint256" - } - ], - "name": "getGroupAdmin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "groupId", - "type": "uint256" - } - ], - "name": "getMerkleTreeDepth", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "groupId", - "type": "uint256" - } - ], - "name": "getMerkleTreeRoot", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "groupId", - "type": "uint256" - } - ], - "name": "getMerkleTreeSize", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "groupCounter", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "groups", - "outputs": [ - { - "internalType": "uint256", - "name": "merkleTreeDuration", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "groupId", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "identityCommitment", - "type": "uint256" - } - ], - "name": "hasMember", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "groupId", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "identityCommitment", - "type": "uint256" - } - ], - "name": "indexOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "groupId", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "identityCommitment", - "type": "uint256" - }, - { - "internalType": "uint256[]", - "name": "merkleProofSiblings", - "type": "uint256[]" - } - ], - "name": "removeMember", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "groupId", - "type": "uint256" - }, - { - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "updateGroupAdmin", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "groupId", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "newMerkleTreeDuration", - "type": "uint256" - } - ], - "name": "updateGroupMerkleTreeDuration", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "groupId", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "identityCommitment", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "newIdentityCommitment", - "type": "uint256" - }, - { - "internalType": "uint256[]", - "name": "merkleProofSiblings", - "type": "uint256[]" - } - ], - "name": "updateMember", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "groupId", - "type": "uint256" - }, - { - "components": [ - { - "internalType": "uint256", - "name": "merkleTreeDepth", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "merkleTreeRoot", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "nullifier", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "message", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "scope", - "type": "uint256" - }, - { - "internalType": "uint256[8]", - "name": "points", - "type": "uint256[8]" - } - ], - "internalType": "struct ISemaphore.SemaphoreProof", - "name": "proof", - "type": "tuple" - } - ], - "name": "validateProof", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "verifier", - "outputs": [ - { - "internalType": "contract ISemaphoreVerifier", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "groupId", - "type": "uint256" - }, - { - "components": [ - { - "internalType": "uint256", - "name": "merkleTreeDepth", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "merkleTreeRoot", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "nullifier", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "message", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "scope", - "type": "uint256" - }, - { - "internalType": "uint256[8]", - "name": "points", - "type": "uint256[8]" - } - ], - "internalType": "struct ISemaphore.SemaphoreProof", - "name": "proof", - "type": "tuple" - } - ], - "name": "verifyProof", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x60806040523480156200001157600080fd5b5060405162003289380380620032898339818101604052810190620000379190620000fd565b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506200012f565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620000b18262000084565b9050919050565b6000620000c582620000a4565b9050919050565b620000d781620000b8565b8114620000e357600080fd5b50565b600081519050620000f781620000cc565b92915050565b6000602082840312156200011657620001156200007f565b5b60006200012684828501620000e6565b91505092915050565b61314a806200013f6000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c80636389e107116100ad578063a9961c9411610071578063a9961c9414610350578063d0d898dd14610380578063d24924fe1461039c578063dabc4d51146103ba578063fcf0b6ec146103ea57610121565b80636389e107146102745780636cdd32fe146102a45780637ee35a0c146102c057806390509d44146102f057806396324bd41461032057610121565b80632c880363116100f45780632c880363146101ac5780634178c4d5146101dc578063456f4188146101f8578063568ee826146102285780635c3f3b601461024457610121565b8063042453711461012657806306dd8485146101425780631783efc3146101725780632b7ac3f31461018e575b600080fd5b610140600480360381019061013b9190612424565b610406565b005b61015c60048036038101906101579190612484565b610447565b60405161016991906124d3565b60405180910390f35b61018c60048036038101906101879190612484565b610475565b005b6101966104b4565b6040516101a3919061256d565b60405180910390f35b6101c660048036038101906101c191906125c6565b6104da565b6040516101d391906124d3565b60405180910390f35b6101f660048036038101906101f19190612606565b610520565b005b610212600480360381019061020d91906126b3565b610565565b60405161021f919061270f565b60405180910390f35b610242600480360381019061023d919061272a565b6109aa565b005b61025e6004803603810190610259919061276a565b6109b8565b60405161026b91906124d3565b60405180910390f35b61028e60048036038101906102899190612797565b6109ff565b60405161029b91906124d3565b60405180910390f35b6102be60048036038101906102b991906127c4565b610a1e565b005b6102da60048036038101906102d59190612797565b610a61565b6040516102e791906124d3565b60405180910390f35b61030a60048036038101906103059190612484565b610a80565b604051610317919061270f565b60405180910390f35b61033a60048036038101906103359190612797565b610aae565b60405161034791906124d3565b60405180910390f35b61036a60048036038101906103659190612797565b610acc565b6040516103779190612847565b60405180910390f35b61039a600480360381019061039591906126b3565b610b09565b005b6103a4610c58565b6040516103b191906124d3565b60405180910390f35b6103d460048036038101906103cf9190612797565b610c5e565b6040516103e191906124d3565b60405180910390f35b61040460048036038101906103ff9190612484565b610c81565b005b6000610413848484610d90565b9050426003600086815260200190815260200160002060010160008381526020019081526020016000208190555050505050565b600061046d82600080868152602001908152602001600020610ea790919063ffffffff16565b905092915050565b60006104818383610ed3565b90504260036000858152602001908152602001600020600101600083815260200190815260200160002081905550505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600460008154809291906104ef90612891565b9190505590506104ff8184610fe5565b81600360008381526020019081526020016000206000018190555092915050565b600061052f86868686866110c4565b90504260036000888152602001908152602001600020600101600083815260200190815260200160002081905550505050505050565b600082600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610601576040517f029f057900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001836000013510806106185750600c8360000135115b1561064f576040517fecf64f1200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061065a85610a61565b905060008103610696576040517fc8b02e0100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006106a186610c5e565b90508085602001351461077b5760006003600088815260200190815260200160002060010160008760200135815260200190815260200160002054905060006003600089815260200190815260200160002060000154905060008203610733576040517f4d32958600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808261073f91906128d9565b421115610778576040517f9581a99000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a23f019960405180604001604052808860a0016000600881106107db576107da61290d565b5b602002013581526020018860a0016001600881106107fc576107fb61290d565b5b6020020135815250604051806040016040528060405180604001604052808b60a0016002600881106108315761083061290d565b5b602002013581526020018b60a0016003600881106108525761085161290d565b5b6020020135815250815260200160405180604001604052808b60a0016004600881106108815761088061290d565b5b602002013581526020018b60a0016005600881106108a2576108a161290d565b5b602002013581525081525060405180604001604052808a60a0016006600881106108cf576108ce61290d565b5b602002013581526020018a60a0016007600881106108f0576108ef61290d565b5b602002013581525060405180608001604052808b6020013581526020018b6040013581526020016109248c606001356111fc565b81526020016109368c608001356111fc565b8152508a600001356040518663ffffffff1660e01b815260040161095e959493929190612b69565b602060405180830381865afa15801561097b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099f9190612beb565b935050505092915050565b6109b48282611233565b5050565b6000600460008154809291906109cd90612891565b9190505590506109dd8183610fe5565b610e106003600083815260200190815260200160002060000181905550919050565b6000806000838152602001908152602001600020600101549050919050565b6000610a2c8585858561137e565b905042600360008781526020019081526020016000206001016000838152602001908152602001600020819055505050505050565b6000806000838152602001908152602001600020600001549050919050565b6000610aa6826000808681526020019081526020016000206114b190919063ffffffff16565b905092915050565b60036020528060005260406000206000915090508060000154905081565b60006001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6003600083815260200190815260200160002060020160008260400135815260200190815260200160002060009054906101000a900460ff1615610b79576040517f208b15e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b838282610565565b610bb9576040517f4aa6bc4000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016003600084815260200190815260200160002060020160008360400135815260200190815260200160002060006101000a81548160ff02191690831515021790555080608001358160200135837f0c32e14cfe81a05d371c248d22de6b7ae849e981b76a1f8842e7b6da73fc405a8460000135856040013586606001358760a001604051610c4c9493929190612c32565b60405180910390a45050565b60045481565b6000610c7a6000808481526020019081526020016000206114d4565b9050919050565b813373ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d1a576040517fbb9bf27800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060036000858152602001908152602001600020600001549050826003600086815260200190815260200160002060000181905550837f264b2a8f6763c084235fe832ba903482b2ef1a521336881fc75b987c2dfd29c58285604051610d82929190612c78565b60405180910390a250505050565b6000833373ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e2b576040517fbb9bf27800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e3686610a61565b9050610e5e85856000808a81526020019081526020016000206114f79092919063ffffffff16565b9250857f61e5e8054e3daf084a0c6c646c065e8bf5e7ca4d5567bda942309bd1652f349d82878787604051610e969493929190612d13565b60405180910390a250509392505050565b6000600183600301600084815260200190815260200160002054610ecb9190612d53565b905092915050565b6000823373ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f6e576040517fbb9bf27800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610f7985610a61565b9050610f9f84600080888152602001908152602001600020611af490919063ffffffff16565b9250847f19239b3f93cd10558aaf11423af70c77763bf54f52bcc75bfa74d4d13548cde9828686604051610fd593929190612d87565b60405180910390a2505092915050565b806001600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550817ff0adfb94eab6daf835deb69c5738fe636150c3dfd08094a76f39b963dc8cb05a60405160405180910390a28073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff16837f0ba83579a0e79193ef649b9f5a8759d35af086ba62a3e207b52e4a8ae30d49e360405160405180910390a45050565b6000853373ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461115f576040517fbb9bf27800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611185876000808b8152602001908152602001600020610ea790919063ffffffff16565b90506111b1878787876000808e8152602001908152602001600020611d7090949392919063ffffffff16565b9250877fea3588e4a2a0c93d6a0e69dfeaf7496f43ccccf02ad9ce0a5b7627cbca4b61b1828989876040516111e99493929190612dbe565b60405180910390a2505095945050505050565b60006008826040516020016112119190612e24565b6040516020818303038152906040528051906020012060001c901c9050919050565b813373ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112cc576040517fbb9bf27800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816001600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16847f0ba83579a0e79193ef649b9f5a8759d35af086ba62a3e207b52e4a8ae30d49e360405160405180910390a4505050565b6000843373ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611419576040517fbb9bf27800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061143f866000808a8152602001908152602001600020610ea790919063ffffffff16565b90506114698686866000808c8152602001908152602001600020612365909392919063ffffffff16565b9250867f3108849c053c77b8073a11256dffb5ffd5b55e93e105a355e1c9061db890d87182888660405161149f93929190612d87565b60405180910390a25050949350505050565b600080836003016000848152602001908152602001600020541415905092915050565b600081600201600083600101548152602001908152602001600020549050919050565b600080600090505b83839050811015611682577f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000184848381811061153e5761153d61290d565b5b905060200201351061157c576040517fc380a82e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008484838181106115915761159061290d565b5b90506020020135036115cf576040517f29691be200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115f2858585848181106115e6576115e561290d565b5b905060200201356114b1565b15611629576040517f258a195a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806001866000015461163b91906128d9565b61164591906128d9565b85600301600086868581811061165e5761165d61290d565b5b905060200201358152602001908152602001600020819055508060010190506114ff565b506060838380806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505090505b8383905085600001546116dd91906128d9565b856001015460026116ee9190612f72565b101561171557600185600101600082825461170991906128d9565b925050819055506116ca565b600085600001549050600085859050876000015461173391906128d9565b90506000600183901c905060006001806001856117509190612d53565b901c61175c91906128d9565b905060005b8960010154811015611a72576000838361177b9190612d53565b905060008167ffffffffffffffff81111561179957611798612fbd565b5b6040519080825280602002602001820160405280156117c75781602001602082028036833780820191505090505b50905060005b828110156119995760008088600160028a866117e991906128d9565b6117f39190612fec565b6117fd91906128d9565b101561184f578a8a600160028b8761181591906128d9565b61181f9190612fec565b61182991906128d9565b6118339190612d53565b815181106118445761184361290d565b5b602002602001015191505b896002898561185e91906128d9565b6118689190612fec565b101561188b578e60020160008781526020019081526020016000205490506118cb565b8a8a60028a8661189b91906128d9565b6118a59190612fec565b6118af9190612d53565b815181106118c0576118bf61290d565b5b602002602001015190505b60008083146119675773__$75f79a42d9bcbdbb69ad79ebd80f556f39$__63561558fe6040518060400160405280858152602001868152506040518263ffffffff1660e01b815260040161191f91906130b7565b602060405180830381865af415801561193c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196091906130e7565b905061196b565b8190505b8085858151811061197f5761197e61290d565b5b6020026020010181815250508360010193505050506117cd565b506001808716036119ea5787600189516119b39190612d53565b815181106119c4576119c361290d565b5b60200260200101518c600201600085815260200190815260200160002081905550611a37565b600188511115611a36578760028951611a039190612d53565b81518110611a1457611a1361290d565b5b60200260200101518c6002016000858152602001908152602001600020819055505b5b849650600185901c9450809750839550600180600186611a579190612d53565b901c611a6391906128d9565b93508260010192505050611761565b5087879050896000016000828254611a8a91906128d9565b9250508190555084600081518110611aa557611aa461290d565b5b60200260200101518960020160008b6001015481526020019081526020016000208190555084600081518110611ade57611add61290d565b5b6020026020010151955050505050509392505050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018210611b4f576040517fc380a82e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008203611b89576040517f29691be200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b9383836114b1565b15611bca576040517f258a195a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b60018360000154611bdc91906128d9565b83600101546002611bed9190612f72565b1015611c14576001836001016000828254611c0891906128d9565b92505081905550611bcb565b600083600001549050600083905060005b8560010154811015611d0c576001808285901c1603611ce65773__$75f79a42d9bcbdbb69ad79ebd80f556f39$__63561558fe6040518060400160405280896002016000868152602001908152602001600020548152602001858152506040518263ffffffff1660e01b8152600401611c9e91906130b7565b602060405180830381865af4158015611cbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cdf91906130e7565b9150611d01565b81866002016000838152602001908152602001600020819055505b806001019050611c25565b506001856000016000828254611d2291906128d9565b92505081905550808560020160008760010154815260200190815260200160002081905550846000015485600301600086815260200190815260200160002081905550809250505092915050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018410611dcb576040517fc380a82e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611dd586866114b1565b611e0b576040517f7204756c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008414158015611e225750611e2186856114b1565b5b15611e59576040517f258a195a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008383905003611e96576040517f3fa930c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611ea28787610ea7565b905060008590506000879050600060018a60000154611ec19190612d53565b90506000805b8b600101548110156122aa576001808288901c16036120ab577f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001898984818110611f1457611f1361290d565b5b9050602002013510611f52576040517fc380a82e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73__$75f79a42d9bcbdbb69ad79ebd80f556f39$__63561558fe60405180604001604052808c8c87818110611f8a57611f8961290d565b5b905060200201358152602001888152506040518263ffffffff1660e01b8152600401611fb691906130b7565b602060405180830381865af4158015611fd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff791906130e7565b945073__$75f79a42d9bcbdbb69ad79ebd80f556f39$__63561558fe60405180604001604052808c8c878181106120315761203061290d565b5b905060200201358152602001878152506040518263ffffffff1660e01b815260040161205d91906130b7565b602060405180830381865af415801561207a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209e91906130e7565b935081600101915061229f565b8083901c8187901c14612283577f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018989848181106120ec576120eb61290d565b5b905060200201351061212a576040517fc380a82e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73__$75f79a42d9bcbdbb69ad79ebd80f556f39$__63561558fe60405180604001604052808881526020018c8c878181106121685761216761290d565b5b905060200201358152506040518263ffffffff1660e01b815260040161218e91906130b7565b602060405180830381865af41580156121ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121cf91906130e7565b945073__$75f79a42d9bcbdbb69ad79ebd80f556f39$__63561558fe60405180604001604052808781526020018c8c8781811061220f5761220e61290d565b5b905060200201358152506040518263ffffffff1660e01b815260040161223591906130b7565b602060405180830381865af4158015612252573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227691906130e7565b935081600101915061229e565b848c6002016000848152602001908152602001600020819055505b5b806001019050611ec7565b506122b48b6114d4565b83146122ec576040517f3fa930c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b838b60020160008d600101548152602001908152602001600020819055508a60030160008b8152602001908152602001600020548b60030160008b81526020019081526020016000208190555060008b60030160008c815260200190815260200160002081905550839550505050505095945050505050565b6000612375858560008686611d70565b9050949350505050565b600080fd5b600080fd5b6000819050919050565b61239c81612389565b81146123a757600080fd5b50565b6000813590506123b981612393565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126123e4576123e36123bf565b5b8235905067ffffffffffffffff811115612401576124006123c4565b5b60208301915083602082028301111561241d5761241c6123c9565b5b9250929050565b60008060006040848603121561243d5761243c61237f565b5b600061244b868287016123aa565b935050602084013567ffffffffffffffff81111561246c5761246b612384565b5b612478868287016123ce565b92509250509250925092565b6000806040838503121561249b5761249a61237f565b5b60006124a9858286016123aa565b92505060206124ba858286016123aa565b9150509250929050565b6124cd81612389565b82525050565b60006020820190506124e860008301846124c4565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061253361252e612529846124ee565b61250e565b6124ee565b9050919050565b600061254582612518565b9050919050565b60006125578261253a565b9050919050565b6125678161254c565b82525050565b6000602082019050612582600083018461255e565b92915050565b6000612593826124ee565b9050919050565b6125a381612588565b81146125ae57600080fd5b50565b6000813590506125c08161259a565b92915050565b600080604083850312156125dd576125dc61237f565b5b60006125eb858286016125b1565b92505060206125fc858286016123aa565b9150509250929050565b6000806000806000608086880312156126225761262161237f565b5b6000612630888289016123aa565b9550506020612641888289016123aa565b9450506040612652888289016123aa565b935050606086013567ffffffffffffffff81111561267357612672612384565b5b61267f888289016123ce565b92509250509295509295909350565b600080fd5b60006101a082840312156126aa576126a961268e565b5b81905092915050565b6000806101c083850312156126cb576126ca61237f565b5b60006126d9858286016123aa565b92505060206126ea85828601612693565b9150509250929050565b60008115159050919050565b612709816126f4565b82525050565b60006020820190506127246000830184612700565b92915050565b600080604083850312156127415761274061237f565b5b600061274f858286016123aa565b9250506020612760858286016125b1565b9150509250929050565b6000602082840312156127805761277f61237f565b5b600061278e848285016125b1565b91505092915050565b6000602082840312156127ad576127ac61237f565b5b60006127bb848285016123aa565b91505092915050565b600080600080606085870312156127de576127dd61237f565b5b60006127ec878288016123aa565b94505060206127fd878288016123aa565b935050604085013567ffffffffffffffff81111561281e5761281d612384565b5b61282a878288016123ce565b925092505092959194509250565b61284181612588565b82525050565b600060208201905061285c6000830184612838565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061289c82612389565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036128ce576128cd612862565b5b600182019050919050565b60006128e482612389565b91506128ef83612389565b925082820190508082111561290757612906612862565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060029050919050565b600081905092915050565b6000819050919050565b61296581612389565b82525050565b6000612977838361295c565b60208301905092915050565b6000602082019050919050565b6129998161293c565b6129a38184612947565b92506129ae82612952565b8060005b838110156129df5781516129c6878261296b565b96506129d183612983565b9250506001810190506129b2565b505050505050565b600060029050919050565b600081905092915050565b6000819050919050565b600081905092915050565b612a1b8161293c565b612a258184612a07565b9250612a3082612952565b8060005b83811015612a61578151612a48878261296b565b9650612a5383612983565b925050600181019050612a34565b505050505050565b6000612a758383612a12565b60408301905092915050565b6000602082019050919050565b612a97816129e7565b612aa181846129f2565b9250612aac826129fd565b8060005b83811015612add578151612ac48782612a69565b9650612acf83612a81565b925050600181019050612ab0565b505050505050565b600060049050919050565b600081905092915050565b6000819050919050565b6000602082019050919050565b612b1b81612ae5565b612b258184612af0565b9250612b3082612afb565b8060005b83811015612b61578151612b48878261296b565b9650612b5383612b05565b925050600181019050612b34565b505050505050565b60006101a082019050612b7f6000830188612990565b612b8c6040830187612a8e565b612b9960c0830186612990565b612ba7610100830185612b12565b612bb56101808301846124c4565b9695505050505050565b612bc8816126f4565b8114612bd357600080fd5b50565b600081519050612be581612bbf565b92915050565b600060208284031215612c0157612c0061237f565b5b6000612c0f84828501612bd6565b91505092915050565b82818337505050565b612c2e6101008383612c18565b5050565b600061016082019050612c4860008301876124c4565b612c5560208301866124c4565b612c6260408301856124c4565b612c6f6060830184612c21565b95945050505050565b6000604082019050612c8d60008301856124c4565b612c9a60208301846124c4565b9392505050565b600082825260208201905092915050565b600080fd5b6000612cc38385612ca1565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115612cf657612cf5612cb2565b5b602083029250612d07838584612c18565b82840190509392505050565b6000606082019050612d2860008301876124c4565b8181036020830152612d3b818587612cb7565b9050612d4a60408301846124c4565b95945050505050565b6000612d5e82612389565b9150612d6983612389565b9250828203905081811115612d8157612d80612862565b5b92915050565b6000606082019050612d9c60008301866124c4565b612da960208301856124c4565b612db660408301846124c4565b949350505050565b6000608082019050612dd360008301876124c4565b612de060208301866124c4565b612ded60408301856124c4565b612dfa60608301846124c4565b95945050505050565b6000819050919050565b612e1e612e1982612389565b612e03565b82525050565b6000612e308284612e0d565b60208201915081905092915050565b60008160011c9050919050565b6000808291508390505b6001851115612e9657808604811115612e7257612e71612862565b5b6001851615612e815780820291505b8081029050612e8f85612e3f565b9450612e56565b94509492505050565b600082612eaf5760019050612f6b565b81612ebd5760009050612f6b565b8160018114612ed35760028114612edd57612f0c565b6001915050612f6b565b60ff841115612eef57612eee612862565b5b8360020a915084821115612f0657612f05612862565b5b50612f6b565b5060208310610133831016604e8410600b8410161715612f415782820a905083811115612f3c57612f3b612862565b5b612f6b565b612f4e8484846001612e4c565b92509050818404811115612f6557612f64612862565b5b81810290505b9392505050565b6000612f7d82612389565b9150612f8883612389565b9250612fb57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612e9f565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000612ff782612389565b915061300283612389565b925082820261301081612389565b9150828204841483151761302757613026612862565b5b5092915050565b600081905092915050565b61304281612389565b82525050565b60006130548383613039565b60208301905092915050565b6130698161293c565b613073818461302e565b925061307e82612952565b8060005b838110156130af5781516130968782613048565b96506130a183612983565b925050600181019050613082565b505050505050565b60006040820190506130cc6000830184613060565b92915050565b6000815190506130e181612393565b92915050565b6000602082840312156130fd576130fc61237f565b5b600061310b848285016130d2565b9150509291505056fea26469706673582212203df88e73ccee0ad5907c5b395324819b21c1211d63ad0c3a7c08aa9244c6c69664736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101215760003560e01c80636389e107116100ad578063a9961c9411610071578063a9961c9414610350578063d0d898dd14610380578063d24924fe1461039c578063dabc4d51146103ba578063fcf0b6ec146103ea57610121565b80636389e107146102745780636cdd32fe146102a45780637ee35a0c146102c057806390509d44146102f057806396324bd41461032057610121565b80632c880363116100f45780632c880363146101ac5780634178c4d5146101dc578063456f4188146101f8578063568ee826146102285780635c3f3b601461024457610121565b8063042453711461012657806306dd8485146101425780631783efc3146101725780632b7ac3f31461018e575b600080fd5b610140600480360381019061013b9190612424565b610406565b005b61015c60048036038101906101579190612484565b610447565b60405161016991906124d3565b60405180910390f35b61018c60048036038101906101879190612484565b610475565b005b6101966104b4565b6040516101a3919061256d565b60405180910390f35b6101c660048036038101906101c191906125c6565b6104da565b6040516101d391906124d3565b60405180910390f35b6101f660048036038101906101f19190612606565b610520565b005b610212600480360381019061020d91906126b3565b610565565b60405161021f919061270f565b60405180910390f35b610242600480360381019061023d919061272a565b6109aa565b005b61025e6004803603810190610259919061276a565b6109b8565b60405161026b91906124d3565b60405180910390f35b61028e60048036038101906102899190612797565b6109ff565b60405161029b91906124d3565b60405180910390f35b6102be60048036038101906102b991906127c4565b610a1e565b005b6102da60048036038101906102d59190612797565b610a61565b6040516102e791906124d3565b60405180910390f35b61030a60048036038101906103059190612484565b610a80565b604051610317919061270f565b60405180910390f35b61033a60048036038101906103359190612797565b610aae565b60405161034791906124d3565b60405180910390f35b61036a60048036038101906103659190612797565b610acc565b6040516103779190612847565b60405180910390f35b61039a600480360381019061039591906126b3565b610b09565b005b6103a4610c58565b6040516103b191906124d3565b60405180910390f35b6103d460048036038101906103cf9190612797565b610c5e565b6040516103e191906124d3565b60405180910390f35b61040460048036038101906103ff9190612484565b610c81565b005b6000610413848484610d90565b9050426003600086815260200190815260200160002060010160008381526020019081526020016000208190555050505050565b600061046d82600080868152602001908152602001600020610ea790919063ffffffff16565b905092915050565b60006104818383610ed3565b90504260036000858152602001908152602001600020600101600083815260200190815260200160002081905550505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600460008154809291906104ef90612891565b9190505590506104ff8184610fe5565b81600360008381526020019081526020016000206000018190555092915050565b600061052f86868686866110c4565b90504260036000888152602001908152602001600020600101600083815260200190815260200160002081905550505050505050565b600082600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610601576040517f029f057900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001836000013510806106185750600c8360000135115b1561064f576040517fecf64f1200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061065a85610a61565b905060008103610696576040517fc8b02e0100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006106a186610c5e565b90508085602001351461077b5760006003600088815260200190815260200160002060010160008760200135815260200190815260200160002054905060006003600089815260200190815260200160002060000154905060008203610733576040517f4d32958600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808261073f91906128d9565b421115610778576040517f9581a99000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a23f019960405180604001604052808860a0016000600881106107db576107da61290d565b5b602002013581526020018860a0016001600881106107fc576107fb61290d565b5b6020020135815250604051806040016040528060405180604001604052808b60a0016002600881106108315761083061290d565b5b602002013581526020018b60a0016003600881106108525761085161290d565b5b6020020135815250815260200160405180604001604052808b60a0016004600881106108815761088061290d565b5b602002013581526020018b60a0016005600881106108a2576108a161290d565b5b602002013581525081525060405180604001604052808a60a0016006600881106108cf576108ce61290d565b5b602002013581526020018a60a0016007600881106108f0576108ef61290d565b5b602002013581525060405180608001604052808b6020013581526020018b6040013581526020016109248c606001356111fc565b81526020016109368c608001356111fc565b8152508a600001356040518663ffffffff1660e01b815260040161095e959493929190612b69565b602060405180830381865afa15801561097b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099f9190612beb565b935050505092915050565b6109b48282611233565b5050565b6000600460008154809291906109cd90612891565b9190505590506109dd8183610fe5565b610e106003600083815260200190815260200160002060000181905550919050565b6000806000838152602001908152602001600020600101549050919050565b6000610a2c8585858561137e565b905042600360008781526020019081526020016000206001016000838152602001908152602001600020819055505050505050565b6000806000838152602001908152602001600020600001549050919050565b6000610aa6826000808681526020019081526020016000206114b190919063ffffffff16565b905092915050565b60036020528060005260406000206000915090508060000154905081565b60006001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6003600083815260200190815260200160002060020160008260400135815260200190815260200160002060009054906101000a900460ff1615610b79576040517f208b15e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b838282610565565b610bb9576040517f4aa6bc4000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016003600084815260200190815260200160002060020160008360400135815260200190815260200160002060006101000a81548160ff02191690831515021790555080608001358160200135837f0c32e14cfe81a05d371c248d22de6b7ae849e981b76a1f8842e7b6da73fc405a8460000135856040013586606001358760a001604051610c4c9493929190612c32565b60405180910390a45050565b60045481565b6000610c7a6000808481526020019081526020016000206114d4565b9050919050565b813373ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d1a576040517fbb9bf27800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060036000858152602001908152602001600020600001549050826003600086815260200190815260200160002060000181905550837f264b2a8f6763c084235fe832ba903482b2ef1a521336881fc75b987c2dfd29c58285604051610d82929190612c78565b60405180910390a250505050565b6000833373ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e2b576040517fbb9bf27800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e3686610a61565b9050610e5e85856000808a81526020019081526020016000206114f79092919063ffffffff16565b9250857f61e5e8054e3daf084a0c6c646c065e8bf5e7ca4d5567bda942309bd1652f349d82878787604051610e969493929190612d13565b60405180910390a250509392505050565b6000600183600301600084815260200190815260200160002054610ecb9190612d53565b905092915050565b6000823373ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f6e576040517fbb9bf27800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610f7985610a61565b9050610f9f84600080888152602001908152602001600020611af490919063ffffffff16565b9250847f19239b3f93cd10558aaf11423af70c77763bf54f52bcc75bfa74d4d13548cde9828686604051610fd593929190612d87565b60405180910390a2505092915050565b806001600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550817ff0adfb94eab6daf835deb69c5738fe636150c3dfd08094a76f39b963dc8cb05a60405160405180910390a28073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff16837f0ba83579a0e79193ef649b9f5a8759d35af086ba62a3e207b52e4a8ae30d49e360405160405180910390a45050565b6000853373ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461115f576040517fbb9bf27800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611185876000808b8152602001908152602001600020610ea790919063ffffffff16565b90506111b1878787876000808e8152602001908152602001600020611d7090949392919063ffffffff16565b9250877fea3588e4a2a0c93d6a0e69dfeaf7496f43ccccf02ad9ce0a5b7627cbca4b61b1828989876040516111e99493929190612dbe565b60405180910390a2505095945050505050565b60006008826040516020016112119190612e24565b6040516020818303038152906040528051906020012060001c901c9050919050565b813373ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112cc576040517fbb9bf27800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816001600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16847f0ba83579a0e79193ef649b9f5a8759d35af086ba62a3e207b52e4a8ae30d49e360405160405180910390a4505050565b6000843373ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611419576040517fbb9bf27800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061143f866000808a8152602001908152602001600020610ea790919063ffffffff16565b90506114698686866000808c8152602001908152602001600020612365909392919063ffffffff16565b9250867f3108849c053c77b8073a11256dffb5ffd5b55e93e105a355e1c9061db890d87182888660405161149f93929190612d87565b60405180910390a25050949350505050565b600080836003016000848152602001908152602001600020541415905092915050565b600081600201600083600101548152602001908152602001600020549050919050565b600080600090505b83839050811015611682577f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000184848381811061153e5761153d61290d565b5b905060200201351061157c576040517fc380a82e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008484838181106115915761159061290d565b5b90506020020135036115cf576040517f29691be200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115f2858585848181106115e6576115e561290d565b5b905060200201356114b1565b15611629576040517f258a195a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806001866000015461163b91906128d9565b61164591906128d9565b85600301600086868581811061165e5761165d61290d565b5b905060200201358152602001908152602001600020819055508060010190506114ff565b506060838380806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505090505b8383905085600001546116dd91906128d9565b856001015460026116ee9190612f72565b101561171557600185600101600082825461170991906128d9565b925050819055506116ca565b600085600001549050600085859050876000015461173391906128d9565b90506000600183901c905060006001806001856117509190612d53565b901c61175c91906128d9565b905060005b8960010154811015611a72576000838361177b9190612d53565b905060008167ffffffffffffffff81111561179957611798612fbd565b5b6040519080825280602002602001820160405280156117c75781602001602082028036833780820191505090505b50905060005b828110156119995760008088600160028a866117e991906128d9565b6117f39190612fec565b6117fd91906128d9565b101561184f578a8a600160028b8761181591906128d9565b61181f9190612fec565b61182991906128d9565b6118339190612d53565b815181106118445761184361290d565b5b602002602001015191505b896002898561185e91906128d9565b6118689190612fec565b101561188b578e60020160008781526020019081526020016000205490506118cb565b8a8a60028a8661189b91906128d9565b6118a59190612fec565b6118af9190612d53565b815181106118c0576118bf61290d565b5b602002602001015190505b60008083146119675773__$75f79a42d9bcbdbb69ad79ebd80f556f39$__63561558fe6040518060400160405280858152602001868152506040518263ffffffff1660e01b815260040161191f91906130b7565b602060405180830381865af415801561193c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196091906130e7565b905061196b565b8190505b8085858151811061197f5761197e61290d565b5b6020026020010181815250508360010193505050506117cd565b506001808716036119ea5787600189516119b39190612d53565b815181106119c4576119c361290d565b5b60200260200101518c600201600085815260200190815260200160002081905550611a37565b600188511115611a36578760028951611a039190612d53565b81518110611a1457611a1361290d565b5b60200260200101518c6002016000858152602001908152602001600020819055505b5b849650600185901c9450809750839550600180600186611a579190612d53565b901c611a6391906128d9565b93508260010192505050611761565b5087879050896000016000828254611a8a91906128d9565b9250508190555084600081518110611aa557611aa461290d565b5b60200260200101518960020160008b6001015481526020019081526020016000208190555084600081518110611ade57611add61290d565b5b6020026020010151955050505050509392505050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018210611b4f576040517fc380a82e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008203611b89576040517f29691be200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b9383836114b1565b15611bca576040517f258a195a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b60018360000154611bdc91906128d9565b83600101546002611bed9190612f72565b1015611c14576001836001016000828254611c0891906128d9565b92505081905550611bcb565b600083600001549050600083905060005b8560010154811015611d0c576001808285901c1603611ce65773__$75f79a42d9bcbdbb69ad79ebd80f556f39$__63561558fe6040518060400160405280896002016000868152602001908152602001600020548152602001858152506040518263ffffffff1660e01b8152600401611c9e91906130b7565b602060405180830381865af4158015611cbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cdf91906130e7565b9150611d01565b81866002016000838152602001908152602001600020819055505b806001019050611c25565b506001856000016000828254611d2291906128d9565b92505081905550808560020160008760010154815260200190815260200160002081905550846000015485600301600086815260200190815260200160002081905550809250505092915050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018410611dcb576040517fc380a82e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611dd586866114b1565b611e0b576040517f7204756c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008414158015611e225750611e2186856114b1565b5b15611e59576040517f258a195a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008383905003611e96576040517f3fa930c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611ea28787610ea7565b905060008590506000879050600060018a60000154611ec19190612d53565b90506000805b8b600101548110156122aa576001808288901c16036120ab577f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001898984818110611f1457611f1361290d565b5b9050602002013510611f52576040517fc380a82e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73__$75f79a42d9bcbdbb69ad79ebd80f556f39$__63561558fe60405180604001604052808c8c87818110611f8a57611f8961290d565b5b905060200201358152602001888152506040518263ffffffff1660e01b8152600401611fb691906130b7565b602060405180830381865af4158015611fd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff791906130e7565b945073__$75f79a42d9bcbdbb69ad79ebd80f556f39$__63561558fe60405180604001604052808c8c878181106120315761203061290d565b5b905060200201358152602001878152506040518263ffffffff1660e01b815260040161205d91906130b7565b602060405180830381865af415801561207a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209e91906130e7565b935081600101915061229f565b8083901c8187901c14612283577f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018989848181106120ec576120eb61290d565b5b905060200201351061212a576040517fc380a82e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73__$75f79a42d9bcbdbb69ad79ebd80f556f39$__63561558fe60405180604001604052808881526020018c8c878181106121685761216761290d565b5b905060200201358152506040518263ffffffff1660e01b815260040161218e91906130b7565b602060405180830381865af41580156121ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121cf91906130e7565b945073__$75f79a42d9bcbdbb69ad79ebd80f556f39$__63561558fe60405180604001604052808781526020018c8c8781811061220f5761220e61290d565b5b905060200201358152506040518263ffffffff1660e01b815260040161223591906130b7565b602060405180830381865af4158015612252573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227691906130e7565b935081600101915061229e565b848c6002016000848152602001908152602001600020819055505b5b806001019050611ec7565b506122b48b6114d4565b83146122ec576040517f3fa930c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b838b60020160008d600101548152602001908152602001600020819055508a60030160008b8152602001908152602001600020548b60030160008b81526020019081526020016000208190555060008b60030160008c815260200190815260200160002081905550839550505050505095945050505050565b6000612375858560008686611d70565b9050949350505050565b600080fd5b600080fd5b6000819050919050565b61239c81612389565b81146123a757600080fd5b50565b6000813590506123b981612393565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126123e4576123e36123bf565b5b8235905067ffffffffffffffff811115612401576124006123c4565b5b60208301915083602082028301111561241d5761241c6123c9565b5b9250929050565b60008060006040848603121561243d5761243c61237f565b5b600061244b868287016123aa565b935050602084013567ffffffffffffffff81111561246c5761246b612384565b5b612478868287016123ce565b92509250509250925092565b6000806040838503121561249b5761249a61237f565b5b60006124a9858286016123aa565b92505060206124ba858286016123aa565b9150509250929050565b6124cd81612389565b82525050565b60006020820190506124e860008301846124c4565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061253361252e612529846124ee565b61250e565b6124ee565b9050919050565b600061254582612518565b9050919050565b60006125578261253a565b9050919050565b6125678161254c565b82525050565b6000602082019050612582600083018461255e565b92915050565b6000612593826124ee565b9050919050565b6125a381612588565b81146125ae57600080fd5b50565b6000813590506125c08161259a565b92915050565b600080604083850312156125dd576125dc61237f565b5b60006125eb858286016125b1565b92505060206125fc858286016123aa565b9150509250929050565b6000806000806000608086880312156126225761262161237f565b5b6000612630888289016123aa565b9550506020612641888289016123aa565b9450506040612652888289016123aa565b935050606086013567ffffffffffffffff81111561267357612672612384565b5b61267f888289016123ce565b92509250509295509295909350565b600080fd5b60006101a082840312156126aa576126a961268e565b5b81905092915050565b6000806101c083850312156126cb576126ca61237f565b5b60006126d9858286016123aa565b92505060206126ea85828601612693565b9150509250929050565b60008115159050919050565b612709816126f4565b82525050565b60006020820190506127246000830184612700565b92915050565b600080604083850312156127415761274061237f565b5b600061274f858286016123aa565b9250506020612760858286016125b1565b9150509250929050565b6000602082840312156127805761277f61237f565b5b600061278e848285016125b1565b91505092915050565b6000602082840312156127ad576127ac61237f565b5b60006127bb848285016123aa565b91505092915050565b600080600080606085870312156127de576127dd61237f565b5b60006127ec878288016123aa565b94505060206127fd878288016123aa565b935050604085013567ffffffffffffffff81111561281e5761281d612384565b5b61282a878288016123ce565b925092505092959194509250565b61284181612588565b82525050565b600060208201905061285c6000830184612838565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061289c82612389565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036128ce576128cd612862565b5b600182019050919050565b60006128e482612389565b91506128ef83612389565b925082820190508082111561290757612906612862565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060029050919050565b600081905092915050565b6000819050919050565b61296581612389565b82525050565b6000612977838361295c565b60208301905092915050565b6000602082019050919050565b6129998161293c565b6129a38184612947565b92506129ae82612952565b8060005b838110156129df5781516129c6878261296b565b96506129d183612983565b9250506001810190506129b2565b505050505050565b600060029050919050565b600081905092915050565b6000819050919050565b600081905092915050565b612a1b8161293c565b612a258184612a07565b9250612a3082612952565b8060005b83811015612a61578151612a48878261296b565b9650612a5383612983565b925050600181019050612a34565b505050505050565b6000612a758383612a12565b60408301905092915050565b6000602082019050919050565b612a97816129e7565b612aa181846129f2565b9250612aac826129fd565b8060005b83811015612add578151612ac48782612a69565b9650612acf83612a81565b925050600181019050612ab0565b505050505050565b600060049050919050565b600081905092915050565b6000819050919050565b6000602082019050919050565b612b1b81612ae5565b612b258184612af0565b9250612b3082612afb565b8060005b83811015612b61578151612b48878261296b565b9650612b5383612b05565b925050600181019050612b34565b505050505050565b60006101a082019050612b7f6000830188612990565b612b8c6040830187612a8e565b612b9960c0830186612990565b612ba7610100830185612b12565b612bb56101808301846124c4565b9695505050505050565b612bc8816126f4565b8114612bd357600080fd5b50565b600081519050612be581612bbf565b92915050565b600060208284031215612c0157612c0061237f565b5b6000612c0f84828501612bd6565b91505092915050565b82818337505050565b612c2e6101008383612c18565b5050565b600061016082019050612c4860008301876124c4565b612c5560208301866124c4565b612c6260408301856124c4565b612c6f6060830184612c21565b95945050505050565b6000604082019050612c8d60008301856124c4565b612c9a60208301846124c4565b9392505050565b600082825260208201905092915050565b600080fd5b6000612cc38385612ca1565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115612cf657612cf5612cb2565b5b602083029250612d07838584612c18565b82840190509392505050565b6000606082019050612d2860008301876124c4565b8181036020830152612d3b818587612cb7565b9050612d4a60408301846124c4565b95945050505050565b6000612d5e82612389565b9150612d6983612389565b9250828203905081811115612d8157612d80612862565b5b92915050565b6000606082019050612d9c60008301866124c4565b612da960208301856124c4565b612db660408301846124c4565b949350505050565b6000608082019050612dd360008301876124c4565b612de060208301866124c4565b612ded60408301856124c4565b612dfa60608301846124c4565b95945050505050565b6000819050919050565b612e1e612e1982612389565b612e03565b82525050565b6000612e308284612e0d565b60208201915081905092915050565b60008160011c9050919050565b6000808291508390505b6001851115612e9657808604811115612e7257612e71612862565b5b6001851615612e815780820291505b8081029050612e8f85612e3f565b9450612e56565b94509492505050565b600082612eaf5760019050612f6b565b81612ebd5760009050612f6b565b8160018114612ed35760028114612edd57612f0c565b6001915050612f6b565b60ff841115612eef57612eee612862565b5b8360020a915084821115612f0657612f05612862565b5b50612f6b565b5060208310610133831016604e8410600b8410161715612f415782820a905083811115612f3c57612f3b612862565b5b612f6b565b612f4e8484846001612e4c565b92509050818404811115612f6557612f64612862565b5b81810290505b9392505050565b6000612f7d82612389565b9150612f8883612389565b9250612fb57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612e9f565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000612ff782612389565b915061300283612389565b925082820261301081612389565b9150828204841483151761302757613026612862565b5b5092915050565b600081905092915050565b61304281612389565b82525050565b60006130548383613039565b60208301905092915050565b6130698161293c565b613073818461302e565b925061307e82612952565b8060005b838110156130af5781516130968782613048565b96506130a183612983565b925050600181019050613082565b505050505050565b60006040820190506130cc6000830184613060565b92915050565b6000815190506130e181612393565b92915050565b6000602082840312156130fd576130fc61237f565b5b600061310b848285016130d2565b9150509291505056fea26469706673582212203df88e73ccee0ad5907c5b395324819b21c1211d63ad0c3a7c08aa9244c6c69664736f6c63430008170033", - "linkReferences": { - "poseidon-solidity/PoseidonT3.sol": { - "PoseidonT3": [ - { - "length": 20, - "start": 6677 - }, - { - "length": 20, - "start": 7551 - }, - { - "length": 20, - "start": 8339 - }, - { - "length": 20, - "start": 8506 - }, - { - "length": 20, - "start": 8811 - }, - { - "length": 20, - "start": 8978 - } - ] - } - }, - "deployedLinkReferences": { - "poseidon-solidity/PoseidonT3.sol": { - "PoseidonT3": [ - { - "length": 20, - "start": 6358 - }, - { - "length": 20, - "start": 7232 - }, - { - "length": 20, - "start": 8020 - }, - { - "length": 20, - "start": 8187 - }, - { - "length": 20, - "start": 8492 - }, - { - "length": 20, - "start": 8659 - } - ] - } - } -} diff --git a/apps/subgraph/package.json b/apps/subgraph/package.json index 90e86ab8f..c4b3fce58 100644 --- a/apps/subgraph/package.json +++ b/apps/subgraph/package.json @@ -7,7 +7,8 @@ "scripts": { "codegen": "node scripts/generate-subgraph.js ${0} && graph codegen", "codegen:sepolia": "yarn codegen sepolia", - "build": "yarn codegen:sepolia && graph build", + "build": "graph build", + "build:sepolia": "yarn codegen:sepolia && graph build", "auth": "graph auth --studio", "deploy": "graph deploy --node https://api.studio.thegraph.com/deploy/ ${0}", "start-ipfs": "node scripts/start-ipfs.js", diff --git a/apps/subgraph/subgraph.template.yaml b/apps/subgraph/subgraph.template.yaml index 1301a7611..567fbb118 100644 --- a/apps/subgraph/subgraph.template.yaml +++ b/apps/subgraph/subgraph.template.yaml @@ -18,7 +18,7 @@ dataSources: - Member abis: - name: Semaphore - file: ./abis/Semaphore.json + file: ../../node_modules/@semaphore-protocol/utils/src/semaphore-interface.json eventHandlers: - event: GroupCreated(indexed uint256) handler: createGroup diff --git a/package.json b/package.json index ea0d01124..fb9c9d0cd 100644 --- a/package.json +++ b/package.json @@ -7,9 +7,11 @@ "bugs": "https://github.com/semaphore-protocol/semaphore/issues", "private": true, "scripts": { - "build": "yarn workspaces foreach -Ap --topological-dev run build", + "build": "yarn build:libraries && yarn build:subgraph && yarn build:website && yarn build:docs", "build:libraries": "yarn workspaces foreach -Apt --no-private run build", - "build:subgraph": "yarn workspace semaphore-subgraph build", + "build:subgraph": "yarn workspace semaphore-subgraph build:sepolia", + "build:website": "yarn workspace semaphore-website build", + "build:docs": "yarn workspace semaphore-docs build", "compile:contracts": "yarn workspace semaphore-contracts compile", "test": "concurrently -g -c auto -n circuits,contracts,libraries,subgraph \"yarn:test:circuits\" \"yarn:test:contracts\" \"yarn:test:libraries\" \"yarn test:subgraph\"", "test:libraries": "jest --coverage",