From bb41e35f1566cf2a696016903fe003d04cadc8c7 Mon Sep 17 00:00:00 2001 From: m0ar Date: Wed, 22 May 2024 15:59:36 +0200 Subject: [PATCH 01/34] Initial version of alias registry contract --- .../DpidAliasRegistry.json | 380 +++++++++ .../contracts/DpidAliasRegistry.sol | 131 +++ desci-contracts/hardhat.config.ts | 3 + desci-contracts/package.json | 6 +- desci-contracts/test/DpidAliasRegistry.ts | 227 +++++ .../typechain-types/ContextUpgradeable.js | 2 - .../typechain-types/DpidAliasRegistry.ts | 497 +++++++++++ .../typechain-types/DpidRegistry.js | 2 - desci-contracts/typechain-types/ERC165.js | 2 - .../typechain-types/ERC165Upgradeable.js | 2 - desci-contracts/typechain-types/ERC721.js | 2 - .../typechain-types/ERC721Upgradeable.js | 2 - .../typechain-types/IDpidRegistry.js | 2 - desci-contracts/typechain-types/IERC165.js | 2 - .../typechain-types/IERC165Upgradeable.js | 2 - desci-contracts/typechain-types/IERC721.js | 2 - .../typechain-types/IERC721Metadata.js | 2 - .../IERC721MetadataUpgradeable.js | 2 - .../typechain-types/IERC721Receiver.js | 2 - .../IERC721ReceiverUpgradeable.js | 2 - .../typechain-types/IERC721Upgradeable.js | 2 - .../typechain-types/Initializable.js | 2 - .../typechain-types/OwnableUpgradeable.js | 2 - .../typechain-types/ResearchObject.js | 2 - .../typechain-types/ResearchObjectMigrated.js | 2 - .../typechain-types/ResearchObjectV2.js | 2 - desci-contracts/typechain-types/TestERC721.js | 2 - .../typechain-types/VersionedERC721.js | 2 - .../typechain-types/VersionedERC721V2.js | 2 - desci-contracts/typechain-types/common.js | 2 - .../factories/ContextUpgradeable__factory.js | 35 - .../factories/DpidAliasRegistry__factory.ts | 433 ++++++++++ .../factories/DpidRegistry__factory.js | 483 ----------- .../factories/ERC165Upgradeable__factory.js | 54 -- .../factories/ERC165__factory.js | 41 - .../factories/ERC721Upgradeable__factory.js | 409 --------- .../factories/ERC721__factory.js | 412 --------- .../factories/IDpidRegistry__factory.js | 94 --- .../factories/IERC165Upgradeable__factory.js | 41 - .../factories/IERC165__factory.js | 41 - .../IERC721MetadataUpgradeable__factory.js | 352 -------- .../factories/IERC721Metadata__factory.js | 352 -------- .../IERC721ReceiverUpgradeable__factory.js | 56 -- .../factories/IERC721Receiver__factory.js | 56 -- .../factories/IERC721Upgradeable__factory.js | 307 ------- .../factories/IERC721__factory.js | 307 ------- .../factories/Initializable__factory.js | 35 - .../factories/OwnableUpgradeable__factory.js | 87 -- .../ResearchObjectMigrated__factory.js | 790 ------------------ .../factories/ResearchObjectV2__factory.js | 663 --------------- .../factories/ResearchObject__factory.js | 663 --------------- .../factories/TestERC721__factory.js | 425 ---------- .../factories/VersionedERC721V2__factory.js | 508 ----------- .../factories/VersionedERC721__factory.js | 508 ----------- desci-contracts/typechain-types/hardhat.d.ts | 9 + desci-contracts/typechain-types/index.js | 60 -- desci-contracts/typechain-types/index.ts | 2 + desci-contracts/yarn.lock | 16 +- 58 files changed, 1702 insertions(+), 6829 deletions(-) create mode 100644 desci-contracts/artifacts/contracts/DpidAliasRegistry.sol/DpidAliasRegistry.json create mode 100644 desci-contracts/contracts/DpidAliasRegistry.sol create mode 100644 desci-contracts/test/DpidAliasRegistry.ts delete mode 100644 desci-contracts/typechain-types/ContextUpgradeable.js create mode 100644 desci-contracts/typechain-types/DpidAliasRegistry.ts delete mode 100644 desci-contracts/typechain-types/DpidRegistry.js delete mode 100644 desci-contracts/typechain-types/ERC165.js delete mode 100644 desci-contracts/typechain-types/ERC165Upgradeable.js delete mode 100644 desci-contracts/typechain-types/ERC721.js delete mode 100644 desci-contracts/typechain-types/ERC721Upgradeable.js delete mode 100644 desci-contracts/typechain-types/IDpidRegistry.js delete mode 100644 desci-contracts/typechain-types/IERC165.js delete mode 100644 desci-contracts/typechain-types/IERC165Upgradeable.js delete mode 100644 desci-contracts/typechain-types/IERC721.js delete mode 100644 desci-contracts/typechain-types/IERC721Metadata.js delete mode 100644 desci-contracts/typechain-types/IERC721MetadataUpgradeable.js delete mode 100644 desci-contracts/typechain-types/IERC721Receiver.js delete mode 100644 desci-contracts/typechain-types/IERC721ReceiverUpgradeable.js delete mode 100644 desci-contracts/typechain-types/IERC721Upgradeable.js delete mode 100644 desci-contracts/typechain-types/Initializable.js delete mode 100644 desci-contracts/typechain-types/OwnableUpgradeable.js delete mode 100644 desci-contracts/typechain-types/ResearchObject.js delete mode 100644 desci-contracts/typechain-types/ResearchObjectMigrated.js delete mode 100644 desci-contracts/typechain-types/ResearchObjectV2.js delete mode 100644 desci-contracts/typechain-types/TestERC721.js delete mode 100644 desci-contracts/typechain-types/VersionedERC721.js delete mode 100644 desci-contracts/typechain-types/VersionedERC721V2.js delete mode 100644 desci-contracts/typechain-types/common.js delete mode 100644 desci-contracts/typechain-types/factories/ContextUpgradeable__factory.js create mode 100644 desci-contracts/typechain-types/factories/DpidAliasRegistry__factory.ts delete mode 100644 desci-contracts/typechain-types/factories/DpidRegistry__factory.js delete mode 100644 desci-contracts/typechain-types/factories/ERC165Upgradeable__factory.js delete mode 100644 desci-contracts/typechain-types/factories/ERC165__factory.js delete mode 100644 desci-contracts/typechain-types/factories/ERC721Upgradeable__factory.js delete mode 100644 desci-contracts/typechain-types/factories/ERC721__factory.js delete mode 100644 desci-contracts/typechain-types/factories/IDpidRegistry__factory.js delete mode 100644 desci-contracts/typechain-types/factories/IERC165Upgradeable__factory.js delete mode 100644 desci-contracts/typechain-types/factories/IERC165__factory.js delete mode 100644 desci-contracts/typechain-types/factories/IERC721MetadataUpgradeable__factory.js delete mode 100644 desci-contracts/typechain-types/factories/IERC721Metadata__factory.js delete mode 100644 desci-contracts/typechain-types/factories/IERC721ReceiverUpgradeable__factory.js delete mode 100644 desci-contracts/typechain-types/factories/IERC721Receiver__factory.js delete mode 100644 desci-contracts/typechain-types/factories/IERC721Upgradeable__factory.js delete mode 100644 desci-contracts/typechain-types/factories/IERC721__factory.js delete mode 100644 desci-contracts/typechain-types/factories/Initializable__factory.js delete mode 100644 desci-contracts/typechain-types/factories/OwnableUpgradeable__factory.js delete mode 100644 desci-contracts/typechain-types/factories/ResearchObjectMigrated__factory.js delete mode 100644 desci-contracts/typechain-types/factories/ResearchObjectV2__factory.js delete mode 100644 desci-contracts/typechain-types/factories/ResearchObject__factory.js delete mode 100644 desci-contracts/typechain-types/factories/TestERC721__factory.js delete mode 100644 desci-contracts/typechain-types/factories/VersionedERC721V2__factory.js delete mode 100644 desci-contracts/typechain-types/factories/VersionedERC721__factory.js delete mode 100644 desci-contracts/typechain-types/index.js diff --git a/desci-contracts/artifacts/contracts/DpidAliasRegistry.sol/DpidAliasRegistry.json b/desci-contracts/artifacts/contracts/DpidAliasRegistry.sol/DpidAliasRegistry.json new file mode 100644 index 000000000..24c643073 --- /dev/null +++ b/desci-contracts/artifacts/contracts/DpidAliasRegistry.sol/DpidAliasRegistry.json @@ -0,0 +1,380 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "DpidAliasRegistry", + "sourceName": "contracts/DpidAliasRegistry.sol", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "dpid", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "string", + "name": "streamID", + "type": "string" + } + ], + "name": "DpidMinted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "dpid", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "components": [ + { + "internalType": "string", + "name": "cid", + "type": "string" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "internalType": "struct DpidAliasRegistry.LegacyVersion[]", + "name": "versions", + "type": "tuple[]" + } + ], + "indexed": false, + "internalType": "struct DpidAliasRegistry.LegacyDpidEntry", + "name": "entry", + "type": "tuple" + } + ], + "name": "ImportedDpid", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "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": false, + "internalType": "uint256", + "name": "dpid", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "string", + "name": "streamId", + "type": "string" + } + ], + "name": "UpgradedDpid", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "firstDpid", + "type": "uint256" + } + ], + "name": "__DpidAliasRegistry_init", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "_firstDpid", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "dpid", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "components": [ + { + "internalType": "string", + "name": "cid", + "type": "string" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "internalType": "struct DpidAliasRegistry.LegacyVersion[]", + "name": "versions", + "type": "tuple[]" + } + ], + "internalType": "struct DpidAliasRegistry.LegacyDpidEntry", + "name": "entry", + "type": "tuple" + } + ], + "name": "importLegacyDpid", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "legacy", + "outputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "dpid", + "type": "uint256" + } + ], + "name": "legacyLookup", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "components": [ + { + "internalType": "string", + "name": "cid", + "type": "string" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "internalType": "struct DpidAliasRegistry.LegacyVersion[]", + "name": "versions", + "type": "tuple[]" + } + ], + "internalType": "struct DpidAliasRegistry.LegacyDpidEntry", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "dpid", + "type": "uint256" + } + ], + "name": "lookup", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "streamId", + "type": "string" + } + ], + "name": "mintDpid", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "nextDpid", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "registry", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "dpid", + "type": "uint256" + }, + { + "internalType": "string", + "name": "streamId", + "type": "string" + } + ], + "name": "upgradeDpid", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b50620000226200002860201b60201c565b620001d3565b600060019054906101000a900460ff16156200007b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000729062000127565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff161015620000ed5760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff604051620000e4919062000149565b60405180910390a15b565b6000620000fe60278362000166565b91506200010b8262000184565b604082019050919050565b620001218162000177565b82525050565b600060208201905081810360008301526200014281620000ef565b9050919050565b600060208201905062000160600083018462000116565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b6122cb80620001e36000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063810a9afa1161008c578063b724de3a11610066578063b724de3a14610212578063dc5d7a2e14610242578063ded8896b14610260578063f2fde38b1461027c576100cf565b8063810a9afa146101a65780638da5cb5b146101d6578063afc26911146101f4576100cf565b80630a874df6146100d4578063144ae85514610104578063362b3e63146101205780635893253c1461013c578063715018a61461016c578063788243d514610176575b600080fd5b6100ee60048036038101906100e99190610dff565b610298565b6040516100fb919061131c565b60405180910390f35b61011e60048036038101906101199190610e80565b61033d565b005b61013a60048036038101906101359190610dff565b6103a5565b005b61015660048036038101906101519190610dff565b6104eb565b604051610163919061131c565b60405180910390f35b61017461058b565b005b610190600480360381019061018b9190610dff565b61059f565b60405161019d91906112e6565b60405180910390f35b6101c060048036038101906101bb9190610dff565b6105dd565b6040516101cd91906113fe565b60405180910390f35b6101de61075b565b6040516101eb91906112e6565b60405180910390f35b6101fc610785565b6040516102099190611420565b60405180910390f35b61022c60048036038101906102279190610dba565b61078b565b6040516102399190611420565b60405180910390f35b61024a610813565b6040516102579190611420565b60405180910390f35b61027a60048036038101906102759190610e28565b610819565b005b61029660048036038101906102919190610d91565b610982565b005b60606067600083815260200190815260200160002080546102b890611c27565b80601f01602080910402602001604051908101604052809291908181526020018280546102e490611c27565b80156103315780601f1061030657610100808354040283529160200191610331565b820191906000526020600020905b81548152906001019060200180831161031457829003601f168201915b50505050509050919050565b610345610a06565b8060686000848152602001908152602001600020818161036591906121ee565b9050507fa9c55ebaa1fada408bd72c2f0ea7c27f5444b105bcff12c5381baac912156ada828260405161039992919061146d565b60405180910390a15050565b60008060019054906101000a900460ff161590508080156103d65750600160008054906101000a900460ff1660ff16105b8061040357506103e530610a84565b1580156104025750600160008054906101000a900460ff1660ff16145b5b610442576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104399061137e565b60405180910390fd5b60016000806101000a81548160ff021916908360ff160217905550801561047f576001600060016101000a81548160ff0219169083151502179055505b610487610aa7565b8160668190555080156104e75760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516104de9190611301565b60405180910390a15b5050565b6067602052806000526040600020600091509050805461050a90611c27565b80601f016020809104026020016040519081016040528092919081815260200182805461053690611c27565b80156105835780601f1061055857610100808354040283529160200191610583565b820191906000526020600020905b81548152906001019060200180831161056657829003601f168201915b505050505081565b610593610a06565b61059d6000610b00565b565b60686020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081565b6105e5610c2f565b606860008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805480602002602001604051908101604052809291908181526020016000905b8282101561074c57838290600052602060002090600202016040518060400160405290816000820180546106b190611c27565b80601f01602080910402602001604051908101604052809291908181526020018280546106dd90611c27565b801561072a5780601f106106ff5761010080835404028352916020019161072a565b820191906000526020600020905b81548152906001019060200180831161070d57829003601f168201915b505050505081526020016001820154815250508152602001906001019061067e565b50505050815250509050919050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60665481565b600080606654905083836067600084815260200190815260200160002091906107b5929190610c5f565b507f96a65efbb6991f67fc8a4c7550fcfd08f1968737d2f5adcded5cd937b3cc0f3d8185856040516107e99392919061143b565b60405180910390a16066600081548092919061080490611c75565b91905055508091505092915050565b60655481565b600060676000858152602001908152602001600020805461083990611c27565b90501461087b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108729061133e565b60405180910390fd5b3273ffffffffffffffffffffffffffffffffffffffff166068600085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461091f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610916906113de565b60405180910390fd5b8181606760008681526020019081526020016000209190610941929190610c5f565b507f442b41840a10393534508176faee6f70b1870707dc24573b67d49f28cbac7f1c8383836040516109759392919061143b565b60405180910390a1505050565b61098a610a06565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156109fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f19061135e565b60405180910390fd5b610a0381610b00565b50565b610a0e610bc6565b73ffffffffffffffffffffffffffffffffffffffff16610a2c61075b565b73ffffffffffffffffffffffffffffffffffffffff1614610a82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a799061139e565b60405180910390fd5b565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16610af6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aed906113be565b60405180910390fd5b610afe610bce565b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b600060019054906101000a900460ff16610c1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c14906113be565b60405180910390fd5b610c2d610c28610bc6565b610b00565b565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b828054610c6b90611c27565b90600052602060002090601f016020900481019282610c8d5760008555610cd4565b82601f10610ca657803560ff1916838001178555610cd4565b82800160010185558215610cd4579182015b82811115610cd3578235825591602001919060010190610cb8565b5b509050610ce19190610ce5565b5090565b5b80821115610cfe576000816000905550600101610ce6565b5090565b600081359050610d1181612262565b92915050565b60008083601f840112610d2957600080fd5b8235905067ffffffffffffffff811115610d4257600080fd5b602083019150836001820283011115610d5a57600080fd5b9250929050565b600060408284031215610d7357600080fd5b81905092915050565b600081359050610d8b81612279565b92915050565b600060208284031215610da357600080fd5b6000610db184828501610d02565b91505092915050565b60008060208385031215610dcd57600080fd5b600083013567ffffffffffffffff811115610de757600080fd5b610df385828601610d17565b92509250509250929050565b600060208284031215610e1157600080fd5b6000610e1f84828501610d7c565b91505092915050565b600080600060408486031215610e3d57600080fd5b6000610e4b86828701610d7c565b935050602084013567ffffffffffffffff811115610e6857600080fd5b610e7486828701610d17565b92509250509250925092565b60008060408385031215610e9357600080fd5b6000610ea185828601610d7c565b925050602083013567ffffffffffffffff811115610ebe57600080fd5b610eca85828601610d61565b9150509250929050565b6000610ee0838361123c565b905092915050565b6000610ef4838361128b565b905092915050565b610f05816118ad565b82525050565b610f14816118ad565b82525050565b6000610f26838561161b565b935083602084028501610f3884611586565b8060005b87811015610f7c578484038952610f538284611818565b610f5d8582610ed4565b9450610f6883611601565b925060208a01995050600181019050610f3c565b50829750879450505050509392505050565b6000610f99826115d5565b610fa3818561161b565b935083602082028501610fb585611590565b8060005b85811015610ff15784840389528151610fd28582610ee8565b9450610fdd8361160e565b925060208a01995050600181019050610fb9565b50829750879550505050505092915050565b61100c8161199c565b82525050565b600061101e838561162c565b935061102b838584611b59565b61103483611ecc565b840190509392505050565b600061104b838561163d565b9350611058838584611b59565b61106183611ecc565b840190509392505050565b6000611077826115f6565b611081818561162c565b9350611091818560208601611b68565b61109a81611ecc565b840191505092915050565b60006110b0826115f6565b6110ba818561163d565b93506110ca818560208601611b68565b6110d381611ecc565b840191505092915050565b60006110eb60158361163d565b91506110f682611f58565b602082019050919050565b600061110e60268361163d565b915061111982611f81565b604082019050919050565b6000611131602e8361163d565b915061113c82611fd0565b604082019050919050565b600061115460208361163d565b915061115f8261201f565b602082019050919050565b6000611177602b8361163d565b915061118282612048565b604082019050919050565b600061119a60198361163d565b91506111a582612097565b602082019050919050565b6000604083016111c36000840184611753565b6111d06000860182610efc565b506111de602084018461176a565b85830360208701526111f1838284610f1a565b925050508091505092915050565b60006040830160008301516112176000860182610efc565b506020830151848203602086015261122f8282610f8e565b9150508091505092915050565b60006040830161124f60008401846117c1565b8583036000870152611262838284611012565b92505050611273602084018461183c565b61128060208601826112c8565b508091505092915050565b600060408301600083015184820360008601526112a8828261106c565b91505060208301516112bd60208601826112c8565b508091505092915050565b6112d1816118df565b82525050565b6112e0816118df565b82525050565b60006020820190506112fb6000830184610f0b565b92915050565b60006020820190506113166000830184611003565b92915050565b6000602082019050818103600083015261133681846110a5565b905092915050565b60006020820190508181036000830152611357816110de565b9050919050565b6000602082019050818103600083015261137781611101565b9050919050565b6000602082019050818103600083015261139781611124565b9050919050565b600060208201905081810360008301526113b781611147565b9050919050565b600060208201905081810360008301526113d78161116a565b9050919050565b600060208201905081810360008301526113f78161118d565b9050919050565b6000602082019050818103600083015261141881846111ff565b905092915050565b600060208201905061143560008301846112d7565b92915050565b600060408201905061145060008301866112d7565b818103602083015261146381848661103f565b9050949350505050565b600060408201905061148260008301856112d7565b818103602083015261149481846111b0565b90509392505050565b600080833560016020038436030381126114b657600080fd5b80840192508235915067ffffffffffffffff8211156114d457600080fd5b6020830192506020820236038313156114ec57600080fd5b509250929050565b6000808335600160200384360303811261150d57600080fd5b80840192508235915067ffffffffffffffff82111561152b57600080fd5b60208301925060018202360383131561154357600080fd5b509250929050565b60008235600160400383360303811261156357600080fd5b80830191505092915050565b600081905061157f826002611853565b9050919050565b6000819050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b600082905092915050565b600081519050919050565b600081549050919050565b600082905092915050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b60208410600081146116a757601f841160018114611677576116708685611c59565b83556116a1565b611680836115b5565b6116956020601f880104820160018301611904565b61169f87856120c0565b505b506116f0565b6116b0826115b5565b6020601f8701048101601f871680156116d1576116d08160018403611d98565b5b6116e36020601f890104840183611904565b6001886002021785555050505b5050505050565b6020831060008114611742576020851060008114611720576117198685611c59565b835561173c565b8360ff1916935083611731846115b5565b556001866002020183555b5061174c565b6001856002020182555b5050505050565b60006117626020840184610d02565b905092915050565b6000808335600160200384360303811261178357600080fd5b83810192508235915060208301925067ffffffffffffffff8211156117a757600080fd5b6020820236038413156117b957600080fd5b509250929050565b600080833560016020038436030381126117da57600080fd5b83810192508235915060208301925067ffffffffffffffff8211156117fe57600080fd5b60018202360384131561181057600080fd5b509250929050565b60008235600160400383360303811261183057600080fd5b82810191505092915050565b600061184b6020840184610d7c565b905092915050565b600061185e826118df565b9150611869836118df565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156118a2576118a1611d0b565b5b828202905092915050565b60006118b8826118bf565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b611901600082611e77565b50565b5b8181101561192357611918600082611f40565b600181019050611905565b5050565b5b818110156119465761193b600082611f22565b600281019050611928565b5050565b818110156119685761195d600082611f40565b60018101905061194a565b5050565b6119796000808301611f04565b611987600060018301611f40565b50565b6000611995826119ae565b9050919050565b60006119a7826118e9565b9050919050565b60006119b9826119c0565b9050919050565b60006119cb826118bf565b9050919050565b60006119dd826118df565b9050919050565b6119ee83836115ca565b6119f88183611e13565b611a0183611586565b611a0a836115a0565b6000805b84811015611a4357611a20848861154b565b611a2b81848661221f565b60208501945060028401935050600181019050611a0e565b5050505050505050565b611a5783836115eb565b67ffffffffffffffff811115611a7057611a6f611d69565b5b611a7a8254611c27565b600080601f8411601f84111715611a9757611a94856115b5565b90505b601f831115611aca576020601f85010481016020851015611ab6578190505b611ac86020601f860104830182611904565b505b601f841160018114611af75760008515611ae5578388013590505b611aef8682611c59565b875550611b4f565b601f1985168260005b82811015611b2557858a01358255600182019150602086019550602081019050611b00565b87831015611b4257858a0135611b3e601f8a1682611cbe565b8355505b6001600289020189555050505b5050505050505050565b82818337600083830152505050565b60005b83811015611b86578082015181840152602081019050611b6b565b83811115611b95576000848401525b50505050565b600081016000830180611bad81611de7565b9050611bb981846121ab565b5050506001810160208301611bce818561149d565b611bd98183866121ce565b505050505050565b6000810160008301611bf381856114f4565b611bfe8183866121de565b50505050600181016020830180611c1481611dfd565b9050611c2081846121fc565b5050505050565b60006002820490506001821680611c3f57607f821691505b60208210811415611c5357611c52611d3a565b5b50919050565b6000611c658383611cbe565b9150826002028217905092915050565b6000611c80826118df565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611cb357611cb2611d0b565b5b600182019050919050565b6000611ccf60001984600802611ef7565b1980831691505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611dc87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802611ef7565b815481168255505050565b6000819050919050565b6000819050919050565b60008135611df481612262565b80915050919050565b60008135611e0a81612279565b80915050919050565b68010000000000000000821115611e2d57611e2c611d69565b5b611e36816115e0565b82825580831015611e7257611e4a8161156f565b611e538461156f565b611e5c846115a0565b818101838201611e6c8183611927565b50505050505b505050565b68010000000000000000821115611e9157611e90611d69565b5b8054611e9c81611c27565b80841115611eb157611eb0848284866116f7565b5b80841015611ec657611ec58482848661164e565b5b50505050565b6000601f19601f8301169050919050565b60008160001b9050919050565b600082821b905092915050565b600082821c905092915050565b60008214611f1557611f14611cdc565b5b611f1e816118f6565b5050565b60008214611f3357611f32611cdc565b5b611f3c8161196c565b5050565b611f48612290565b611f5381848461223d565b505050565b7f6470696420616c72656164792075706772616465640000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f756e617574686f72697a65642064706964207570677261646500000000000000600082015250565b6120c9816115b5565b6120d4838254611c59565b8083556000825550505050565b600073ffffffffffffffffffffffffffffffffffffffff61210184611edd565b9350801983169250808416831791505092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61214384611edd565b9350801983169250808416831791505092915050565b6000600883026121897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611eea565b6121938683611eea565b95508019841693508086168417925050509392505050565b6121b48261198a565b6121c76121c082611dd3565b83546120e1565b8255505050565b6121d98383836119e4565b505050565b6121e9838383611a4d565b505050565b6121f88282611b9b565b5050565b612205826119d2565b61221861221182611ddd565b8354612117565b8255505050565b811561222e5761222d611cdc565b5b6122388382611be1565b505050565b612246836119d2565b61225a61225282611ddd565b848454612159565b825550505050565b61226b816118ad565b811461227657600080fd5b50565b612282816118df565b811461228d57600080fd5b50565b60009056fea26469706673582212209d15c5501273e10408c38b0c27c1d9008c55404af21e411dc9d13c190f83a2b364736f6c63430008040033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063810a9afa1161008c578063b724de3a11610066578063b724de3a14610212578063dc5d7a2e14610242578063ded8896b14610260578063f2fde38b1461027c576100cf565b8063810a9afa146101a65780638da5cb5b146101d6578063afc26911146101f4576100cf565b80630a874df6146100d4578063144ae85514610104578063362b3e63146101205780635893253c1461013c578063715018a61461016c578063788243d514610176575b600080fd5b6100ee60048036038101906100e99190610dff565b610298565b6040516100fb919061131c565b60405180910390f35b61011e60048036038101906101199190610e80565b61033d565b005b61013a60048036038101906101359190610dff565b6103a5565b005b61015660048036038101906101519190610dff565b6104eb565b604051610163919061131c565b60405180910390f35b61017461058b565b005b610190600480360381019061018b9190610dff565b61059f565b60405161019d91906112e6565b60405180910390f35b6101c060048036038101906101bb9190610dff565b6105dd565b6040516101cd91906113fe565b60405180910390f35b6101de61075b565b6040516101eb91906112e6565b60405180910390f35b6101fc610785565b6040516102099190611420565b60405180910390f35b61022c60048036038101906102279190610dba565b61078b565b6040516102399190611420565b60405180910390f35b61024a610813565b6040516102579190611420565b60405180910390f35b61027a60048036038101906102759190610e28565b610819565b005b61029660048036038101906102919190610d91565b610982565b005b60606067600083815260200190815260200160002080546102b890611c27565b80601f01602080910402602001604051908101604052809291908181526020018280546102e490611c27565b80156103315780601f1061030657610100808354040283529160200191610331565b820191906000526020600020905b81548152906001019060200180831161031457829003601f168201915b50505050509050919050565b610345610a06565b8060686000848152602001908152602001600020818161036591906121ee565b9050507fa9c55ebaa1fada408bd72c2f0ea7c27f5444b105bcff12c5381baac912156ada828260405161039992919061146d565b60405180910390a15050565b60008060019054906101000a900460ff161590508080156103d65750600160008054906101000a900460ff1660ff16105b8061040357506103e530610a84565b1580156104025750600160008054906101000a900460ff1660ff16145b5b610442576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104399061137e565b60405180910390fd5b60016000806101000a81548160ff021916908360ff160217905550801561047f576001600060016101000a81548160ff0219169083151502179055505b610487610aa7565b8160668190555080156104e75760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516104de9190611301565b60405180910390a15b5050565b6067602052806000526040600020600091509050805461050a90611c27565b80601f016020809104026020016040519081016040528092919081815260200182805461053690611c27565b80156105835780601f1061055857610100808354040283529160200191610583565b820191906000526020600020905b81548152906001019060200180831161056657829003601f168201915b505050505081565b610593610a06565b61059d6000610b00565b565b60686020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081565b6105e5610c2f565b606860008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805480602002602001604051908101604052809291908181526020016000905b8282101561074c57838290600052602060002090600202016040518060400160405290816000820180546106b190611c27565b80601f01602080910402602001604051908101604052809291908181526020018280546106dd90611c27565b801561072a5780601f106106ff5761010080835404028352916020019161072a565b820191906000526020600020905b81548152906001019060200180831161070d57829003601f168201915b505050505081526020016001820154815250508152602001906001019061067e565b50505050815250509050919050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60665481565b600080606654905083836067600084815260200190815260200160002091906107b5929190610c5f565b507f96a65efbb6991f67fc8a4c7550fcfd08f1968737d2f5adcded5cd937b3cc0f3d8185856040516107e99392919061143b565b60405180910390a16066600081548092919061080490611c75565b91905055508091505092915050565b60655481565b600060676000858152602001908152602001600020805461083990611c27565b90501461087b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108729061133e565b60405180910390fd5b3273ffffffffffffffffffffffffffffffffffffffff166068600085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461091f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610916906113de565b60405180910390fd5b8181606760008681526020019081526020016000209190610941929190610c5f565b507f442b41840a10393534508176faee6f70b1870707dc24573b67d49f28cbac7f1c8383836040516109759392919061143b565b60405180910390a1505050565b61098a610a06565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156109fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f19061135e565b60405180910390fd5b610a0381610b00565b50565b610a0e610bc6565b73ffffffffffffffffffffffffffffffffffffffff16610a2c61075b565b73ffffffffffffffffffffffffffffffffffffffff1614610a82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a799061139e565b60405180910390fd5b565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16610af6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aed906113be565b60405180910390fd5b610afe610bce565b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b600060019054906101000a900460ff16610c1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c14906113be565b60405180910390fd5b610c2d610c28610bc6565b610b00565b565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b828054610c6b90611c27565b90600052602060002090601f016020900481019282610c8d5760008555610cd4565b82601f10610ca657803560ff1916838001178555610cd4565b82800160010185558215610cd4579182015b82811115610cd3578235825591602001919060010190610cb8565b5b509050610ce19190610ce5565b5090565b5b80821115610cfe576000816000905550600101610ce6565b5090565b600081359050610d1181612262565b92915050565b60008083601f840112610d2957600080fd5b8235905067ffffffffffffffff811115610d4257600080fd5b602083019150836001820283011115610d5a57600080fd5b9250929050565b600060408284031215610d7357600080fd5b81905092915050565b600081359050610d8b81612279565b92915050565b600060208284031215610da357600080fd5b6000610db184828501610d02565b91505092915050565b60008060208385031215610dcd57600080fd5b600083013567ffffffffffffffff811115610de757600080fd5b610df385828601610d17565b92509250509250929050565b600060208284031215610e1157600080fd5b6000610e1f84828501610d7c565b91505092915050565b600080600060408486031215610e3d57600080fd5b6000610e4b86828701610d7c565b935050602084013567ffffffffffffffff811115610e6857600080fd5b610e7486828701610d17565b92509250509250925092565b60008060408385031215610e9357600080fd5b6000610ea185828601610d7c565b925050602083013567ffffffffffffffff811115610ebe57600080fd5b610eca85828601610d61565b9150509250929050565b6000610ee0838361123c565b905092915050565b6000610ef4838361128b565b905092915050565b610f05816118ad565b82525050565b610f14816118ad565b82525050565b6000610f26838561161b565b935083602084028501610f3884611586565b8060005b87811015610f7c578484038952610f538284611818565b610f5d8582610ed4565b9450610f6883611601565b925060208a01995050600181019050610f3c565b50829750879450505050509392505050565b6000610f99826115d5565b610fa3818561161b565b935083602082028501610fb585611590565b8060005b85811015610ff15784840389528151610fd28582610ee8565b9450610fdd8361160e565b925060208a01995050600181019050610fb9565b50829750879550505050505092915050565b61100c8161199c565b82525050565b600061101e838561162c565b935061102b838584611b59565b61103483611ecc565b840190509392505050565b600061104b838561163d565b9350611058838584611b59565b61106183611ecc565b840190509392505050565b6000611077826115f6565b611081818561162c565b9350611091818560208601611b68565b61109a81611ecc565b840191505092915050565b60006110b0826115f6565b6110ba818561163d565b93506110ca818560208601611b68565b6110d381611ecc565b840191505092915050565b60006110eb60158361163d565b91506110f682611f58565b602082019050919050565b600061110e60268361163d565b915061111982611f81565b604082019050919050565b6000611131602e8361163d565b915061113c82611fd0565b604082019050919050565b600061115460208361163d565b915061115f8261201f565b602082019050919050565b6000611177602b8361163d565b915061118282612048565b604082019050919050565b600061119a60198361163d565b91506111a582612097565b602082019050919050565b6000604083016111c36000840184611753565b6111d06000860182610efc565b506111de602084018461176a565b85830360208701526111f1838284610f1a565b925050508091505092915050565b60006040830160008301516112176000860182610efc565b506020830151848203602086015261122f8282610f8e565b9150508091505092915050565b60006040830161124f60008401846117c1565b8583036000870152611262838284611012565b92505050611273602084018461183c565b61128060208601826112c8565b508091505092915050565b600060408301600083015184820360008601526112a8828261106c565b91505060208301516112bd60208601826112c8565b508091505092915050565b6112d1816118df565b82525050565b6112e0816118df565b82525050565b60006020820190506112fb6000830184610f0b565b92915050565b60006020820190506113166000830184611003565b92915050565b6000602082019050818103600083015261133681846110a5565b905092915050565b60006020820190508181036000830152611357816110de565b9050919050565b6000602082019050818103600083015261137781611101565b9050919050565b6000602082019050818103600083015261139781611124565b9050919050565b600060208201905081810360008301526113b781611147565b9050919050565b600060208201905081810360008301526113d78161116a565b9050919050565b600060208201905081810360008301526113f78161118d565b9050919050565b6000602082019050818103600083015261141881846111ff565b905092915050565b600060208201905061143560008301846112d7565b92915050565b600060408201905061145060008301866112d7565b818103602083015261146381848661103f565b9050949350505050565b600060408201905061148260008301856112d7565b818103602083015261149481846111b0565b90509392505050565b600080833560016020038436030381126114b657600080fd5b80840192508235915067ffffffffffffffff8211156114d457600080fd5b6020830192506020820236038313156114ec57600080fd5b509250929050565b6000808335600160200384360303811261150d57600080fd5b80840192508235915067ffffffffffffffff82111561152b57600080fd5b60208301925060018202360383131561154357600080fd5b509250929050565b60008235600160400383360303811261156357600080fd5b80830191505092915050565b600081905061157f826002611853565b9050919050565b6000819050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b600082905092915050565b600081519050919050565b600081549050919050565b600082905092915050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b60208410600081146116a757601f841160018114611677576116708685611c59565b83556116a1565b611680836115b5565b6116956020601f880104820160018301611904565b61169f87856120c0565b505b506116f0565b6116b0826115b5565b6020601f8701048101601f871680156116d1576116d08160018403611d98565b5b6116e36020601f890104840183611904565b6001886002021785555050505b5050505050565b6020831060008114611742576020851060008114611720576117198685611c59565b835561173c565b8360ff1916935083611731846115b5565b556001866002020183555b5061174c565b6001856002020182555b5050505050565b60006117626020840184610d02565b905092915050565b6000808335600160200384360303811261178357600080fd5b83810192508235915060208301925067ffffffffffffffff8211156117a757600080fd5b6020820236038413156117b957600080fd5b509250929050565b600080833560016020038436030381126117da57600080fd5b83810192508235915060208301925067ffffffffffffffff8211156117fe57600080fd5b60018202360384131561181057600080fd5b509250929050565b60008235600160400383360303811261183057600080fd5b82810191505092915050565b600061184b6020840184610d7c565b905092915050565b600061185e826118df565b9150611869836118df565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156118a2576118a1611d0b565b5b828202905092915050565b60006118b8826118bf565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b611901600082611e77565b50565b5b8181101561192357611918600082611f40565b600181019050611905565b5050565b5b818110156119465761193b600082611f22565b600281019050611928565b5050565b818110156119685761195d600082611f40565b60018101905061194a565b5050565b6119796000808301611f04565b611987600060018301611f40565b50565b6000611995826119ae565b9050919050565b60006119a7826118e9565b9050919050565b60006119b9826119c0565b9050919050565b60006119cb826118bf565b9050919050565b60006119dd826118df565b9050919050565b6119ee83836115ca565b6119f88183611e13565b611a0183611586565b611a0a836115a0565b6000805b84811015611a4357611a20848861154b565b611a2b81848661221f565b60208501945060028401935050600181019050611a0e565b5050505050505050565b611a5783836115eb565b67ffffffffffffffff811115611a7057611a6f611d69565b5b611a7a8254611c27565b600080601f8411601f84111715611a9757611a94856115b5565b90505b601f831115611aca576020601f85010481016020851015611ab6578190505b611ac86020601f860104830182611904565b505b601f841160018114611af75760008515611ae5578388013590505b611aef8682611c59565b875550611b4f565b601f1985168260005b82811015611b2557858a01358255600182019150602086019550602081019050611b00565b87831015611b4257858a0135611b3e601f8a1682611cbe565b8355505b6001600289020189555050505b5050505050505050565b82818337600083830152505050565b60005b83811015611b86578082015181840152602081019050611b6b565b83811115611b95576000848401525b50505050565b600081016000830180611bad81611de7565b9050611bb981846121ab565b5050506001810160208301611bce818561149d565b611bd98183866121ce565b505050505050565b6000810160008301611bf381856114f4565b611bfe8183866121de565b50505050600181016020830180611c1481611dfd565b9050611c2081846121fc565b5050505050565b60006002820490506001821680611c3f57607f821691505b60208210811415611c5357611c52611d3a565b5b50919050565b6000611c658383611cbe565b9150826002028217905092915050565b6000611c80826118df565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611cb357611cb2611d0b565b5b600182019050919050565b6000611ccf60001984600802611ef7565b1980831691505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611dc87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802611ef7565b815481168255505050565b6000819050919050565b6000819050919050565b60008135611df481612262565b80915050919050565b60008135611e0a81612279565b80915050919050565b68010000000000000000821115611e2d57611e2c611d69565b5b611e36816115e0565b82825580831015611e7257611e4a8161156f565b611e538461156f565b611e5c846115a0565b818101838201611e6c8183611927565b50505050505b505050565b68010000000000000000821115611e9157611e90611d69565b5b8054611e9c81611c27565b80841115611eb157611eb0848284866116f7565b5b80841015611ec657611ec58482848661164e565b5b50505050565b6000601f19601f8301169050919050565b60008160001b9050919050565b600082821b905092915050565b600082821c905092915050565b60008214611f1557611f14611cdc565b5b611f1e816118f6565b5050565b60008214611f3357611f32611cdc565b5b611f3c8161196c565b5050565b611f48612290565b611f5381848461223d565b505050565b7f6470696420616c72656164792075706772616465640000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f756e617574686f72697a65642064706964207570677261646500000000000000600082015250565b6120c9816115b5565b6120d4838254611c59565b8083556000825550505050565b600073ffffffffffffffffffffffffffffffffffffffff61210184611edd565b9350801983169250808416831791505092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61214384611edd565b9350801983169250808416831791505092915050565b6000600883026121897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611eea565b6121938683611eea565b95508019841693508086168417925050509392505050565b6121b48261198a565b6121c76121c082611dd3565b83546120e1565b8255505050565b6121d98383836119e4565b505050565b6121e9838383611a4d565b505050565b6121f88282611b9b565b5050565b612205826119d2565b61221861221182611ddd565b8354612117565b8255505050565b811561222e5761222d611cdc565b5b6122388382611be1565b505050565b612246836119d2565b61225a61225282611ddd565b848454612159565b825550505050565b61226b816118ad565b811461227657600080fd5b50565b612282816118df565b811461228d57600080fd5b50565b60009056fea26469706673582212209d15c5501273e10408c38b0c27c1d9008c55404af21e411dc9d13c190f83a2b364736f6c63430008040033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/desci-contracts/contracts/DpidAliasRegistry.sol b/desci-contracts/contracts/DpidAliasRegistry.sol new file mode 100644 index 000000000..c68f6b50f --- /dev/null +++ b/desci-contracts/contracts/DpidAliasRegistry.sol @@ -0,0 +1,131 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; + +contract DpidAliasRegistry is OwnableUpgradeable { + uint256 public _firstDpid; + uint256 public nextDpid; + + // dpid => codex streamID + mapping(uint256 => string) public registry; + + + /// @custom:oz-upgrades-unsafe-allow constructor + constructor() { + _disableInitializers(); + } + + function __DpidAliasRegistry_init(uint256 firstDpid) public initializer { + OwnableUpgradeable.__Ownable_init(); + firstDpid = firstDpid; + nextDpid = firstDpid; + } + + /** + * Lookup the codex stream ID of a given dPID + * @param dpid the alias to lookup + */ + function lookup(uint256 dpid) public view returns(string memory) { + return registry[dpid]; + } + + event DpidMinted ( + uint256 dpid, + string streamID + ); + + /** + * Claim the next free dPID by pointing it to a codex stream ID + * + * @param streamId the codex stream ID to alias + */ + function mintDpid(string calldata streamId) public returns(uint256) { + uint256 thisDpid = nextDpid; + registry[thisDpid] = streamId; + + emit DpidMinted(thisDpid, streamId); + + nextDpid++; + return thisDpid; + } + + // ---------------------- // + // Backward compatibility // + // ---------------------- // + + struct LegacyVersion { + string cid; + uint256 timestamp; + } + + struct LegacyDpidEntry { + address owner; + LegacyVersion[] versions; + } + + /** + * Maps dPIDs before _firstDpid to it's complete history. + * This allows resolving every old state of a legacy dPID + * using only this contract. If the author wants to update + * this history, they need to call migrateDpid. + */ + mapping(uint256 => LegacyDpidEntry) public legacy; + + /** + * Lookup the token ID of an unmigrated, legacy dPID. + * Use this to + * @param dpid the alias to lookup + */ + function legacyLookup(uint256 dpid) public view returns(LegacyDpidEntry memory) { + return legacy[dpid]; + } + + event UpgradedDpid ( + uint256 dpid, + string streamId + ); + + /** + * The owner of a migrated ResearchObject token can call this function + * to claim the same dPID in this alias registry by pointing it to a codex + * streamID representing the same research object. + * + * This is an at-most-once operation, as the registry is immutable. + * The caller must make sure the stream represents the same history, + * and that it controls the stream. + * + * The legacy entry is deleted when migrated. + * + * @param dpid the dPID to migrate + * @param streamId the codex stream ID that shall supersede the legacy history + */ + function upgradeDpid(uint256 dpid, string calldata streamId) public { + // Assert that this dPID has not been set in the main registry + require(bytes(registry[dpid]).length == 0, "dpid already upgraded"); + // Assert that the tx was made by the owner of the imported entry + require(legacy[dpid].owner == tx.origin, "unauthorized dpid upgrade"); + + // Reclaim old dpid + registry[dpid] = streamId; + + emit UpgradedDpid(dpid, streamId); + + // Delete the legacy entry ? + // delete legacy[dpid]; + } + + // ---------------------------- // + // Population of legacy mapping // + // ---------------------------- // + + event ImportedDpid ( + uint256 dpid, + LegacyDpidEntry entry + ); + + function importLegacyDpid(uint256 dpid, LegacyDpidEntry calldata entry) public onlyOwner { + legacy[dpid] = entry; + emit ImportedDpid(dpid, entry); + } +} diff --git a/desci-contracts/hardhat.config.ts b/desci-contracts/hardhat.config.ts index 2659b66e2..70862b6b1 100644 --- a/desci-contracts/hardhat.config.ts +++ b/desci-contracts/hardhat.config.ts @@ -39,6 +39,9 @@ module.exports = { // alternative is to use ganache for more than running contract tests hardhat: { chainId: 1337, + accounts: { + mnemonic: process.env.MNEMONIC || DEFAULT_MNEMONIC, + }, }, optimism: { url: "http://127.0.0.1:8545", diff --git a/desci-contracts/package.json b/desci-contracts/package.json index d52bbebf3..e26bfb55e 100644 --- a/desci-contracts/package.json +++ b/desci-contracts/package.json @@ -4,7 +4,7 @@ "version": "0.2.3-rc3", "license": "MIT", "scripts": { - "test": "hardhat clean && hardhat test", + "test": "hardhat clean && hardhat test test/DpidAliasRegistry.ts", "build": "hardhat compile --network ganache", "makePackage": "rm -rf dist && tsc && cp -r .openzeppelin dist", "docker:build": "docker build -t desci-hardhat-node .", @@ -40,6 +40,7 @@ "@typechain/ethers-v5": "^9.0.0", "@typechain/hardhat": "^4.0.0", "@types/chai": "^4.2.21", + "@types/chai-as-promised": "^7.1.8", "@types/mocha": "^9.0.0", "@types/node": "^16.4.10", "as-base64": "^0.2.0", @@ -60,5 +61,8 @@ "ts-node": "^10.1.0", "typechain": "^7.0.0", "typescript": "^4.3.5" + }, + "dependencies": { + "chai-as-promised": "^7.1.2" } } diff --git a/desci-contracts/test/DpidAliasRegistry.ts b/desci-contracts/test/DpidAliasRegistry.ts new file mode 100644 index 000000000..006398a6a --- /dev/null +++ b/desci-contracts/test/DpidAliasRegistry.ts @@ -0,0 +1,227 @@ +import { expect, use } from "chai"; +import chaiAsPromised from "chai-as-promised"; +import { ethers as hhe, upgrades } from "hardhat"; +import { BigNumber, ContractReceipt, ContractTransaction } from "ethers"; +import { + DpidAliasRegistry__factory, + DpidAliasRegistry, +} from "../typechain-types"; +import { TransactionReceipt } from "@ethersproject/abstract-provider"; +import { SignerWithAddress } from "@nomiclabs/hardhat-ethers/signers"; + +use(chaiAsPromised); + +const FIRST_DPID = hhe.BigNumber.from(100); + +describe("dPID", () => { + let _accounts: SignerWithAddress[]; + let owner: SignerWithAddress; + let user1: SignerWithAddress; + let user2: SignerWithAddress; + let DpidAliasRegistryFactory: DpidAliasRegistry__factory; + let dpidAliasRegistry: DpidAliasRegistry; + + before( async () => { + _accounts = await hhe.getSigners() + owner = _accounts[0]; + user1 = _accounts[1]; + user2 = _accounts[2]; + + DpidAliasRegistryFactory = await hhe.getContractFactory( + "DpidAliasRegistry", + ) as DpidAliasRegistry__factory; + + dpidAliasRegistry = await upgrades.deployProxy( + DpidAliasRegistryFactory, + [ + FIRST_DPID // firstDpid + ], + { + initializer: "__DpidAliasRegistry_init" + } + ) as DpidAliasRegistry; + await dpidAliasRegistry.deployed(); + + // Default instance to non-owner user + dpidAliasRegistry = dpidAliasRegistry.connect(user1); + }); + + describe("deployment", () => { + let reciept: TransactionReceipt; + let proxyAddress: string; + let implAddress: string; + let proxyAdmin: string; + + before(async () => { + reciept = await dpidAliasRegistry.deployTransaction.wait(); + proxyAddress = reciept.contractAddress; + implAddress = await upgrades.erc1967.getImplementationAddress(proxyAddress); + proxyAdmin = await upgrades.erc1967.getAdminAddress(proxyAddress); + + console.log({ + implAddress, + proxyAdmin, + implOwner: await dpidAliasRegistry.owner(), + }) + }); + + it("costs a reasonable amount of gas", async () => { + expect( + BigNumber.from(reciept.cumulativeGasUsed).lte(32000000), + `Gas limit exceeded` + ).to.be.true; + }); + + it("is made through proxy", () => { + expect(proxyAddress).not.to.equal(implAddress); + }); + + it("deploys implementation with proxy admin as owner", async () => { + const registryOwner = await dpidAliasRegistry.owner(); + expect(registryOwner).to.equal(proxyAdmin); + }); + + it("respects initializer dpid offset", async () => { + const nextDpid = await dpidAliasRegistry.nextDpid(); + expect(nextDpid).to.equal(FIRST_DPID); + }) + }); + + describe("alias registry", () => { + const STREAM_A = "kjzl6kcym7w8y7i5ugaq9a3vlm7hhuaf4bpl5o5qykeh4qtsa12c6rb5ekw6aaa"; + + describe("entry", () => { + let tx: ContractTransaction; + let res: ContractReceipt; + + before(async () => { + tx = await dpidAliasRegistry.mintDpid(STREAM_A); + res = await tx.wait(); + }); + + it("can be added", async () => { + const entry = await dpidAliasRegistry.registry(100); + expect(entry).to.equal(STREAM_A); + }); + + it("emits event on mint", async () => { + const event = res.events![0]; + const [ dpid, streamId ] = event.args!; + + expect(event.event).to.equal("DpidMinted"); + expect(dpid).to.equal(BigNumber.from(100)); + expect(streamId).to.equal(STREAM_A); + }); + + it("increases counter on mint", async () => { + const nextDpid = await dpidAliasRegistry.nextDpid(); + expect(nextDpid).to.equal(101); + }); + + it("gets next free dpid", async () => { + const STREAM_B = "kjzl6kcym7w8y7i5ugaq9a3vlm7hhuaf4bpl5o5qykeh4qtsa12c6rb5ekw6bbb"; + const tx2 = await dpidAliasRegistry.mintDpid(STREAM_B); + await tx2.wait(); + const entry = await dpidAliasRegistry.registry(101); + expect(entry).to.equal(STREAM_B); + }); + }); + + describe("legacy entry", () => { + let migrationEntry: DpidAliasRegistry.LegacyDpidEntryStruct; + + before(async () => { + migrationEntry = { + owner: user1.address, // of dpid owner + versions: [ + { + cid: "bafybeihdwdcefgh4dqkjv67uzcmw7ojee6xedzdetojuzjevtenxquvyku", + timestamp: 1716369952, + }, + ], + }; + }); + + describe("import", () => { + let successReceipt: ContractReceipt; + + it("can be done by contract owner", async () => { + const tx = await dpidAliasRegistry + .connect(owner) + .importLegacyDpid(0, migrationEntry); + successReceipt = await tx.wait(); + }); + + it("can be resolved", async () => { + const legacyEntry = await dpidAliasRegistry.legacyLookup(0); + + expect(legacyEntry.owner).to.equal(migrationEntry.owner); + expect(legacyEntry.versions.length).to.equal(1); + expect(legacyEntry.versions[0].cid).to.equal("bafybeihdwdcefgh4dqkjv67uzcmw7ojee6xedzdetojuzjevtenxquvyku"); + expect(legacyEntry.versions[0].timestamp).to.equal(1716369952); + }); + + it("emits an event on success", () => { + const event = successReceipt.events![0]; + const [ dpid, { owner }] = event.args!; + const args = successReceipt.events![0].args!; + + expect(event.event).to.equal("ImportedDpid"); + expect(dpid).to.equal(0); + expect(owner).to.equal(user1.address); + }); + + it("can NOT be done by others", async () => { + const doImport = async () => await dpidAliasRegistry + .importLegacyDpid(1, migrationEntry); + + await expect(doImport()).to.be.rejectedWith("caller is not the owner"); + }); + }); + + describe("upgrade", () => { + let successReceipt: ContractReceipt; + + it("can NOT be done by others", async () => { + const doUpgrade = async () => await dpidAliasRegistry + .connect(user2) + .upgradeDpid(0, STREAM_A); + + await expect(doUpgrade()).to.be.rejectedWith("unauthorized dpid upgrade"); + }); + + it("can NOT be done by contract owner", async () => { + const doUpgrade = async () => await dpidAliasRegistry + .connect(owner) + .upgradeDpid(0, STREAM_A); + + await expect(doUpgrade()).to.be.rejectedWith("unauthorized dpid upgrade"); + }); + + it("can be done by dpid owner", async () => { + const tx = await dpidAliasRegistry.upgradeDpid(0, STREAM_A); + successReceipt = await tx.wait(); + + const upgradedEntry = await dpidAliasRegistry.lookup(0); + expect(upgradedEntry).to.equal(STREAM_A); + }); + + it("cannot be done twice", async () => { + const doSecondUpgrade = async () => + await dpidAliasRegistry.upgradeDpid(0, STREAM_A); + + await expect(doSecondUpgrade()).to.be.rejectedWith("dpid already upgraded"); + }); + + it("emits an event", async () => { + const event = successReceipt.events![0]; + const [ dpid, streamId ] = event.args!; + + expect(event.event).to.equal("UpgradedDpid"); + expect(dpid).to.equal(0); + expect(streamId).to.equal(STREAM_A); + }); + }); + }); + }); +}); diff --git a/desci-contracts/typechain-types/ContextUpgradeable.js b/desci-contracts/typechain-types/ContextUpgradeable.js deleted file mode 100644 index 0e345787d..000000000 --- a/desci-contracts/typechain-types/ContextUpgradeable.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -exports.__esModule = true; diff --git a/desci-contracts/typechain-types/DpidAliasRegistry.ts b/desci-contracts/typechain-types/DpidAliasRegistry.ts new file mode 100644 index 000000000..7fe4135e1 --- /dev/null +++ b/desci-contracts/typechain-types/DpidAliasRegistry.ts @@ -0,0 +1,497 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; +import { Listener, Provider } from "@ethersproject/providers"; +import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; + +export declare namespace DpidAliasRegistry { + export type LegacyVersionStruct = { cid: string; timestamp: BigNumberish }; + + export type LegacyVersionStructOutput = [string, BigNumber] & { + cid: string; + timestamp: BigNumber; + }; + + export type LegacyDpidEntryStruct = { + owner: string; + versions: DpidAliasRegistry.LegacyVersionStruct[]; + }; + + export type LegacyDpidEntryStructOutput = [ + string, + DpidAliasRegistry.LegacyVersionStructOutput[] + ] & { + owner: string; + versions: DpidAliasRegistry.LegacyVersionStructOutput[]; + }; +} + +export interface DpidAliasRegistryInterface extends utils.Interface { + contractName: "DpidAliasRegistry"; + functions: { + "__DpidAliasRegistry_init(uint256)": FunctionFragment; + "_firstDpid()": FunctionFragment; + "importLegacyDpid(uint256,(address,(string,uint256)[]))": FunctionFragment; + "legacy(uint256)": FunctionFragment; + "legacyLookup(uint256)": FunctionFragment; + "lookup(uint256)": FunctionFragment; + "mintDpid(string)": FunctionFragment; + "nextDpid()": FunctionFragment; + "owner()": FunctionFragment; + "registry(uint256)": FunctionFragment; + "renounceOwnership()": FunctionFragment; + "transferOwnership(address)": FunctionFragment; + "upgradeDpid(uint256,string)": FunctionFragment; + }; + + encodeFunctionData( + functionFragment: "__DpidAliasRegistry_init", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "_firstDpid", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "importLegacyDpid", + values: [BigNumberish, DpidAliasRegistry.LegacyDpidEntryStruct] + ): string; + encodeFunctionData( + functionFragment: "legacy", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "legacyLookup", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "lookup", + values: [BigNumberish] + ): string; + encodeFunctionData(functionFragment: "mintDpid", values: [string]): string; + encodeFunctionData(functionFragment: "nextDpid", values?: undefined): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "registry", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "upgradeDpid", + values: [BigNumberish, string] + ): string; + + decodeFunctionResult( + functionFragment: "__DpidAliasRegistry_init", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "_firstDpid", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "importLegacyDpid", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "legacy", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "legacyLookup", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "lookup", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "mintDpid", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "nextDpid", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "registry", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "upgradeDpid", + data: BytesLike + ): Result; + + events: { + "DpidMinted(uint256,string)": EventFragment; + "ImportedDpid(uint256,tuple)": EventFragment; + "Initialized(uint8)": EventFragment; + "OwnershipTransferred(address,address)": EventFragment; + "UpgradedDpid(uint256,string)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "DpidMinted"): EventFragment; + getEvent(nameOrSignatureOrTopic: "ImportedDpid"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; + getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; + getEvent(nameOrSignatureOrTopic: "UpgradedDpid"): EventFragment; +} + +export type DpidMintedEvent = TypedEvent< + [BigNumber, string], + { dpid: BigNumber; streamID: string } +>; + +export type DpidMintedEventFilter = TypedEventFilter; + +export type ImportedDpidEvent = TypedEvent< + [BigNumber, DpidAliasRegistry.LegacyDpidEntryStructOutput], + { dpid: BigNumber; entry: DpidAliasRegistry.LegacyDpidEntryStructOutput } +>; + +export type ImportedDpidEventFilter = TypedEventFilter; + +export type InitializedEvent = TypedEvent<[number], { version: number }>; + +export type InitializedEventFilter = TypedEventFilter; + +export type OwnershipTransferredEvent = TypedEvent< + [string, string], + { previousOwner: string; newOwner: string } +>; + +export type OwnershipTransferredEventFilter = + TypedEventFilter; + +export type UpgradedDpidEvent = TypedEvent< + [BigNumber, string], + { dpid: BigNumber; streamId: string } +>; + +export type UpgradedDpidEventFilter = TypedEventFilter; + +export interface DpidAliasRegistry extends BaseContract { + contractName: "DpidAliasRegistry"; + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: DpidAliasRegistryInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + __DpidAliasRegistry_init( + firstDpid: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + _firstDpid(overrides?: CallOverrides): Promise<[BigNumber]>; + + importLegacyDpid( + dpid: BigNumberish, + entry: DpidAliasRegistry.LegacyDpidEntryStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + legacy( + arg0: BigNumberish, + overrides?: CallOverrides + ): Promise<[string] & { owner: string }>; + + legacyLookup( + dpid: BigNumberish, + overrides?: CallOverrides + ): Promise<[DpidAliasRegistry.LegacyDpidEntryStructOutput]>; + + lookup(dpid: BigNumberish, overrides?: CallOverrides): Promise<[string]>; + + mintDpid( + streamId: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + nextDpid(overrides?: CallOverrides): Promise<[BigNumber]>; + + owner(overrides?: CallOverrides): Promise<[string]>; + + registry(arg0: BigNumberish, overrides?: CallOverrides): Promise<[string]>; + + renounceOwnership( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + upgradeDpid( + dpid: BigNumberish, + streamId: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + __DpidAliasRegistry_init( + firstDpid: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + _firstDpid(overrides?: CallOverrides): Promise; + + importLegacyDpid( + dpid: BigNumberish, + entry: DpidAliasRegistry.LegacyDpidEntryStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + legacy(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + legacyLookup( + dpid: BigNumberish, + overrides?: CallOverrides + ): Promise; + + lookup(dpid: BigNumberish, overrides?: CallOverrides): Promise; + + mintDpid( + streamId: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + nextDpid(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + registry(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + upgradeDpid( + dpid: BigNumberish, + streamId: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + callStatic: { + __DpidAliasRegistry_init( + firstDpid: BigNumberish, + overrides?: CallOverrides + ): Promise; + + _firstDpid(overrides?: CallOverrides): Promise; + + importLegacyDpid( + dpid: BigNumberish, + entry: DpidAliasRegistry.LegacyDpidEntryStruct, + overrides?: CallOverrides + ): Promise; + + legacy(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + legacyLookup( + dpid: BigNumberish, + overrides?: CallOverrides + ): Promise; + + lookup(dpid: BigNumberish, overrides?: CallOverrides): Promise; + + mintDpid(streamId: string, overrides?: CallOverrides): Promise; + + nextDpid(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + registry(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: string, + overrides?: CallOverrides + ): Promise; + + upgradeDpid( + dpid: BigNumberish, + streamId: string, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "DpidMinted(uint256,string)"( + dpid?: null, + streamID?: null + ): DpidMintedEventFilter; + DpidMinted(dpid?: null, streamID?: null): DpidMintedEventFilter; + + "ImportedDpid(uint256,tuple)"( + dpid?: null, + entry?: null + ): ImportedDpidEventFilter; + ImportedDpid(dpid?: null, entry?: null): ImportedDpidEventFilter; + + "Initialized(uint8)"(version?: null): InitializedEventFilter; + Initialized(version?: null): InitializedEventFilter; + + "OwnershipTransferred(address,address)"( + previousOwner?: string | null, + newOwner?: string | null + ): OwnershipTransferredEventFilter; + OwnershipTransferred( + previousOwner?: string | null, + newOwner?: string | null + ): OwnershipTransferredEventFilter; + + "UpgradedDpid(uint256,string)"( + dpid?: null, + streamId?: null + ): UpgradedDpidEventFilter; + UpgradedDpid(dpid?: null, streamId?: null): UpgradedDpidEventFilter; + }; + + estimateGas: { + __DpidAliasRegistry_init( + firstDpid: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + _firstDpid(overrides?: CallOverrides): Promise; + + importLegacyDpid( + dpid: BigNumberish, + entry: DpidAliasRegistry.LegacyDpidEntryStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + legacy(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + legacyLookup( + dpid: BigNumberish, + overrides?: CallOverrides + ): Promise; + + lookup(dpid: BigNumberish, overrides?: CallOverrides): Promise; + + mintDpid( + streamId: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + nextDpid(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + registry(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + upgradeDpid( + dpid: BigNumberish, + streamId: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + populateTransaction: { + __DpidAliasRegistry_init( + firstDpid: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + _firstDpid(overrides?: CallOverrides): Promise; + + importLegacyDpid( + dpid: BigNumberish, + entry: DpidAliasRegistry.LegacyDpidEntryStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + legacy( + arg0: BigNumberish, + overrides?: CallOverrides + ): Promise; + + legacyLookup( + dpid: BigNumberish, + overrides?: CallOverrides + ): Promise; + + lookup( + dpid: BigNumberish, + overrides?: CallOverrides + ): Promise; + + mintDpid( + streamId: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + nextDpid(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + registry( + arg0: BigNumberish, + overrides?: CallOverrides + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + upgradeDpid( + dpid: BigNumberish, + streamId: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; +} diff --git a/desci-contracts/typechain-types/DpidRegistry.js b/desci-contracts/typechain-types/DpidRegistry.js deleted file mode 100644 index 0e345787d..000000000 --- a/desci-contracts/typechain-types/DpidRegistry.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -exports.__esModule = true; diff --git a/desci-contracts/typechain-types/ERC165.js b/desci-contracts/typechain-types/ERC165.js deleted file mode 100644 index 0e345787d..000000000 --- a/desci-contracts/typechain-types/ERC165.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -exports.__esModule = true; diff --git a/desci-contracts/typechain-types/ERC165Upgradeable.js b/desci-contracts/typechain-types/ERC165Upgradeable.js deleted file mode 100644 index 0e345787d..000000000 --- a/desci-contracts/typechain-types/ERC165Upgradeable.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -exports.__esModule = true; diff --git a/desci-contracts/typechain-types/ERC721.js b/desci-contracts/typechain-types/ERC721.js deleted file mode 100644 index 0e345787d..000000000 --- a/desci-contracts/typechain-types/ERC721.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -exports.__esModule = true; diff --git a/desci-contracts/typechain-types/ERC721Upgradeable.js b/desci-contracts/typechain-types/ERC721Upgradeable.js deleted file mode 100644 index 0e345787d..000000000 --- a/desci-contracts/typechain-types/ERC721Upgradeable.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -exports.__esModule = true; diff --git a/desci-contracts/typechain-types/IDpidRegistry.js b/desci-contracts/typechain-types/IDpidRegistry.js deleted file mode 100644 index 0e345787d..000000000 --- a/desci-contracts/typechain-types/IDpidRegistry.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -exports.__esModule = true; diff --git a/desci-contracts/typechain-types/IERC165.js b/desci-contracts/typechain-types/IERC165.js deleted file mode 100644 index 0e345787d..000000000 --- a/desci-contracts/typechain-types/IERC165.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -exports.__esModule = true; diff --git a/desci-contracts/typechain-types/IERC165Upgradeable.js b/desci-contracts/typechain-types/IERC165Upgradeable.js deleted file mode 100644 index 0e345787d..000000000 --- a/desci-contracts/typechain-types/IERC165Upgradeable.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -exports.__esModule = true; diff --git a/desci-contracts/typechain-types/IERC721.js b/desci-contracts/typechain-types/IERC721.js deleted file mode 100644 index 0e345787d..000000000 --- a/desci-contracts/typechain-types/IERC721.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -exports.__esModule = true; diff --git a/desci-contracts/typechain-types/IERC721Metadata.js b/desci-contracts/typechain-types/IERC721Metadata.js deleted file mode 100644 index 0e345787d..000000000 --- a/desci-contracts/typechain-types/IERC721Metadata.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -exports.__esModule = true; diff --git a/desci-contracts/typechain-types/IERC721MetadataUpgradeable.js b/desci-contracts/typechain-types/IERC721MetadataUpgradeable.js deleted file mode 100644 index 0e345787d..000000000 --- a/desci-contracts/typechain-types/IERC721MetadataUpgradeable.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -exports.__esModule = true; diff --git a/desci-contracts/typechain-types/IERC721Receiver.js b/desci-contracts/typechain-types/IERC721Receiver.js deleted file mode 100644 index 0e345787d..000000000 --- a/desci-contracts/typechain-types/IERC721Receiver.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -exports.__esModule = true; diff --git a/desci-contracts/typechain-types/IERC721ReceiverUpgradeable.js b/desci-contracts/typechain-types/IERC721ReceiverUpgradeable.js deleted file mode 100644 index 0e345787d..000000000 --- a/desci-contracts/typechain-types/IERC721ReceiverUpgradeable.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -exports.__esModule = true; diff --git a/desci-contracts/typechain-types/IERC721Upgradeable.js b/desci-contracts/typechain-types/IERC721Upgradeable.js deleted file mode 100644 index 0e345787d..000000000 --- a/desci-contracts/typechain-types/IERC721Upgradeable.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -exports.__esModule = true; diff --git a/desci-contracts/typechain-types/Initializable.js b/desci-contracts/typechain-types/Initializable.js deleted file mode 100644 index 0e345787d..000000000 --- a/desci-contracts/typechain-types/Initializable.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -exports.__esModule = true; diff --git a/desci-contracts/typechain-types/OwnableUpgradeable.js b/desci-contracts/typechain-types/OwnableUpgradeable.js deleted file mode 100644 index 0e345787d..000000000 --- a/desci-contracts/typechain-types/OwnableUpgradeable.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -exports.__esModule = true; diff --git a/desci-contracts/typechain-types/ResearchObject.js b/desci-contracts/typechain-types/ResearchObject.js deleted file mode 100644 index 0e345787d..000000000 --- a/desci-contracts/typechain-types/ResearchObject.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -exports.__esModule = true; diff --git a/desci-contracts/typechain-types/ResearchObjectMigrated.js b/desci-contracts/typechain-types/ResearchObjectMigrated.js deleted file mode 100644 index 0e345787d..000000000 --- a/desci-contracts/typechain-types/ResearchObjectMigrated.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -exports.__esModule = true; diff --git a/desci-contracts/typechain-types/ResearchObjectV2.js b/desci-contracts/typechain-types/ResearchObjectV2.js deleted file mode 100644 index 0e345787d..000000000 --- a/desci-contracts/typechain-types/ResearchObjectV2.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -exports.__esModule = true; diff --git a/desci-contracts/typechain-types/TestERC721.js b/desci-contracts/typechain-types/TestERC721.js deleted file mode 100644 index 0e345787d..000000000 --- a/desci-contracts/typechain-types/TestERC721.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -exports.__esModule = true; diff --git a/desci-contracts/typechain-types/VersionedERC721.js b/desci-contracts/typechain-types/VersionedERC721.js deleted file mode 100644 index 0e345787d..000000000 --- a/desci-contracts/typechain-types/VersionedERC721.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -exports.__esModule = true; diff --git a/desci-contracts/typechain-types/VersionedERC721V2.js b/desci-contracts/typechain-types/VersionedERC721V2.js deleted file mode 100644 index 0e345787d..000000000 --- a/desci-contracts/typechain-types/VersionedERC721V2.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -exports.__esModule = true; diff --git a/desci-contracts/typechain-types/common.js b/desci-contracts/typechain-types/common.js deleted file mode 100644 index 0e345787d..000000000 --- a/desci-contracts/typechain-types/common.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -exports.__esModule = true; diff --git a/desci-contracts/typechain-types/factories/ContextUpgradeable__factory.js b/desci-contracts/typechain-types/factories/ContextUpgradeable__factory.js deleted file mode 100644 index de6769d28..000000000 --- a/desci-contracts/typechain-types/factories/ContextUpgradeable__factory.js +++ /dev/null @@ -1,35 +0,0 @@ -"use strict"; -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -exports.__esModule = true; -exports.ContextUpgradeable__factory = void 0; -var ethers_1 = require("ethers"); -var _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint8", - name: "version", - type: "uint8" - }, - ], - name: "Initialized", - type: "event" - }, -]; -var ContextUpgradeable__factory = /** @class */ (function () { - function ContextUpgradeable__factory() { - } - ContextUpgradeable__factory.createInterface = function () { - return new ethers_1.utils.Interface(_abi); - }; - ContextUpgradeable__factory.connect = function (address, signerOrProvider) { - return new ethers_1.Contract(address, _abi, signerOrProvider); - }; - ContextUpgradeable__factory.abi = _abi; - return ContextUpgradeable__factory; -}()); -exports.ContextUpgradeable__factory = ContextUpgradeable__factory; diff --git a/desci-contracts/typechain-types/factories/DpidAliasRegistry__factory.ts b/desci-contracts/typechain-types/factories/DpidAliasRegistry__factory.ts new file mode 100644 index 000000000..122c5f107 --- /dev/null +++ b/desci-contracts/typechain-types/factories/DpidAliasRegistry__factory.ts @@ -0,0 +1,433 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { + DpidAliasRegistry, + DpidAliasRegistryInterface, +} from "../DpidAliasRegistry"; + +const _abi = [ + { + inputs: [], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "dpid", + type: "uint256", + }, + { + indexed: false, + internalType: "string", + name: "streamID", + type: "string", + }, + ], + name: "DpidMinted", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "dpid", + type: "uint256", + }, + { + components: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + components: [ + { + internalType: "string", + name: "cid", + type: "string", + }, + { + internalType: "uint256", + name: "timestamp", + type: "uint256", + }, + ], + internalType: "struct DpidAliasRegistry.LegacyVersion[]", + name: "versions", + type: "tuple[]", + }, + ], + indexed: false, + internalType: "struct DpidAliasRegistry.LegacyDpidEntry", + name: "entry", + type: "tuple", + }, + ], + name: "ImportedDpid", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint8", + name: "version", + type: "uint8", + }, + ], + name: "Initialized", + 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: false, + internalType: "uint256", + name: "dpid", + type: "uint256", + }, + { + indexed: false, + internalType: "string", + name: "streamId", + type: "string", + }, + ], + name: "UpgradedDpid", + type: "event", + }, + { + inputs: [ + { + internalType: "uint256", + name: "firstDpid", + type: "uint256", + }, + ], + name: "__DpidAliasRegistry_init", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "_firstDpid", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "dpid", + type: "uint256", + }, + { + components: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + components: [ + { + internalType: "string", + name: "cid", + type: "string", + }, + { + internalType: "uint256", + name: "timestamp", + type: "uint256", + }, + ], + internalType: "struct DpidAliasRegistry.LegacyVersion[]", + name: "versions", + type: "tuple[]", + }, + ], + internalType: "struct DpidAliasRegistry.LegacyDpidEntry", + name: "entry", + type: "tuple", + }, + ], + name: "importLegacyDpid", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "legacy", + outputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "dpid", + type: "uint256", + }, + ], + name: "legacyLookup", + outputs: [ + { + components: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + components: [ + { + internalType: "string", + name: "cid", + type: "string", + }, + { + internalType: "uint256", + name: "timestamp", + type: "uint256", + }, + ], + internalType: "struct DpidAliasRegistry.LegacyVersion[]", + name: "versions", + type: "tuple[]", + }, + ], + internalType: "struct DpidAliasRegistry.LegacyDpidEntry", + name: "", + type: "tuple", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "dpid", + type: "uint256", + }, + ], + name: "lookup", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "string", + name: "streamId", + type: "string", + }, + ], + name: "mintDpid", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "nextDpid", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "registry", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "dpid", + type: "uint256", + }, + { + internalType: "string", + name: "streamId", + type: "string", + }, + ], + name: "upgradeDpid", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +]; + +const _bytecode = + "0x60806040523480156200001157600080fd5b50620000226200002860201b60201c565b620001d3565b600060019054906101000a900460ff16156200007b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000729062000127565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff161015620000ed5760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff604051620000e4919062000149565b60405180910390a15b565b6000620000fe60278362000166565b91506200010b8262000184565b604082019050919050565b620001218162000177565b82525050565b600060208201905081810360008301526200014281620000ef565b9050919050565b600060208201905062000160600083018462000116565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b6122cb80620001e36000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063810a9afa1161008c578063b724de3a11610066578063b724de3a14610212578063dc5d7a2e14610242578063ded8896b14610260578063f2fde38b1461027c576100cf565b8063810a9afa146101a65780638da5cb5b146101d6578063afc26911146101f4576100cf565b80630a874df6146100d4578063144ae85514610104578063362b3e63146101205780635893253c1461013c578063715018a61461016c578063788243d514610176575b600080fd5b6100ee60048036038101906100e99190610dff565b610298565b6040516100fb919061131c565b60405180910390f35b61011e60048036038101906101199190610e80565b61033d565b005b61013a60048036038101906101359190610dff565b6103a5565b005b61015660048036038101906101519190610dff565b6104eb565b604051610163919061131c565b60405180910390f35b61017461058b565b005b610190600480360381019061018b9190610dff565b61059f565b60405161019d91906112e6565b60405180910390f35b6101c060048036038101906101bb9190610dff565b6105dd565b6040516101cd91906113fe565b60405180910390f35b6101de61075b565b6040516101eb91906112e6565b60405180910390f35b6101fc610785565b6040516102099190611420565b60405180910390f35b61022c60048036038101906102279190610dba565b61078b565b6040516102399190611420565b60405180910390f35b61024a610813565b6040516102579190611420565b60405180910390f35b61027a60048036038101906102759190610e28565b610819565b005b61029660048036038101906102919190610d91565b610982565b005b60606067600083815260200190815260200160002080546102b890611c27565b80601f01602080910402602001604051908101604052809291908181526020018280546102e490611c27565b80156103315780601f1061030657610100808354040283529160200191610331565b820191906000526020600020905b81548152906001019060200180831161031457829003601f168201915b50505050509050919050565b610345610a06565b8060686000848152602001908152602001600020818161036591906121ee565b9050507fa9c55ebaa1fada408bd72c2f0ea7c27f5444b105bcff12c5381baac912156ada828260405161039992919061146d565b60405180910390a15050565b60008060019054906101000a900460ff161590508080156103d65750600160008054906101000a900460ff1660ff16105b8061040357506103e530610a84565b1580156104025750600160008054906101000a900460ff1660ff16145b5b610442576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104399061137e565b60405180910390fd5b60016000806101000a81548160ff021916908360ff160217905550801561047f576001600060016101000a81548160ff0219169083151502179055505b610487610aa7565b8160668190555080156104e75760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516104de9190611301565b60405180910390a15b5050565b6067602052806000526040600020600091509050805461050a90611c27565b80601f016020809104026020016040519081016040528092919081815260200182805461053690611c27565b80156105835780601f1061055857610100808354040283529160200191610583565b820191906000526020600020905b81548152906001019060200180831161056657829003601f168201915b505050505081565b610593610a06565b61059d6000610b00565b565b60686020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081565b6105e5610c2f565b606860008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805480602002602001604051908101604052809291908181526020016000905b8282101561074c57838290600052602060002090600202016040518060400160405290816000820180546106b190611c27565b80601f01602080910402602001604051908101604052809291908181526020018280546106dd90611c27565b801561072a5780601f106106ff5761010080835404028352916020019161072a565b820191906000526020600020905b81548152906001019060200180831161070d57829003601f168201915b505050505081526020016001820154815250508152602001906001019061067e565b50505050815250509050919050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60665481565b600080606654905083836067600084815260200190815260200160002091906107b5929190610c5f565b507f96a65efbb6991f67fc8a4c7550fcfd08f1968737d2f5adcded5cd937b3cc0f3d8185856040516107e99392919061143b565b60405180910390a16066600081548092919061080490611c75565b91905055508091505092915050565b60655481565b600060676000858152602001908152602001600020805461083990611c27565b90501461087b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108729061133e565b60405180910390fd5b3273ffffffffffffffffffffffffffffffffffffffff166068600085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461091f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610916906113de565b60405180910390fd5b8181606760008681526020019081526020016000209190610941929190610c5f565b507f442b41840a10393534508176faee6f70b1870707dc24573b67d49f28cbac7f1c8383836040516109759392919061143b565b60405180910390a1505050565b61098a610a06565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156109fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f19061135e565b60405180910390fd5b610a0381610b00565b50565b610a0e610bc6565b73ffffffffffffffffffffffffffffffffffffffff16610a2c61075b565b73ffffffffffffffffffffffffffffffffffffffff1614610a82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a799061139e565b60405180910390fd5b565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16610af6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aed906113be565b60405180910390fd5b610afe610bce565b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b600060019054906101000a900460ff16610c1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c14906113be565b60405180910390fd5b610c2d610c28610bc6565b610b00565b565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b828054610c6b90611c27565b90600052602060002090601f016020900481019282610c8d5760008555610cd4565b82601f10610ca657803560ff1916838001178555610cd4565b82800160010185558215610cd4579182015b82811115610cd3578235825591602001919060010190610cb8565b5b509050610ce19190610ce5565b5090565b5b80821115610cfe576000816000905550600101610ce6565b5090565b600081359050610d1181612262565b92915050565b60008083601f840112610d2957600080fd5b8235905067ffffffffffffffff811115610d4257600080fd5b602083019150836001820283011115610d5a57600080fd5b9250929050565b600060408284031215610d7357600080fd5b81905092915050565b600081359050610d8b81612279565b92915050565b600060208284031215610da357600080fd5b6000610db184828501610d02565b91505092915050565b60008060208385031215610dcd57600080fd5b600083013567ffffffffffffffff811115610de757600080fd5b610df385828601610d17565b92509250509250929050565b600060208284031215610e1157600080fd5b6000610e1f84828501610d7c565b91505092915050565b600080600060408486031215610e3d57600080fd5b6000610e4b86828701610d7c565b935050602084013567ffffffffffffffff811115610e6857600080fd5b610e7486828701610d17565b92509250509250925092565b60008060408385031215610e9357600080fd5b6000610ea185828601610d7c565b925050602083013567ffffffffffffffff811115610ebe57600080fd5b610eca85828601610d61565b9150509250929050565b6000610ee0838361123c565b905092915050565b6000610ef4838361128b565b905092915050565b610f05816118ad565b82525050565b610f14816118ad565b82525050565b6000610f26838561161b565b935083602084028501610f3884611586565b8060005b87811015610f7c578484038952610f538284611818565b610f5d8582610ed4565b9450610f6883611601565b925060208a01995050600181019050610f3c565b50829750879450505050509392505050565b6000610f99826115d5565b610fa3818561161b565b935083602082028501610fb585611590565b8060005b85811015610ff15784840389528151610fd28582610ee8565b9450610fdd8361160e565b925060208a01995050600181019050610fb9565b50829750879550505050505092915050565b61100c8161199c565b82525050565b600061101e838561162c565b935061102b838584611b59565b61103483611ecc565b840190509392505050565b600061104b838561163d565b9350611058838584611b59565b61106183611ecc565b840190509392505050565b6000611077826115f6565b611081818561162c565b9350611091818560208601611b68565b61109a81611ecc565b840191505092915050565b60006110b0826115f6565b6110ba818561163d565b93506110ca818560208601611b68565b6110d381611ecc565b840191505092915050565b60006110eb60158361163d565b91506110f682611f58565b602082019050919050565b600061110e60268361163d565b915061111982611f81565b604082019050919050565b6000611131602e8361163d565b915061113c82611fd0565b604082019050919050565b600061115460208361163d565b915061115f8261201f565b602082019050919050565b6000611177602b8361163d565b915061118282612048565b604082019050919050565b600061119a60198361163d565b91506111a582612097565b602082019050919050565b6000604083016111c36000840184611753565b6111d06000860182610efc565b506111de602084018461176a565b85830360208701526111f1838284610f1a565b925050508091505092915050565b60006040830160008301516112176000860182610efc565b506020830151848203602086015261122f8282610f8e565b9150508091505092915050565b60006040830161124f60008401846117c1565b8583036000870152611262838284611012565b92505050611273602084018461183c565b61128060208601826112c8565b508091505092915050565b600060408301600083015184820360008601526112a8828261106c565b91505060208301516112bd60208601826112c8565b508091505092915050565b6112d1816118df565b82525050565b6112e0816118df565b82525050565b60006020820190506112fb6000830184610f0b565b92915050565b60006020820190506113166000830184611003565b92915050565b6000602082019050818103600083015261133681846110a5565b905092915050565b60006020820190508181036000830152611357816110de565b9050919050565b6000602082019050818103600083015261137781611101565b9050919050565b6000602082019050818103600083015261139781611124565b9050919050565b600060208201905081810360008301526113b781611147565b9050919050565b600060208201905081810360008301526113d78161116a565b9050919050565b600060208201905081810360008301526113f78161118d565b9050919050565b6000602082019050818103600083015261141881846111ff565b905092915050565b600060208201905061143560008301846112d7565b92915050565b600060408201905061145060008301866112d7565b818103602083015261146381848661103f565b9050949350505050565b600060408201905061148260008301856112d7565b818103602083015261149481846111b0565b90509392505050565b600080833560016020038436030381126114b657600080fd5b80840192508235915067ffffffffffffffff8211156114d457600080fd5b6020830192506020820236038313156114ec57600080fd5b509250929050565b6000808335600160200384360303811261150d57600080fd5b80840192508235915067ffffffffffffffff82111561152b57600080fd5b60208301925060018202360383131561154357600080fd5b509250929050565b60008235600160400383360303811261156357600080fd5b80830191505092915050565b600081905061157f826002611853565b9050919050565b6000819050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b600082905092915050565b600081519050919050565b600081549050919050565b600082905092915050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b60208410600081146116a757601f841160018114611677576116708685611c59565b83556116a1565b611680836115b5565b6116956020601f880104820160018301611904565b61169f87856120c0565b505b506116f0565b6116b0826115b5565b6020601f8701048101601f871680156116d1576116d08160018403611d98565b5b6116e36020601f890104840183611904565b6001886002021785555050505b5050505050565b6020831060008114611742576020851060008114611720576117198685611c59565b835561173c565b8360ff1916935083611731846115b5565b556001866002020183555b5061174c565b6001856002020182555b5050505050565b60006117626020840184610d02565b905092915050565b6000808335600160200384360303811261178357600080fd5b83810192508235915060208301925067ffffffffffffffff8211156117a757600080fd5b6020820236038413156117b957600080fd5b509250929050565b600080833560016020038436030381126117da57600080fd5b83810192508235915060208301925067ffffffffffffffff8211156117fe57600080fd5b60018202360384131561181057600080fd5b509250929050565b60008235600160400383360303811261183057600080fd5b82810191505092915050565b600061184b6020840184610d7c565b905092915050565b600061185e826118df565b9150611869836118df565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156118a2576118a1611d0b565b5b828202905092915050565b60006118b8826118bf565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b611901600082611e77565b50565b5b8181101561192357611918600082611f40565b600181019050611905565b5050565b5b818110156119465761193b600082611f22565b600281019050611928565b5050565b818110156119685761195d600082611f40565b60018101905061194a565b5050565b6119796000808301611f04565b611987600060018301611f40565b50565b6000611995826119ae565b9050919050565b60006119a7826118e9565b9050919050565b60006119b9826119c0565b9050919050565b60006119cb826118bf565b9050919050565b60006119dd826118df565b9050919050565b6119ee83836115ca565b6119f88183611e13565b611a0183611586565b611a0a836115a0565b6000805b84811015611a4357611a20848861154b565b611a2b81848661221f565b60208501945060028401935050600181019050611a0e565b5050505050505050565b611a5783836115eb565b67ffffffffffffffff811115611a7057611a6f611d69565b5b611a7a8254611c27565b600080601f8411601f84111715611a9757611a94856115b5565b90505b601f831115611aca576020601f85010481016020851015611ab6578190505b611ac86020601f860104830182611904565b505b601f841160018114611af75760008515611ae5578388013590505b611aef8682611c59565b875550611b4f565b601f1985168260005b82811015611b2557858a01358255600182019150602086019550602081019050611b00565b87831015611b4257858a0135611b3e601f8a1682611cbe565b8355505b6001600289020189555050505b5050505050505050565b82818337600083830152505050565b60005b83811015611b86578082015181840152602081019050611b6b565b83811115611b95576000848401525b50505050565b600081016000830180611bad81611de7565b9050611bb981846121ab565b5050506001810160208301611bce818561149d565b611bd98183866121ce565b505050505050565b6000810160008301611bf381856114f4565b611bfe8183866121de565b50505050600181016020830180611c1481611dfd565b9050611c2081846121fc565b5050505050565b60006002820490506001821680611c3f57607f821691505b60208210811415611c5357611c52611d3a565b5b50919050565b6000611c658383611cbe565b9150826002028217905092915050565b6000611c80826118df565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611cb357611cb2611d0b565b5b600182019050919050565b6000611ccf60001984600802611ef7565b1980831691505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611dc87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802611ef7565b815481168255505050565b6000819050919050565b6000819050919050565b60008135611df481612262565b80915050919050565b60008135611e0a81612279565b80915050919050565b68010000000000000000821115611e2d57611e2c611d69565b5b611e36816115e0565b82825580831015611e7257611e4a8161156f565b611e538461156f565b611e5c846115a0565b818101838201611e6c8183611927565b50505050505b505050565b68010000000000000000821115611e9157611e90611d69565b5b8054611e9c81611c27565b80841115611eb157611eb0848284866116f7565b5b80841015611ec657611ec58482848661164e565b5b50505050565b6000601f19601f8301169050919050565b60008160001b9050919050565b600082821b905092915050565b600082821c905092915050565b60008214611f1557611f14611cdc565b5b611f1e816118f6565b5050565b60008214611f3357611f32611cdc565b5b611f3c8161196c565b5050565b611f48612290565b611f5381848461223d565b505050565b7f6470696420616c72656164792075706772616465640000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f756e617574686f72697a65642064706964207570677261646500000000000000600082015250565b6120c9816115b5565b6120d4838254611c59565b8083556000825550505050565b600073ffffffffffffffffffffffffffffffffffffffff61210184611edd565b9350801983169250808416831791505092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61214384611edd565b9350801983169250808416831791505092915050565b6000600883026121897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611eea565b6121938683611eea565b95508019841693508086168417925050509392505050565b6121b48261198a565b6121c76121c082611dd3565b83546120e1565b8255505050565b6121d98383836119e4565b505050565b6121e9838383611a4d565b505050565b6121f88282611b9b565b5050565b612205826119d2565b61221861221182611ddd565b8354612117565b8255505050565b811561222e5761222d611cdc565b5b6122388382611be1565b505050565b612246836119d2565b61225a61225282611ddd565b848454612159565b825550505050565b61226b816118ad565b811461227657600080fd5b50565b612282816118df565b811461228d57600080fd5b50565b60009056fea26469706673582212209d15c5501273e10408c38b0c27c1d9008c55404af21e411dc9d13c190f83a2b364736f6c63430008040033"; + +type DpidAliasRegistryConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: DpidAliasRegistryConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class DpidAliasRegistry__factory extends ContractFactory { + constructor(...args: DpidAliasRegistryConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + this.contractName = "DpidAliasRegistry"; + } + + deploy( + overrides?: Overrides & { from?: string | Promise } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + getDeployTransaction( + overrides?: Overrides & { from?: string | Promise } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + attach(address: string): DpidAliasRegistry { + return super.attach(address) as DpidAliasRegistry; + } + connect(signer: Signer): DpidAliasRegistry__factory { + return super.connect(signer) as DpidAliasRegistry__factory; + } + static readonly contractName: "DpidAliasRegistry"; + public readonly contractName: "DpidAliasRegistry"; + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): DpidAliasRegistryInterface { + return new utils.Interface(_abi) as DpidAliasRegistryInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): DpidAliasRegistry { + return new Contract(address, _abi, signerOrProvider) as DpidAliasRegistry; + } +} diff --git a/desci-contracts/typechain-types/factories/DpidRegistry__factory.js b/desci-contracts/typechain-types/factories/DpidRegistry__factory.js deleted file mode 100644 index 0ad9e0770..000000000 --- a/desci-contracts/typechain-types/factories/DpidRegistry__factory.js +++ /dev/null @@ -1,483 +0,0 @@ -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -exports.__esModule = true; -exports.DpidRegistry__factory = void 0; -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -var ethers_1 = require("ethers"); -var _abi = [ - { - inputs: [], - stateMutability: "nonpayable", - type: "constructor" - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint8", - name: "version", - type: "uint8" - }, - ], - name: "Initialized", - 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: false, - internalType: "bytes32", - name: "prefix", - type: "bytes32" - }, - { - indexed: false, - internalType: "uint256", - name: "entryId", - type: "uint256" - }, - ], - name: "Register", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "bytes32", - name: "prefix", - type: "bytes32" - }, - { - indexed: false, - internalType: "address", - name: "registrant", - type: "address" - }, - { - indexed: false, - internalType: "address[]", - name: "tokenGate", - type: "address[]" - }, - ], - name: "RegisterOrganization", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "bytes32", - name: "prefix", - type: "bytes32" - }, - { - indexed: false, - internalType: "address", - name: "registrant", - type: "address" - }, - { - indexed: false, - internalType: "address[]", - name: "tokenGate", - type: "address[]" - }, - ], - name: "UpdateOrganization", - type: "event" - }, - { - inputs: [ - { - internalType: "bytes32", - name: "prefix", - type: "bytes32" - }, - { - internalType: "uint256", - name: "entryId", - type: "uint256" - }, - ], - name: "exists", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "bytes32", - name: "prefix", - type: "bytes32" - }, - { - internalType: "uint256", - name: "entryId", - type: "uint256" - }, - ], - name: "get", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [], - name: "getFee", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [], - name: "getOrgFee", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "bytes32", - name: "prefix", - type: "bytes32" - }, - ], - name: "getOrganization", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256" - }, - { - internalType: "address", - name: "", - type: "address" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [], - name: "initialize", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32" - }, - ], - name: "organizations", - outputs: [ - { - internalType: "bytes32", - name: "prefix", - type: "bytes32" - }, - { - internalType: "address", - name: "registrant", - type: "address" - }, - { - internalType: "uint256", - name: "count", - type: "uint256" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [], - name: "owner", - outputs: [ - { - internalType: "address", - name: "", - type: "address" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "bytes32", - name: "prefix", - type: "bytes32" - }, - { - internalType: "uint256", - name: "entry", - type: "uint256" - }, - ], - name: "put", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256" - }, - ], - stateMutability: "payable", - type: "function" - }, - { - inputs: [ - { - internalType: "bytes32", - name: "prefix", - type: "bytes32" - }, - ], - name: "registerOrg", - outputs: [], - stateMutability: "payable", - type: "function" - }, - { - inputs: [ - { - internalType: "bytes32", - name: "prefix", - type: "bytes32" - }, - { - internalType: "address[]", - name: "tokenGate", - type: "address[]" - }, - ], - name: "registerOrgWithGate", - outputs: [], - stateMutability: "payable", - type: "function" - }, - { - inputs: [], - name: "renounceOwnership", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "gweiFee", - type: "uint256" - }, - ], - name: "setFee", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "gweiFee", - type: "uint256" - }, - ], - name: "setOrgFee", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "string", - name: "source", - type: "string" - }, - ], - name: "stringToBytes32", - outputs: [ - { - internalType: "bytes32", - name: "result", - type: "bytes32" - }, - ], - stateMutability: "pure", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "newOwner", - type: "address" - }, - ], - name: "transferOwnership", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "bytes32", - name: "prefix", - type: "bytes32" - }, - { - internalType: "address[]", - name: "tokenGate", - type: "address[]" - }, - ], - name: "updateOrg", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "bytes32", - name: "prefix", - type: "bytes32" - }, - ], - name: "validateCharacters", - outputs: [ - { - internalType: "bool", - name: "valid", - type: "bool" - }, - ], - stateMutability: "pure", - type: "function" - }, - { - inputs: [], - name: "withdraw", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, -]; -var _bytecode = "0x60806040523480156200001157600080fd5b50620000226200002860201b60201c565b620001d3565b600060019054906101000a900460ff16156200007b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000729062000127565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff161015620000ed5760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff604051620000e4919062000149565b60405180910390a15b565b6000620000fe60278362000166565b91506200010b8262000184565b604082019050919050565b620001218162000177565b82525050565b600060208201905081810360008301526200014281620000ef565b9050919050565b600060208201905062000160600083018462000116565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b61230880620001e36000396000f3fe6080604052600436106101145760003560e01c80638129fc1c116100a0578063ced72f8711610064578063ced72f871461037f578063cef25dbc146103aa578063cfb51928146103c6578063da4a984214610403578063f2fde38b1461043357610114565b80638129fc1c146102aa57806381e104ca146102c15780638da5cb5b146102ec578063a40a990b14610317578063ba51b14e1461034057610114565b80634b22d5d0116100e75780634b22d5d0146101c75780634fb6020e146102045780635cb316351461022d57806369fe0e2d1461026a578063715018a61461029357610114565b80631785b6771461011957806318ae19c21461013557806322b3cd4e146101725780633ccfd60b146101b0575b600080fd5b610133600480360381019061012e9190611889565b61045c565b005b34801561014157600080fd5b5061015c60048036038101906101579190611906565b6104d8565b6040516101699190611e0a565b60405180910390f35b34801561017e57600080fd5b5061019960048036038101906101949190611889565b610568565b6040516101a7929190611e25565b60405180910390f35b3480156101bc57600080fd5b506101c561060e565b005b3480156101d357600080fd5b506101ee60048036038101906101e99190611889565b61066c565b6040516101fb9190611bfb565b60405180910390f35b34801561021057600080fd5b5061022b60048036038101906102269190611983565b610845565b005b34801561023957600080fd5b50610254600480360381019061024f9190611906565b610857565b6040516102619190611bfb565b60405180910390f35b34801561027657600080fd5b50610291600480360381019061028c9190611983565b6108d8565b005b34801561029f57600080fd5b506102a86108ea565b005b3480156102b657600080fd5b506102bf6108fe565b005b3480156102cd57600080fd5b506102d6610cfa565b6040516102e39190611e0a565b60405180910390f35b3480156102f857600080fd5b50610301610d04565b60405161030e9190611be0565b60405180910390f35b34801561032357600080fd5b5061033e600480360381019061033991906118b2565b610d2e565b005b34801561034c57600080fd5b5061036760048036038101906103629190611889565b610e52565b60405161037693929190611c6f565b60405180910390f35b34801561038b57600080fd5b50610394610e9c565b6040516103a19190611e0a565b60405180910390f35b6103c460048036038101906103bf91906118b2565b610ea6565b005b3480156103d257600080fd5b506103ed60048036038101906103e89190611942565b610f41565b6040516103fa9190611c16565b60405180910390f35b61041d60048036038101906104189190611906565b610f6b565b60405161042a9190611e0a565b60405180910390f35b34801561043f57600080fd5b5061045a60048036038101906104559190611860565b611227565b005b6104d581600067ffffffffffffffff8111156104a1577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156104cf5781602001602082028036833780820191505090505b50610ea6565b50565b600082606560008581526020019081526020016000206000015414610532576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161052990611d6a565b60405180910390fd5b60006065600085815260200190815260200160002090508060030160008481526020019081526020016000205491505092915050565b600080826065600085815260200190815260200160002060000154146105c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ba90611d6a565b60405180910390fd5b600060656000858152602001908152602001600020905080600401548160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169250925050915091565b6106166112ab565b6000610620610d04565b90508073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610668573d6000803e3d6000fd5b5050565b600080600090506000806040518060600160405280602781526020016122ac60279139905060005b602060ff1681101561082357600060f81b8682602081106106de577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b1a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561071257809250610823565b60005b825181101561080f57828181518110610757577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168783602081106107bd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b1a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156107fc5784806107f490611fcb565b95505061080f565b808061080790611fcb565b915050610715565b50808061081b90611fcb565b915050610694565b50818310156108385760009350505050610840565b600193505050505b919050565b61084d6112ab565b8060678190555050565b6000826065600085815260200190815260200160002060000154146108b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a890611d6a565b60405180910390fd5b60006065600085815260200190815260200160002090508060040154831091505092915050565b6108e06112ab565b8060668190555050565b6108f26112ab565b6108fc6000611329565b565b60008060019054906101000a900460ff1615905080801561092f5750600160008054906101000a900460ff1660ff16105b8061095c575061093e306113ef565b15801561095b5750600160008054906101000a900460ff1660ff16145b5b61099b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099290611d8a565b60405180910390fd5b60016000806101000a81548160ff021916908360ff16021790555080156109d8576001600060016101000a81548160ff0219169083151502179055505b6601c6bf526340006066819055506706f05b59d3b2000060678190555060008067ffffffffffffffff811115610a37577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015610a655781602001602082028036833780820191505090505b509050610a73600082611412565b610a9d7f647069640000000000000000000000000000000000000000000000000000000082611412565b610ac77f646369746500000000000000000000000000000000000000000000000000000082611412565b610af17f646576000000000000000000000000000000000000000000000000000000000082611412565b610b1b7f737461676500000000000000000000000000000000000000000000000000000082611412565b610b457f626574610000000000000000000000000000000000000000000000000000000082611412565b610b6f7f646573636900000000000000000000000000000000000000000000000000000082611412565b610b997f6e6f64650000000000000000000000000000000000000000000000000000000082611412565b610bc37f6e6f64657300000000000000000000000000000000000000000000000000000082611412565b610bed7f646f69000000000000000000000000000000000000000000000000000000000082611412565b610c177f610000000000000000000000000000000000000000000000000000000000000082611412565b610c417f640000000000000000000000000000000000000000000000000000000000000082611412565b610c6b7f780000000000000000000000000000000000000000000000000000000000000082611412565b610c957f7a0000000000000000000000000000000000000000000000000000000000000082611412565b610c9d6115a5565b508015610cf75760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610cee9190611ccf565b60405180910390a15b50565b6000606754905090565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b81610d376115fe565b73ffffffffffffffffffffffffffffffffffffffff166065600083815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd190611d4a565b60405180910390fd5b600060656000858152602001908152602001600020905082816002019080519060200190610e09929190611667565b507f2f78800ab5b47f6617eaf3124043ced0ee3ae49c0b4a77167ee4cd2fbc674f0484610e346115fe565b85604051610e4493929190611c31565b60405180910390a150505050565b60656020528060005260406000206000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060040154905083565b6000606654905090565b606754341015610eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee290611dea565b60405180910390fd5b610ef48261066c565b610f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2a90611d6a565b60405180910390fd5b610f3d8282611412565b5050565b600080829050600081511415610f5d576000801b915050610f66565b60208301519150505b919050565b6000606654341015610fb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa990611dea565b60405180910390fd5b8260656000858152602001908152602001600020600001541461100a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100190611d6a565b60405180910390fd5b60006065600085815260200190815260200160002090506000816002018054905011156111a6576000816002018054905090506000805b82811015611162576000846002018281548110611087577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff166370a082316110da6115fe565b6040518263ffffffff1660e01b81526004016110f69190611be0565b60206040518083038186803b15801561110e57600080fd5b505afa158015611122573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114691906119ac565b1115611156576001925050611162565b81600101915050611041565b50806111a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119a90611d2a565b60405180910390fd5b50505b60008160040154905083826003016000838152602001908152602001600020819055507fd5fa0e9a716b3ec4895a48223ad309e2d3fa5e27f04d8dc9b3c33cc738a50eb085826040516111fa929190611ca6565b60405180910390a181600401600081548092919061121790611fcb565b9190505550809250505092915050565b61122f6112ab565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561129f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129690611d0a565b60405180910390fd5b6112a881611329565b50565b6112b36115fe565b73ffffffffffffffffffffffffffffffffffffffff166112d1610d04565b73ffffffffffffffffffffffffffffffffffffffff1614611327576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131e90611daa565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000801b606560008481526020019081526020016000206000015414801561149c5750600073ffffffffffffffffffffffffffffffffffffffff166065600084815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6114db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d290611cea565b60405180910390fd5b60006065600084815260200190815260200160002090506114fa6115fe565b8160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508281600001819055508181600201908051906020019061155d929190611667565b507f1603286ac6b9f753cbc1a1d33146ab15a401314d80d8553aa8fb1473df47f3ec836115886115fe565b8460405161159893929190611c31565b60405180910390a1505050565b600060019054906101000a900460ff166115f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115eb90611dca565b60405180910390fd5b6115fc611606565b565b600033905090565b600060019054906101000a900460ff16611655576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164c90611dca565b60405180910390fd5b6116656116606115fe565b611329565b565b8280548282559060005260206000209081019282156116e0579160200282015b828111156116df5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190611687565b5b5090506116ed91906116f1565b5090565b5b8082111561170a5760008160009055506001016116f2565b5090565b600061172161171c84611e73565b611e4e565b9050808382526020820190508285602086028201111561174057600080fd5b60005b85811015611770578161175688826117b8565b845260208401935060208301925050600181019050611743565b5050509392505050565b600061178d61178884611e9f565b611e4e565b9050828152602081018484840111156117a557600080fd5b6117b0848285611f8b565b509392505050565b6000813590506117c781612266565b92915050565b600082601f8301126117de57600080fd5b81356117ee84826020860161170e565b91505092915050565b6000813590506118068161227d565b92915050565b600082601f83011261181d57600080fd5b813561182d84826020860161177a565b91505092915050565b60008135905061184581612294565b92915050565b60008151905061185a81612294565b92915050565b60006020828403121561187257600080fd5b6000611880848285016117b8565b91505092915050565b60006020828403121561189b57600080fd5b60006118a9848285016117f7565b91505092915050565b600080604083850312156118c557600080fd5b60006118d3858286016117f7565b925050602083013567ffffffffffffffff8111156118f057600080fd5b6118fc858286016117cd565b9150509250929050565b6000806040838503121561191957600080fd5b6000611927858286016117f7565b925050602061193885828601611836565b9150509250929050565b60006020828403121561195457600080fd5b600082013567ffffffffffffffff81111561196e57600080fd5b61197a8482850161180c565b91505092915050565b60006020828403121561199557600080fd5b60006119a384828501611836565b91505092915050565b6000602082840312156119be57600080fd5b60006119cc8482850161184b565b91505092915050565b60006119e183836119ed565b60208301905092915050565b6119f681611f1a565b82525050565b611a0581611f1a565b82525050565b6000611a1682611ee0565b611a208185611ef8565b9350611a2b83611ed0565b8060005b83811015611a5c578151611a4388826119d5565b9750611a4e83611eeb565b925050600181019050611a2f565b5085935050505092915050565b611a7281611f2c565b82525050565b611a8181611f38565b82525050565b611a9081611f79565b82525050565b6000611aa3600c83611f09565b9150611aae82612083565b602082019050919050565b6000611ac6602683611f09565b9150611ad1826120ac565b604082019050919050565b6000611ae9601883611f09565b9150611af4826120fb565b602082019050919050565b6000611b0c601283611f09565b9150611b1782612124565b602082019050919050565b6000611b2f600e83611f09565b9150611b3a8261214d565b602082019050919050565b6000611b52602e83611f09565b9150611b5d82612176565b604082019050919050565b6000611b75602083611f09565b9150611b80826121c5565b602082019050919050565b6000611b98602b83611f09565b9150611ba3826121ee565b604082019050919050565b6000611bbb600c83611f09565b9150611bc68261223d565b602082019050919050565b611bda81611f62565b82525050565b6000602082019050611bf560008301846119fc565b92915050565b6000602082019050611c106000830184611a69565b92915050565b6000602082019050611c2b6000830184611a78565b92915050565b6000606082019050611c466000830186611a78565b611c5360208301856119fc565b8181036040830152611c658184611a0b565b9050949350505050565b6000606082019050611c846000830186611a78565b611c9160208301856119fc565b611c9e6040830184611bd1565b949350505050565b6000604082019050611cbb6000830185611a78565b611cc86020830184611bd1565b9392505050565b6000602082019050611ce46000830184611a87565b92915050565b60006020820190508181036000830152611d0381611a96565b9050919050565b60006020820190508181036000830152611d2381611ab9565b9050919050565b60006020820190508181036000830152611d4381611adc565b9050919050565b60006020820190508181036000830152611d6381611aff565b9050919050565b60006020820190508181036000830152611d8381611b22565b9050919050565b60006020820190508181036000830152611da381611b45565b9050919050565b60006020820190508181036000830152611dc381611b68565b9050919050565b60006020820190508181036000830152611de381611b8b565b9050919050565b60006020820190508181036000830152611e0381611bae565b9050919050565b6000602082019050611e1f6000830184611bd1565b92915050565b6000604082019050611e3a6000830185611bd1565b611e4760208301846119fc565b9392505050565b6000611e58611e69565b9050611e648282611f9a565b919050565b6000604051905090565b600067ffffffffffffffff821115611e8e57611e8d612043565b5b602082029050602081019050919050565b600067ffffffffffffffff821115611eba57611eb9612043565b5b611ec382612072565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611f2582611f42565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000611f8482611f6c565b9050919050565b82818337600083830152505050565b611fa382612072565b810181811067ffffffffffffffff82111715611fc257611fc1612043565b5b80604052505050565b6000611fd682611f62565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561200957612008612014565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f5072656669782074616b656e0000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f556e617574686f72697a65643a20546f6b656e20676174650000000000000000600082015250565b7f4f6e6c79206f776e657220757064617465730000000000000000000000000000600082015250565b7f496e76616c696420707265666978000000000000000000000000000000000000600082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f4665652072657175697265640000000000000000000000000000000000000000600082015250565b61226f81611f1a565b811461227a57600080fd5b50565b61228681611f38565b811461229157600080fd5b50565b61229d81611f62565b81146122a857600080fd5b5056fe6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f2ea2646970667358221220b8cac9a8d8f3de013face3e7fec9a14f0a1e3f3d09fe342a5252c76f07a42da364736f6c63430008040033"; -var isSuperArgs = function (xs) { return xs.length > 1; }; -var DpidRegistry__factory = /** @class */ (function (_super) { - __extends(DpidRegistry__factory, _super); - function DpidRegistry__factory() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - var _this = this; - if (isSuperArgs(args)) { - _this = _super.apply(this, args) || this; - } - else { - _this = _super.call(this, _abi, _bytecode, args[0]) || this; - } - _this.contractName = "DpidRegistry"; - return _this; - } - DpidRegistry__factory.prototype.deploy = function (overrides) { - return _super.prototype.deploy.call(this, overrides || {}); - }; - DpidRegistry__factory.prototype.getDeployTransaction = function (overrides) { - return _super.prototype.getDeployTransaction.call(this, overrides || {}); - }; - DpidRegistry__factory.prototype.attach = function (address) { - return _super.prototype.attach.call(this, address); - }; - DpidRegistry__factory.prototype.connect = function (signer) { - return _super.prototype.connect.call(this, signer); - }; - DpidRegistry__factory.createInterface = function () { - return new ethers_1.utils.Interface(_abi); - }; - DpidRegistry__factory.connect = function (address, signerOrProvider) { - return new ethers_1.Contract(address, _abi, signerOrProvider); - }; - DpidRegistry__factory.bytecode = _bytecode; - DpidRegistry__factory.abi = _abi; - return DpidRegistry__factory; -}(ethers_1.ContractFactory)); -exports.DpidRegistry__factory = DpidRegistry__factory; diff --git a/desci-contracts/typechain-types/factories/ERC165Upgradeable__factory.js b/desci-contracts/typechain-types/factories/ERC165Upgradeable__factory.js deleted file mode 100644 index 114cb68ca..000000000 --- a/desci-contracts/typechain-types/factories/ERC165Upgradeable__factory.js +++ /dev/null @@ -1,54 +0,0 @@ -"use strict"; -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -exports.__esModule = true; -exports.ERC165Upgradeable__factory = void 0; -var ethers_1 = require("ethers"); -var _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint8", - name: "version", - type: "uint8" - }, - ], - name: "Initialized", - type: "event" - }, - { - inputs: [ - { - internalType: "bytes4", - name: "interfaceId", - type: "bytes4" - }, - ], - name: "supportsInterface", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - }, - ], - stateMutability: "view", - type: "function" - }, -]; -var ERC165Upgradeable__factory = /** @class */ (function () { - function ERC165Upgradeable__factory() { - } - ERC165Upgradeable__factory.createInterface = function () { - return new ethers_1.utils.Interface(_abi); - }; - ERC165Upgradeable__factory.connect = function (address, signerOrProvider) { - return new ethers_1.Contract(address, _abi, signerOrProvider); - }; - ERC165Upgradeable__factory.abi = _abi; - return ERC165Upgradeable__factory; -}()); -exports.ERC165Upgradeable__factory = ERC165Upgradeable__factory; diff --git a/desci-contracts/typechain-types/factories/ERC165__factory.js b/desci-contracts/typechain-types/factories/ERC165__factory.js deleted file mode 100644 index fcb345c01..000000000 --- a/desci-contracts/typechain-types/factories/ERC165__factory.js +++ /dev/null @@ -1,41 +0,0 @@ -"use strict"; -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -exports.__esModule = true; -exports.ERC165__factory = void 0; -var ethers_1 = require("ethers"); -var _abi = [ - { - inputs: [ - { - internalType: "bytes4", - name: "interfaceId", - type: "bytes4" - }, - ], - name: "supportsInterface", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - }, - ], - stateMutability: "view", - type: "function" - }, -]; -var ERC165__factory = /** @class */ (function () { - function ERC165__factory() { - } - ERC165__factory.createInterface = function () { - return new ethers_1.utils.Interface(_abi); - }; - ERC165__factory.connect = function (address, signerOrProvider) { - return new ethers_1.Contract(address, _abi, signerOrProvider); - }; - ERC165__factory.abi = _abi; - return ERC165__factory; -}()); -exports.ERC165__factory = ERC165__factory; diff --git a/desci-contracts/typechain-types/factories/ERC721Upgradeable__factory.js b/desci-contracts/typechain-types/factories/ERC721Upgradeable__factory.js deleted file mode 100644 index 41edaf331..000000000 --- a/desci-contracts/typechain-types/factories/ERC721Upgradeable__factory.js +++ /dev/null @@ -1,409 +0,0 @@ -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -exports.__esModule = true; -exports.ERC721Upgradeable__factory = void 0; -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -var ethers_1 = require("ethers"); -var _abi = [ - { - 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: "uint8", - name: "version", - type: "uint8" - }, - ], - name: "Initialized", - 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: [ - { - 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: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "getApproved", - outputs: [ - { - internalType: "address", - name: "", - type: "address" - }, - ], - 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: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "ownerOf", - outputs: [ - { - internalType: "address", - name: "", - type: "address" - }, - ], - stateMutability: "view", - 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: "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: "tokenId", - 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" - }, -]; -var _bytecode = "0x608060405234801561001057600080fd5b5061216f806100206000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb46514610224578063b88d4fde14610240578063c87b56dd1461025c578063e985e9c51461028c576100cf565b80636352211e146101a657806370a08231146101d657806395d89b4114610206576100cf565b806301ffc9a7146100d457806306fdde0314610104578063081812fc14610122578063095ea7b31461015257806323b872dd1461016e57806342842e0e1461018a575b600080fd5b6100ee60048036038101906100e99190611625565b6102bc565b6040516100fb9190611936565b60405180910390f35b61010c61039e565b6040516101199190611951565b60405180910390f35b61013c60048036038101906101379190611677565b610430565b60405161014991906118cf565b60405180910390f35b61016c600480360381019061016791906115e9565b610476565b005b610188600480360381019061018391906114e3565b61058e565b005b6101a4600480360381019061019f91906114e3565b6105ee565b005b6101c060048036038101906101bb9190611677565b61060e565b6040516101cd91906118cf565b60405180910390f35b6101f060048036038101906101eb919061147e565b6106c0565b6040516101fd9190611a93565b60405180910390f35b61020e610778565b60405161021b9190611951565b60405180910390f35b61023e600480360381019061023991906115ad565b61080a565b005b61025a60048036038101906102559190611532565b610820565b005b61027660048036038101906102719190611677565b610882565b6040516102839190611951565b60405180910390f35b6102a660048036038101906102a191906114a7565b6108ea565b6040516102b39190611936565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061038757507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061039757506103968261097e565b5b9050919050565b6060606580546103ad90611cb8565b80601f01602080910402602001604051908101604052809291908181526020018280546103d990611cb8565b80156104265780601f106103fb57610100808354040283529160200191610426565b820191906000526020600020905b81548152906001019060200180831161040957829003601f168201915b5050505050905090565b600061043b826109e8565b6069600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006104818261060e565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156104f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e990611a53565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610511610a33565b73ffffffffffffffffffffffffffffffffffffffff161480610540575061053f8161053a610a33565b6108ea565b5b61057f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161057690611a13565b60405180910390fd5b6105898383610a3b565b505050565b61059f610599610a33565b82610af4565b6105de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d590611a73565b60405180910390fd5b6105e9838383610b89565b505050565b61060983838360405180602001604052806000815250610820565b505050565b6000806067600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156106b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ae90611a33565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610731576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610728906119f3565b60405180910390fd5b606860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606066805461078790611cb8565b80601f01602080910402602001604051908101604052809291908181526020018280546107b390611cb8565b80156108005780601f106107d557610100808354040283529160200191610800565b820191906000526020600020905b8154815290600101906020018083116107e357829003601f168201915b5050505050905090565b61081c610815610a33565b8383610df0565b5050565b61083161082b610a33565b83610af4565b610870576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086790611a73565b60405180910390fd5b61087c84848484610f5d565b50505050565b606061088d826109e8565b6000610897610fb9565b905060008151116108b757604051806020016040528060008152506108e2565b806108c184610fd0565b6040516020016108d29291906118ab565b6040516020818303038152906040525b915050919050565b6000606a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6109f18161117d565b610a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2790611a33565b60405180910390fd5b50565b600033905090565b816069600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16610aae8361060e565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610b008361060e565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610b425750610b4181856108ea565b5b80610b8057508373ffffffffffffffffffffffffffffffffffffffff16610b6884610430565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16610ba98261060e565b73ffffffffffffffffffffffffffffffffffffffff1614610bff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf690611993565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c66906119b3565b60405180910390fd5b610c7a8383836111e9565b610c85600082610a3b565b6001606860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610cd59190611bce565b925050819055506001606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d2c9190611b47565b92505081905550816067600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4610deb8383836111ee565b505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e56906119d3565b60405180910390fd5b80606a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610f509190611936565b60405180910390a3505050565b610f68848484610b89565b610f74848484846111f3565b610fb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610faa90611973565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b60606000821415611018576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611178565b600082905060005b6000821461104a57808061103390611d1b565b915050600a826110439190611b9d565b9150611020565b60008167ffffffffffffffff81111561108c577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156110be5781602001600182028036833780820191505090505b5090505b60008514611171576001826110d79190611bce565b9150600a856110e69190611d64565b60306110f29190611b47565b60f81b81838151811061112e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561116a9190611b9d565b94506110c2565b8093505050505b919050565b60008073ffffffffffffffffffffffffffffffffffffffff166067600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b505050565b505050565b60006112148473ffffffffffffffffffffffffffffffffffffffff1661138a565b1561137d578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261123d610a33565b8786866040518563ffffffff1660e01b815260040161125f94939291906118ea565b602060405180830381600087803b15801561127957600080fd5b505af19250505080156112aa57506040513d601f19601f820116820180604052508101906112a7919061164e565b60015b61132d573d80600081146112da576040519150601f19603f3d011682016040523d82523d6000602084013e6112df565b606091505b50600081511415611325576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131c90611973565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611382565b600190505b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60006113c06113bb84611ad3565b611aae565b9050828152602081018484840111156113d857600080fd5b6113e3848285611c76565b509392505050565b6000813590506113fa816120dd565b92915050565b60008135905061140f816120f4565b92915050565b6000813590506114248161210b565b92915050565b6000815190506114398161210b565b92915050565b600082601f83011261145057600080fd5b81356114608482602086016113ad565b91505092915050565b60008135905061147881612122565b92915050565b60006020828403121561149057600080fd5b600061149e848285016113eb565b91505092915050565b600080604083850312156114ba57600080fd5b60006114c8858286016113eb565b92505060206114d9858286016113eb565b9150509250929050565b6000806000606084860312156114f857600080fd5b6000611506868287016113eb565b9350506020611517868287016113eb565b925050604061152886828701611469565b9150509250925092565b6000806000806080858703121561154857600080fd5b6000611556878288016113eb565b9450506020611567878288016113eb565b935050604061157887828801611469565b925050606085013567ffffffffffffffff81111561159557600080fd5b6115a18782880161143f565b91505092959194509250565b600080604083850312156115c057600080fd5b60006115ce858286016113eb565b92505060206115df85828601611400565b9150509250929050565b600080604083850312156115fc57600080fd5b600061160a858286016113eb565b925050602061161b85828601611469565b9150509250929050565b60006020828403121561163757600080fd5b600061164584828501611415565b91505092915050565b60006020828403121561166057600080fd5b600061166e8482850161142a565b91505092915050565b60006020828403121561168957600080fd5b600061169784828501611469565b91505092915050565b6116a981611c02565b82525050565b6116b881611c14565b82525050565b60006116c982611b04565b6116d38185611b1a565b93506116e3818560208601611c85565b6116ec81611e51565b840191505092915050565b600061170282611b0f565b61170c8185611b2b565b935061171c818560208601611c85565b61172581611e51565b840191505092915050565b600061173b82611b0f565b6117458185611b3c565b9350611755818560208601611c85565b80840191505092915050565b600061176e603283611b2b565b915061177982611e62565b604082019050919050565b6000611791602583611b2b565b915061179c82611eb1565b604082019050919050565b60006117b4602483611b2b565b91506117bf82611f00565b604082019050919050565b60006117d7601983611b2b565b91506117e282611f4f565b602082019050919050565b60006117fa602983611b2b565b915061180582611f78565b604082019050919050565b600061181d603e83611b2b565b915061182882611fc7565b604082019050919050565b6000611840601883611b2b565b915061184b82612016565b602082019050919050565b6000611863602183611b2b565b915061186e8261203f565b604082019050919050565b6000611886602e83611b2b565b91506118918261208e565b604082019050919050565b6118a581611c6c565b82525050565b60006118b78285611730565b91506118c38284611730565b91508190509392505050565b60006020820190506118e460008301846116a0565b92915050565b60006080820190506118ff60008301876116a0565b61190c60208301866116a0565b611919604083018561189c565b818103606083015261192b81846116be565b905095945050505050565b600060208201905061194b60008301846116af565b92915050565b6000602082019050818103600083015261196b81846116f7565b905092915050565b6000602082019050818103600083015261198c81611761565b9050919050565b600060208201905081810360008301526119ac81611784565b9050919050565b600060208201905081810360008301526119cc816117a7565b9050919050565b600060208201905081810360008301526119ec816117ca565b9050919050565b60006020820190508181036000830152611a0c816117ed565b9050919050565b60006020820190508181036000830152611a2c81611810565b9050919050565b60006020820190508181036000830152611a4c81611833565b9050919050565b60006020820190508181036000830152611a6c81611856565b9050919050565b60006020820190508181036000830152611a8c81611879565b9050919050565b6000602082019050611aa8600083018461189c565b92915050565b6000611ab8611ac9565b9050611ac48282611cea565b919050565b6000604051905090565b600067ffffffffffffffff821115611aee57611aed611e22565b5b611af782611e51565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000611b5282611c6c565b9150611b5d83611c6c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611b9257611b91611d95565b5b828201905092915050565b6000611ba882611c6c565b9150611bb383611c6c565b925082611bc357611bc2611dc4565b5b828204905092915050565b6000611bd982611c6c565b9150611be483611c6c565b925082821015611bf757611bf6611d95565b5b828203905092915050565b6000611c0d82611c4c565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015611ca3578082015181840152602081019050611c88565b83811115611cb2576000848401525b50505050565b60006002820490506001821680611cd057607f821691505b60208210811415611ce457611ce3611df3565b5b50919050565b611cf382611e51565b810181811067ffffffffffffffff82111715611d1257611d11611e22565b5b80604052505050565b6000611d2682611c6c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611d5957611d58611d95565b5b600182019050919050565b6000611d6f82611c6c565b9150611d7a83611c6c565b925082611d8a57611d89611dc4565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206e6f7220617070726f766564000000000000000000000000000000000000602082015250565b6120e681611c02565b81146120f157600080fd5b50565b6120fd81611c14565b811461210857600080fd5b50565b61211481611c20565b811461211f57600080fd5b50565b61212b81611c6c565b811461213657600080fd5b5056fea264697066735822122033c0e2c374b1f5e89ce566a3837920ba4aa13f7ad9687f77ce9ba6a56535776064736f6c63430008040033"; -var isSuperArgs = function (xs) { return xs.length > 1; }; -var ERC721Upgradeable__factory = /** @class */ (function (_super) { - __extends(ERC721Upgradeable__factory, _super); - function ERC721Upgradeable__factory() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - var _this = this; - if (isSuperArgs(args)) { - _this = _super.apply(this, args) || this; - } - else { - _this = _super.call(this, _abi, _bytecode, args[0]) || this; - } - _this.contractName = "ERC721Upgradeable"; - return _this; - } - ERC721Upgradeable__factory.prototype.deploy = function (overrides) { - return _super.prototype.deploy.call(this, overrides || {}); - }; - ERC721Upgradeable__factory.prototype.getDeployTransaction = function (overrides) { - return _super.prototype.getDeployTransaction.call(this, overrides || {}); - }; - ERC721Upgradeable__factory.prototype.attach = function (address) { - return _super.prototype.attach.call(this, address); - }; - ERC721Upgradeable__factory.prototype.connect = function (signer) { - return _super.prototype.connect.call(this, signer); - }; - ERC721Upgradeable__factory.createInterface = function () { - return new ethers_1.utils.Interface(_abi); - }; - ERC721Upgradeable__factory.connect = function (address, signerOrProvider) { - return new ethers_1.Contract(address, _abi, signerOrProvider); - }; - ERC721Upgradeable__factory.bytecode = _bytecode; - ERC721Upgradeable__factory.abi = _abi; - return ERC721Upgradeable__factory; -}(ethers_1.ContractFactory)); -exports.ERC721Upgradeable__factory = ERC721Upgradeable__factory; diff --git a/desci-contracts/typechain-types/factories/ERC721__factory.js b/desci-contracts/typechain-types/factories/ERC721__factory.js deleted file mode 100644 index 0f23c0c07..000000000 --- a/desci-contracts/typechain-types/factories/ERC721__factory.js +++ /dev/null @@ -1,412 +0,0 @@ -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -exports.__esModule = true; -exports.ERC721__factory = void 0; -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -var ethers_1 = require("ethers"); -var _abi = [ - { - inputs: [ - { - internalType: "string", - name: "name_", - type: "string" - }, - { - internalType: "string", - name: "symbol_", - type: "string" - }, - ], - stateMutability: "nonpayable", - type: "constructor" - }, - { - 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: 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: [ - { - 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: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "getApproved", - outputs: [ - { - internalType: "address", - name: "", - type: "address" - }, - ], - 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: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "ownerOf", - outputs: [ - { - internalType: "address", - name: "", - type: "address" - }, - ], - stateMutability: "view", - 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: "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: "tokenId", - 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" - }, -]; -var _bytecode = "0x60806040523480156200001157600080fd5b506040516200276538038062002765833981810160405281019062000037919062000193565b81600090805190602001906200004f92919062000071565b5080600190805190602001906200006892919062000071565b50505062000376565b8280546200007f906200029b565b90600052602060002090601f016020900481019282620000a35760008555620000ef565b82601f10620000be57805160ff1916838001178555620000ef565b82800160010185558215620000ef579182015b82811115620000ee578251825591602001919060010190620000d1565b5b509050620000fe919062000102565b5090565b5b808211156200011d57600081600090555060010162000103565b5090565b60006200013862000132846200022f565b62000206565b9050828152602081018484840111156200015157600080fd5b6200015e84828562000265565b509392505050565b600082601f8301126200017857600080fd5b81516200018a84826020860162000121565b91505092915050565b60008060408385031215620001a757600080fd5b600083015167ffffffffffffffff811115620001c257600080fd5b620001d08582860162000166565b925050602083015167ffffffffffffffff811115620001ee57600080fd5b620001fc8582860162000166565b9150509250929050565b60006200021262000225565b9050620002208282620002d1565b919050565b6000604051905090565b600067ffffffffffffffff8211156200024d576200024c62000336565b5b620002588262000365565b9050602081019050919050565b60005b838110156200028557808201518184015260208101905062000268565b8381111562000295576000848401525b50505050565b60006002820490506001821680620002b457607f821691505b60208210811415620002cb57620002ca62000307565b5b50919050565b620002dc8262000365565b810181811067ffffffffffffffff82111715620002fe57620002fd62000336565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6123df80620003866000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb46514610224578063b88d4fde14610240578063c87b56dd1461025c578063e985e9c51461028c576100cf565b80636352211e146101a657806370a08231146101d657806395d89b4114610206576100cf565b806301ffc9a7146100d457806306fdde0314610104578063081812fc14610122578063095ea7b31461015257806323b872dd1461016e57806342842e0e1461018a575b600080fd5b6100ee60048036038101906100e9919061196f565b6102bc565b6040516100fb9190611c80565b60405180910390f35b61010c61039e565b6040516101199190611c9b565b60405180910390f35b61013c600480360381019061013791906119c1565b610430565b6040516101499190611c19565b60405180910390f35b61016c60048036038101906101679190611933565b610476565b005b6101886004803603810190610183919061182d565b61058e565b005b6101a4600480360381019061019f919061182d565b6105ee565b005b6101c060048036038101906101bb91906119c1565b61060e565b6040516101cd9190611c19565b60405180910390f35b6101f060048036038101906101eb91906117c8565b610695565b6040516101fd9190611ddd565b60405180910390f35b61020e61074d565b60405161021b9190611c9b565b60405180910390f35b61023e600480360381019061023991906118f7565b6107df565b005b61025a6004803603810190610255919061187c565b6107f5565b005b610276600480360381019061027191906119c1565b610857565b6040516102839190611c9b565b60405180910390f35b6102a660048036038101906102a191906117f1565b6108bf565b6040516102b39190611c80565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061038757507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610397575061039682610953565b5b9050919050565b6060600080546103ad90611fd1565b80601f01602080910402602001604051908101604052809291908181526020018280546103d990611fd1565b80156104265780601f106103fb57610100808354040283529160200191610426565b820191906000526020600020905b81548152906001019060200180831161040957829003601f168201915b5050505050905090565b600061043b826109bd565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006104818261060e565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156104f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e990611d9d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610511610a08565b73ffffffffffffffffffffffffffffffffffffffff161480610540575061053f8161053a610a08565b6108bf565b5b61057f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161057690611dbd565b60405180910390fd5b6105898383610a10565b505050565b61059f610599610a08565b82610ac9565b6105de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d590611cbd565b60405180910390fd5b6105e9838383610b5e565b505050565b610609838383604051806020016040528060008152506107f5565b505050565b60008061061a83610e58565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561068c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068390611d7d565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610706576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fd90611d5d565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606001805461075c90611fd1565b80601f016020809104026020016040519081016040528092919081815260200182805461078890611fd1565b80156107d55780601f106107aa576101008083540402835291602001916107d5565b820191906000526020600020905b8154815290600101906020018083116107b857829003601f168201915b5050505050905090565b6107f16107ea610a08565b8383610e95565b5050565b610806610800610a08565b83610ac9565b610845576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c90611cbd565b60405180910390fd5b61085184848484611002565b50505050565b6060610862826109bd565b600061086c61105e565b9050600081511161088c57604051806020016040528060008152506108b7565b8061089684611075565b6040516020016108a7929190611bf5565b6040516020818303038152906040525b915050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6109c681611199565b610a05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fc90611d7d565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16610a838361060e565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610ad58361060e565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610b175750610b1681856108bf565b5b80610b5557508373ffffffffffffffffffffffffffffffffffffffff16610b3d84610430565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16610b7e8261060e565b73ffffffffffffffffffffffffffffffffffffffff1614610bd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcb90611cfd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3b90611d1d565b60405180910390fd5b610c5183838360016111da565b8273ffffffffffffffffffffffffffffffffffffffff16610c718261060e565b73ffffffffffffffffffffffffffffffffffffffff1614610cc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbe90611cfd565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4610e538383836001611300565b505050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efb90611d3d565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610ff59190611c80565b60405180910390a3505050565b61100d848484610b5e565b61101984848484611306565b611058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104f90611cdd565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b6060600060016110848461149d565b01905060008167ffffffffffffffff8111156110c9577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156110fb5781602001600182028036833780820191505090505b509050600082602001820190505b60011561118e578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581611178577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b04945060008514156111895761118e565b611109565b819350505050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166111bb83610e58565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b60018111156112fa57600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461126e5780600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546112669190611ee7565b925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146112f95780600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546112f19190611e91565b925050819055505b5b50505050565b50505050565b60006113278473ffffffffffffffffffffffffffffffffffffffff166116d4565b15611490578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611350610a08565b8786866040518563ffffffff1660e01b81526004016113729493929190611c34565b602060405180830381600087803b15801561138c57600080fd5b505af19250505080156113bd57506040513d601f19601f820116820180604052508101906113ba9190611998565b60015b611440573d80600081146113ed576040519150601f19603f3d011682016040523d82523d6000602084013e6113f2565b606091505b50600081511415611438576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142f90611cdd565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611495565b600190505b949350505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611521577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381611517577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b0492506040810190505b6d04ee2d6d415b85acef81000000008310611584576d04ee2d6d415b85acef8100000000838161157a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b0492506020810190505b662386f26fc1000083106115d957662386f26fc1000083816115cf577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b0492506010810190505b6305f5e1008310611628576305f5e100838161161e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b0492506008810190505b6127108310611673576127108381611669577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b0492506004810190505b606483106116bc57606483816116b2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b0492506002810190505b600a83106116cb576001810190505b80915050919050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600061170a61170584611e1d565b611df8565b90508281526020810184848401111561172257600080fd5b61172d848285611f8f565b509392505050565b6000813590506117448161234d565b92915050565b60008135905061175981612364565b92915050565b60008135905061176e8161237b565b92915050565b6000815190506117838161237b565b92915050565b600082601f83011261179a57600080fd5b81356117aa8482602086016116f7565b91505092915050565b6000813590506117c281612392565b92915050565b6000602082840312156117da57600080fd5b60006117e884828501611735565b91505092915050565b6000806040838503121561180457600080fd5b600061181285828601611735565b925050602061182385828601611735565b9150509250929050565b60008060006060848603121561184257600080fd5b600061185086828701611735565b935050602061186186828701611735565b9250506040611872868287016117b3565b9150509250925092565b6000806000806080858703121561189257600080fd5b60006118a087828801611735565b94505060206118b187828801611735565b93505060406118c2878288016117b3565b925050606085013567ffffffffffffffff8111156118df57600080fd5b6118eb87828801611789565b91505092959194509250565b6000806040838503121561190a57600080fd5b600061191885828601611735565b92505060206119298582860161174a565b9150509250929050565b6000806040838503121561194657600080fd5b600061195485828601611735565b9250506020611965858286016117b3565b9150509250929050565b60006020828403121561198157600080fd5b600061198f8482850161175f565b91505092915050565b6000602082840312156119aa57600080fd5b60006119b884828501611774565b91505092915050565b6000602082840312156119d357600080fd5b60006119e1848285016117b3565b91505092915050565b6119f381611f1b565b82525050565b611a0281611f2d565b82525050565b6000611a1382611e4e565b611a1d8185611e64565b9350611a2d818560208601611f9e565b611a36816120c1565b840191505092915050565b6000611a4c82611e59565b611a568185611e75565b9350611a66818560208601611f9e565b611a6f816120c1565b840191505092915050565b6000611a8582611e59565b611a8f8185611e86565b9350611a9f818560208601611f9e565b80840191505092915050565b6000611ab8602d83611e75565b9150611ac3826120d2565b604082019050919050565b6000611adb603283611e75565b9150611ae682612121565b604082019050919050565b6000611afe602583611e75565b9150611b0982612170565b604082019050919050565b6000611b21602483611e75565b9150611b2c826121bf565b604082019050919050565b6000611b44601983611e75565b9150611b4f8261220e565b602082019050919050565b6000611b67602983611e75565b9150611b7282612237565b604082019050919050565b6000611b8a601883611e75565b9150611b9582612286565b602082019050919050565b6000611bad602183611e75565b9150611bb8826122af565b604082019050919050565b6000611bd0603d83611e75565b9150611bdb826122fe565b604082019050919050565b611bef81611f85565b82525050565b6000611c018285611a7a565b9150611c0d8284611a7a565b91508190509392505050565b6000602082019050611c2e60008301846119ea565b92915050565b6000608082019050611c4960008301876119ea565b611c5660208301866119ea565b611c636040830185611be6565b8181036060830152611c758184611a08565b905095945050505050565b6000602082019050611c9560008301846119f9565b92915050565b60006020820190508181036000830152611cb58184611a41565b905092915050565b60006020820190508181036000830152611cd681611aab565b9050919050565b60006020820190508181036000830152611cf681611ace565b9050919050565b60006020820190508181036000830152611d1681611af1565b9050919050565b60006020820190508181036000830152611d3681611b14565b9050919050565b60006020820190508181036000830152611d5681611b37565b9050919050565b60006020820190508181036000830152611d7681611b5a565b9050919050565b60006020820190508181036000830152611d9681611b7d565b9050919050565b60006020820190508181036000830152611db681611ba0565b9050919050565b60006020820190508181036000830152611dd681611bc3565b9050919050565b6000602082019050611df26000830184611be6565b92915050565b6000611e02611e13565b9050611e0e8282612003565b919050565b6000604051905090565b600067ffffffffffffffff821115611e3857611e37612092565b5b611e41826120c1565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000611e9c82611f85565b9150611ea783611f85565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611edc57611edb612034565b5b828201905092915050565b6000611ef282611f85565b9150611efd83611f85565b925082821015611f1057611f0f612034565b5b828203905092915050565b6000611f2682611f65565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015611fbc578082015181840152602081019050611fa1565b83811115611fcb576000848401525b50505050565b60006002820490506001821680611fe957607f821691505b60208210811415611ffd57611ffc612063565b5b50919050565b61200c826120c1565b810181811067ffffffffffffffff8211171561202b5761202a612092565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b61235681611f1b565b811461236157600080fd5b50565b61236d81611f2d565b811461237857600080fd5b50565b61238481611f39565b811461238f57600080fd5b50565b61239b81611f85565b81146123a657600080fd5b5056fea2646970667358221220655f8874a44849536c27d3d91af607a2536bac828e59188fefce18ad471c90b164736f6c63430008040033"; -var isSuperArgs = function (xs) { return xs.length > 1; }; -var ERC721__factory = /** @class */ (function (_super) { - __extends(ERC721__factory, _super); - function ERC721__factory() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - var _this = this; - if (isSuperArgs(args)) { - _this = _super.apply(this, args) || this; - } - else { - _this = _super.call(this, _abi, _bytecode, args[0]) || this; - } - _this.contractName = "ERC721"; - return _this; - } - ERC721__factory.prototype.deploy = function (name_, symbol_, overrides) { - return _super.prototype.deploy.call(this, name_, symbol_, overrides || {}); - }; - ERC721__factory.prototype.getDeployTransaction = function (name_, symbol_, overrides) { - return _super.prototype.getDeployTransaction.call(this, name_, symbol_, overrides || {}); - }; - ERC721__factory.prototype.attach = function (address) { - return _super.prototype.attach.call(this, address); - }; - ERC721__factory.prototype.connect = function (signer) { - return _super.prototype.connect.call(this, signer); - }; - ERC721__factory.createInterface = function () { - return new ethers_1.utils.Interface(_abi); - }; - ERC721__factory.connect = function (address, signerOrProvider) { - return new ethers_1.Contract(address, _abi, signerOrProvider); - }; - ERC721__factory.bytecode = _bytecode; - ERC721__factory.abi = _abi; - return ERC721__factory; -}(ethers_1.ContractFactory)); -exports.ERC721__factory = ERC721__factory; diff --git a/desci-contracts/typechain-types/factories/IDpidRegistry__factory.js b/desci-contracts/typechain-types/factories/IDpidRegistry__factory.js deleted file mode 100644 index bdedaa146..000000000 --- a/desci-contracts/typechain-types/factories/IDpidRegistry__factory.js +++ /dev/null @@ -1,94 +0,0 @@ -"use strict"; -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -exports.__esModule = true; -exports.IDpidRegistry__factory = void 0; -var ethers_1 = require("ethers"); -var _abi = [ - { - inputs: [ - { - internalType: "bytes32", - name: "prefix", - type: "bytes32" - }, - { - internalType: "uint256", - name: "entryId", - type: "uint256" - }, - ], - name: "get", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "bytes32", - name: "prefix", - type: "bytes32" - }, - ], - name: "getOrganization", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256" - }, - { - internalType: "address", - name: "", - type: "address" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "bytes32", - name: "prefix", - type: "bytes32" - }, - { - internalType: "uint256", - name: "entry", - type: "uint256" - }, - ], - name: "put", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256" - }, - ], - stateMutability: "payable", - type: "function" - }, -]; -var IDpidRegistry__factory = /** @class */ (function () { - function IDpidRegistry__factory() { - } - IDpidRegistry__factory.createInterface = function () { - return new ethers_1.utils.Interface(_abi); - }; - IDpidRegistry__factory.connect = function (address, signerOrProvider) { - return new ethers_1.Contract(address, _abi, signerOrProvider); - }; - IDpidRegistry__factory.abi = _abi; - return IDpidRegistry__factory; -}()); -exports.IDpidRegistry__factory = IDpidRegistry__factory; diff --git a/desci-contracts/typechain-types/factories/IERC165Upgradeable__factory.js b/desci-contracts/typechain-types/factories/IERC165Upgradeable__factory.js deleted file mode 100644 index 623a8e0fd..000000000 --- a/desci-contracts/typechain-types/factories/IERC165Upgradeable__factory.js +++ /dev/null @@ -1,41 +0,0 @@ -"use strict"; -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -exports.__esModule = true; -exports.IERC165Upgradeable__factory = void 0; -var ethers_1 = require("ethers"); -var _abi = [ - { - inputs: [ - { - internalType: "bytes4", - name: "interfaceId", - type: "bytes4" - }, - ], - name: "supportsInterface", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - }, - ], - stateMutability: "view", - type: "function" - }, -]; -var IERC165Upgradeable__factory = /** @class */ (function () { - function IERC165Upgradeable__factory() { - } - IERC165Upgradeable__factory.createInterface = function () { - return new ethers_1.utils.Interface(_abi); - }; - IERC165Upgradeable__factory.connect = function (address, signerOrProvider) { - return new ethers_1.Contract(address, _abi, signerOrProvider); - }; - IERC165Upgradeable__factory.abi = _abi; - return IERC165Upgradeable__factory; -}()); -exports.IERC165Upgradeable__factory = IERC165Upgradeable__factory; diff --git a/desci-contracts/typechain-types/factories/IERC165__factory.js b/desci-contracts/typechain-types/factories/IERC165__factory.js deleted file mode 100644 index 2957cbadc..000000000 --- a/desci-contracts/typechain-types/factories/IERC165__factory.js +++ /dev/null @@ -1,41 +0,0 @@ -"use strict"; -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -exports.__esModule = true; -exports.IERC165__factory = void 0; -var ethers_1 = require("ethers"); -var _abi = [ - { - inputs: [ - { - internalType: "bytes4", - name: "interfaceId", - type: "bytes4" - }, - ], - name: "supportsInterface", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - }, - ], - stateMutability: "view", - type: "function" - }, -]; -var IERC165__factory = /** @class */ (function () { - function IERC165__factory() { - } - IERC165__factory.createInterface = function () { - return new ethers_1.utils.Interface(_abi); - }; - IERC165__factory.connect = function (address, signerOrProvider) { - return new ethers_1.Contract(address, _abi, signerOrProvider); - }; - IERC165__factory.abi = _abi; - return IERC165__factory; -}()); -exports.IERC165__factory = IERC165__factory; diff --git a/desci-contracts/typechain-types/factories/IERC721MetadataUpgradeable__factory.js b/desci-contracts/typechain-types/factories/IERC721MetadataUpgradeable__factory.js deleted file mode 100644 index 9f0fbe49c..000000000 --- a/desci-contracts/typechain-types/factories/IERC721MetadataUpgradeable__factory.js +++ /dev/null @@ -1,352 +0,0 @@ -"use strict"; -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -exports.__esModule = true; -exports.IERC721MetadataUpgradeable__factory = void 0; -var ethers_1 = require("ethers"); -var _abi = [ - { - 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: 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: [ - { - 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: "balance", - type: "uint256" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "getApproved", - outputs: [ - { - internalType: "address", - name: "operator", - type: "address" - }, - ], - 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: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "ownerOf", - outputs: [ - { - internalType: "address", - name: "owner", - type: "address" - }, - ], - stateMutability: "view", - 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: "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: "tokenId", - 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" - }, -]; -var IERC721MetadataUpgradeable__factory = /** @class */ (function () { - function IERC721MetadataUpgradeable__factory() { - } - IERC721MetadataUpgradeable__factory.createInterface = function () { - return new ethers_1.utils.Interface(_abi); - }; - IERC721MetadataUpgradeable__factory.connect = function (address, signerOrProvider) { - return new ethers_1.Contract(address, _abi, signerOrProvider); - }; - IERC721MetadataUpgradeable__factory.abi = _abi; - return IERC721MetadataUpgradeable__factory; -}()); -exports.IERC721MetadataUpgradeable__factory = IERC721MetadataUpgradeable__factory; diff --git a/desci-contracts/typechain-types/factories/IERC721Metadata__factory.js b/desci-contracts/typechain-types/factories/IERC721Metadata__factory.js deleted file mode 100644 index fdebc69bd..000000000 --- a/desci-contracts/typechain-types/factories/IERC721Metadata__factory.js +++ /dev/null @@ -1,352 +0,0 @@ -"use strict"; -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -exports.__esModule = true; -exports.IERC721Metadata__factory = void 0; -var ethers_1 = require("ethers"); -var _abi = [ - { - 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: 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: [ - { - 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: "balance", - type: "uint256" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "getApproved", - outputs: [ - { - internalType: "address", - name: "operator", - type: "address" - }, - ], - 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: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "ownerOf", - outputs: [ - { - internalType: "address", - name: "owner", - type: "address" - }, - ], - stateMutability: "view", - 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: "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: "tokenId", - 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" - }, -]; -var IERC721Metadata__factory = /** @class */ (function () { - function IERC721Metadata__factory() { - } - IERC721Metadata__factory.createInterface = function () { - return new ethers_1.utils.Interface(_abi); - }; - IERC721Metadata__factory.connect = function (address, signerOrProvider) { - return new ethers_1.Contract(address, _abi, signerOrProvider); - }; - IERC721Metadata__factory.abi = _abi; - return IERC721Metadata__factory; -}()); -exports.IERC721Metadata__factory = IERC721Metadata__factory; diff --git a/desci-contracts/typechain-types/factories/IERC721ReceiverUpgradeable__factory.js b/desci-contracts/typechain-types/factories/IERC721ReceiverUpgradeable__factory.js deleted file mode 100644 index 6dcbf9b1c..000000000 --- a/desci-contracts/typechain-types/factories/IERC721ReceiverUpgradeable__factory.js +++ /dev/null @@ -1,56 +0,0 @@ -"use strict"; -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -exports.__esModule = true; -exports.IERC721ReceiverUpgradeable__factory = void 0; -var ethers_1 = require("ethers"); -var _abi = [ - { - inputs: [ - { - internalType: "address", - name: "operator", - type: "address" - }, - { - internalType: "address", - name: "from", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - { - internalType: "bytes", - name: "data", - type: "bytes" - }, - ], - name: "onERC721Received", - outputs: [ - { - internalType: "bytes4", - name: "", - type: "bytes4" - }, - ], - stateMutability: "nonpayable", - type: "function" - }, -]; -var IERC721ReceiverUpgradeable__factory = /** @class */ (function () { - function IERC721ReceiverUpgradeable__factory() { - } - IERC721ReceiverUpgradeable__factory.createInterface = function () { - return new ethers_1.utils.Interface(_abi); - }; - IERC721ReceiverUpgradeable__factory.connect = function (address, signerOrProvider) { - return new ethers_1.Contract(address, _abi, signerOrProvider); - }; - IERC721ReceiverUpgradeable__factory.abi = _abi; - return IERC721ReceiverUpgradeable__factory; -}()); -exports.IERC721ReceiverUpgradeable__factory = IERC721ReceiverUpgradeable__factory; diff --git a/desci-contracts/typechain-types/factories/IERC721Receiver__factory.js b/desci-contracts/typechain-types/factories/IERC721Receiver__factory.js deleted file mode 100644 index f6208cee7..000000000 --- a/desci-contracts/typechain-types/factories/IERC721Receiver__factory.js +++ /dev/null @@ -1,56 +0,0 @@ -"use strict"; -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -exports.__esModule = true; -exports.IERC721Receiver__factory = void 0; -var ethers_1 = require("ethers"); -var _abi = [ - { - inputs: [ - { - internalType: "address", - name: "operator", - type: "address" - }, - { - internalType: "address", - name: "from", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - { - internalType: "bytes", - name: "data", - type: "bytes" - }, - ], - name: "onERC721Received", - outputs: [ - { - internalType: "bytes4", - name: "", - type: "bytes4" - }, - ], - stateMutability: "nonpayable", - type: "function" - }, -]; -var IERC721Receiver__factory = /** @class */ (function () { - function IERC721Receiver__factory() { - } - IERC721Receiver__factory.createInterface = function () { - return new ethers_1.utils.Interface(_abi); - }; - IERC721Receiver__factory.connect = function (address, signerOrProvider) { - return new ethers_1.Contract(address, _abi, signerOrProvider); - }; - IERC721Receiver__factory.abi = _abi; - return IERC721Receiver__factory; -}()); -exports.IERC721Receiver__factory = IERC721Receiver__factory; diff --git a/desci-contracts/typechain-types/factories/IERC721Upgradeable__factory.js b/desci-contracts/typechain-types/factories/IERC721Upgradeable__factory.js deleted file mode 100644 index 2f144bf7d..000000000 --- a/desci-contracts/typechain-types/factories/IERC721Upgradeable__factory.js +++ /dev/null @@ -1,307 +0,0 @@ -"use strict"; -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -exports.__esModule = true; -exports.IERC721Upgradeable__factory = void 0; -var ethers_1 = require("ethers"); -var _abi = [ - { - 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: 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: [ - { - 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: "balance", - type: "uint256" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "getApproved", - outputs: [ - { - internalType: "address", - name: "operator", - type: "address" - }, - ], - 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: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "ownerOf", - outputs: [ - { - internalType: "address", - name: "owner", - type: "address" - }, - ], - stateMutability: "view", - 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: "bytes4", - name: "interfaceId", - type: "bytes4" - }, - ], - name: "supportsInterface", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - }, - ], - 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" - }, -]; -var IERC721Upgradeable__factory = /** @class */ (function () { - function IERC721Upgradeable__factory() { - } - IERC721Upgradeable__factory.createInterface = function () { - return new ethers_1.utils.Interface(_abi); - }; - IERC721Upgradeable__factory.connect = function (address, signerOrProvider) { - return new ethers_1.Contract(address, _abi, signerOrProvider); - }; - IERC721Upgradeable__factory.abi = _abi; - return IERC721Upgradeable__factory; -}()); -exports.IERC721Upgradeable__factory = IERC721Upgradeable__factory; diff --git a/desci-contracts/typechain-types/factories/IERC721__factory.js b/desci-contracts/typechain-types/factories/IERC721__factory.js deleted file mode 100644 index 5c9e78b91..000000000 --- a/desci-contracts/typechain-types/factories/IERC721__factory.js +++ /dev/null @@ -1,307 +0,0 @@ -"use strict"; -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -exports.__esModule = true; -exports.IERC721__factory = void 0; -var ethers_1 = require("ethers"); -var _abi = [ - { - 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: 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: [ - { - 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: "balance", - type: "uint256" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "getApproved", - outputs: [ - { - internalType: "address", - name: "operator", - type: "address" - }, - ], - 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: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "ownerOf", - outputs: [ - { - internalType: "address", - name: "owner", - type: "address" - }, - ], - stateMutability: "view", - 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: "bytes4", - name: "interfaceId", - type: "bytes4" - }, - ], - name: "supportsInterface", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - }, - ], - 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" - }, -]; -var IERC721__factory = /** @class */ (function () { - function IERC721__factory() { - } - IERC721__factory.createInterface = function () { - return new ethers_1.utils.Interface(_abi); - }; - IERC721__factory.connect = function (address, signerOrProvider) { - return new ethers_1.Contract(address, _abi, signerOrProvider); - }; - IERC721__factory.abi = _abi; - return IERC721__factory; -}()); -exports.IERC721__factory = IERC721__factory; diff --git a/desci-contracts/typechain-types/factories/Initializable__factory.js b/desci-contracts/typechain-types/factories/Initializable__factory.js deleted file mode 100644 index 04087930e..000000000 --- a/desci-contracts/typechain-types/factories/Initializable__factory.js +++ /dev/null @@ -1,35 +0,0 @@ -"use strict"; -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -exports.__esModule = true; -exports.Initializable__factory = void 0; -var ethers_1 = require("ethers"); -var _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint8", - name: "version", - type: "uint8" - }, - ], - name: "Initialized", - type: "event" - }, -]; -var Initializable__factory = /** @class */ (function () { - function Initializable__factory() { - } - Initializable__factory.createInterface = function () { - return new ethers_1.utils.Interface(_abi); - }; - Initializable__factory.connect = function (address, signerOrProvider) { - return new ethers_1.Contract(address, _abi, signerOrProvider); - }; - Initializable__factory.abi = _abi; - return Initializable__factory; -}()); -exports.Initializable__factory = Initializable__factory; diff --git a/desci-contracts/typechain-types/factories/OwnableUpgradeable__factory.js b/desci-contracts/typechain-types/factories/OwnableUpgradeable__factory.js deleted file mode 100644 index 9b9ec6796..000000000 --- a/desci-contracts/typechain-types/factories/OwnableUpgradeable__factory.js +++ /dev/null @@ -1,87 +0,0 @@ -"use strict"; -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -exports.__esModule = true; -exports.OwnableUpgradeable__factory = void 0; -var ethers_1 = require("ethers"); -var _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint8", - name: "version", - type: "uint8" - }, - ], - name: "Initialized", - 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" - }, - { - inputs: [], - name: "owner", - outputs: [ - { - internalType: "address", - name: "", - type: "address" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [], - name: "renounceOwnership", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "newOwner", - type: "address" - }, - ], - name: "transferOwnership", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, -]; -var OwnableUpgradeable__factory = /** @class */ (function () { - function OwnableUpgradeable__factory() { - } - OwnableUpgradeable__factory.createInterface = function () { - return new ethers_1.utils.Interface(_abi); - }; - OwnableUpgradeable__factory.connect = function (address, signerOrProvider) { - return new ethers_1.Contract(address, _abi, signerOrProvider); - }; - OwnableUpgradeable__factory.abi = _abi; - return OwnableUpgradeable__factory; -}()); -exports.OwnableUpgradeable__factory = OwnableUpgradeable__factory; diff --git a/desci-contracts/typechain-types/factories/ResearchObjectMigrated__factory.js b/desci-contracts/typechain-types/factories/ResearchObjectMigrated__factory.js deleted file mode 100644 index 903ff476d..000000000 --- a/desci-contracts/typechain-types/factories/ResearchObjectMigrated__factory.js +++ /dev/null @@ -1,790 +0,0 @@ -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -exports.__esModule = true; -exports.ResearchObjectMigrated__factory = void 0; -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -var ethers_1 = require("ethers"); -var _abi = [ - { - inputs: [], - stateMutability: "nonpayable", - type: "constructor" - }, - { - 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: "uint8", - name: "version", - type: "uint8" - }, - ], - name: "Initialized", - 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" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "_from", - type: "address" - }, - { - indexed: true, - internalType: "uint256", - name: "_uuid", - type: "uint256" - }, - { - indexed: false, - internalType: "bytes", - name: "_cid", - type: "bytes" - }, - ], - name: "VersionPush", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "_from", - type: "address" - }, - { - indexed: true, - internalType: "uint256", - name: "_uuid", - type: "uint256" - }, - { - indexed: false, - internalType: "bytes", - name: "_cid", - type: "bytes" - }, - { - indexed: false, - internalType: "uint256", - name: "_migration_timestamp", - type: "uint256" - }, - ], - name: "VersionPushMigrated", - type: "event" - }, - { - inputs: [ - { - internalType: "address", - name: "dpidRegistry", - type: "address" - }, - ], - name: "__ResearchObjectV2_init", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string" - }, - { - internalType: "string", - name: "symbol", - type: "string" - }, - ], - name: "__VersionedERC721V2_init", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [], - name: "_dpidRegistry", - outputs: [ - { - internalType: "address", - name: "", - type: "address" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - components: [ - { - internalType: "address", - name: "from", - type: "address" - }, - { - internalType: "uint256", - name: "uuid", - type: "uint256" - }, - { - internalType: "bytes", - name: "cid", - type: "bytes" - }, - { - internalType: "uint256", - name: "timestamp", - type: "uint256" - }, - { - internalType: "uint256", - name: "dpid", - type: "uint256" - }, - ], - internalType: "struct MigrationData[]", - name: "importData", - type: "tuple[]" - }, - { - internalType: "bytes32", - name: "defaultPrefix", - type: "bytes32" - }, - ], - name: "_importChunk", - outputs: [], - stateMutability: "payable", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "uuid", - type: "uint256" - }, - { - internalType: "bytes", - name: "cid", - type: "bytes" - }, - { - internalType: "bytes32", - name: "prefix", - type: "bytes32" - }, - { - internalType: "uint256", - name: "expectedDpid", - type: "uint256" - }, - { - internalType: "uint256", - name: "timestamp", - type: "uint256" - }, - { - internalType: "address", - name: "targetAccount", - type: "address" - }, - ], - name: "_importWithDpid", - outputs: [], - stateMutability: "payable", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "", - type: "uint256" - }, - ], - name: "_metadata", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes" - }, - ], - 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: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "exists", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "getApproved", - outputs: [ - { - internalType: "address", - name: "", - type: "address" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "dpidRegistry", - type: "address" - }, - ], - name: "initialize", - outputs: [], - stateMutability: "nonpayable", - 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: [ - { - internalType: "uint256", - name: "uuid", - type: "uint256" - }, - { - internalType: "bytes", - name: "cid", - type: "bytes" - }, - ], - name: "mint", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "uuid", - type: "uint256" - }, - { - internalType: "bytes", - name: "cid", - type: "bytes" - }, - { - internalType: "bytes32", - name: "prefix", - type: "bytes32" - }, - { - internalType: "uint256", - name: "expectedDpid", - type: "uint256" - }, - ], - name: "mintWithDpid", - outputs: [], - stateMutability: "payable", - 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: "address", - name: "dpidRegistry", - type: "address" - }, - ], - name: "setRegistry", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "string", - name: "uri", - type: "string" - }, - ], - name: "setURI", - 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: "tokenId", - 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" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - { - internalType: "bytes", - name: "cid", - type: "bytes" - }, - ], - name: "updateMetadata", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, -]; -var _bytecode = "0x60806040523480156200001157600080fd5b50620000226200003860201b60201c565b620000326200003860201b60201c565b620001e3565b600060019054906101000a900460ff16156200008b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000829062000137565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff161015620000fd5760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff604051620000f4919062000159565b60405180910390a15b565b60006200010e60278362000176565b91506200011b8262000194565b604082019050919050565b620001318162000187565b82525050565b600060208201905081810360008301526200015281620000ff565b9050919050565b600060208201905062000170600083018462000126565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b6142be80620001f36000396000f3fe6080604052600436106101c25760003560e01c806385198761116100f7578063b88d4fde11610095578063db7fd40811610064578063db7fd40814610623578063e985e9c51461064c578063f2fde38b14610689578063ffe77b0f146106b2576101c2565b8063b88d4fde14610578578063c4d66de8146105a1578063c87b56dd146105ca578063c88efd1514610607576101c2565b80639a7fad40116100d15780639a7fad40146104d4578063a22cb465146104fd578063a91ee0dc14610526578063af3ba9c11461054f576101c2565b806385198761146104625780638da5cb5b1461047e57806395d89b41146104a9576101c2565b80633dcd3236116101645780634f558e791161013e5780634f558e79146103945780636352211e146103d157806370a082311461040e578063715018a61461044b576101c2565b80633dcd3236146103245780633e8513181461034f57806342842e0e1461036b576101c2565b8063081812fc116101a0578063081812fc14610258578063095ea7b31461029557806313859f46146102be57806323b872dd146102fb576101c2565b806301ffc9a7146101c757806302fe53051461020457806306fdde031461022d575b600080fd5b3480156101d357600080fd5b506101ee60048036038101906101e99190612f42565b6106db565b6040516101fb919061364f565b60405180910390f35b34801561021057600080fd5b5061022b60048036038101906102269190612f94565b6107bd565b005b34801561023957600080fd5b506102426107df565b60405161024f9190613700565b60405180910390f35b34801561026457600080fd5b5061027f600480360381019061027a9190613041565b610871565b60405161028c91906135e8565b60405180910390f35b3480156102a157600080fd5b506102bc60048036038101906102b79190612eb2565b6108b7565b005b3480156102ca57600080fd5b506102e560048036038101906102e09190613041565b6109cf565b6040516102f29190613693565b60405180910390f35b34801561030757600080fd5b50610322600480360381019061031d9190612dac565b610a6f565b005b34801561033057600080fd5b50610339610acf565b60405161034691906135e8565b60405180910390f35b610369600480360381019061036491906131bf565b610af5565b005b34801561037757600080fd5b50610392600480360381019061038d9190612dac565b610d1e565b005b3480156103a057600080fd5b506103bb60048036038101906103b69190613041565b610d3e565b6040516103c8919061364f565b60405180910390f35b3480156103dd57600080fd5b506103f860048036038101906103f39190613041565b610d50565b60405161040591906135e8565b60405180910390f35b34801561041a57600080fd5b5061043560048036038101906104309190612d47565b610e02565b6040516104429190613962565b60405180910390f35b34801561045757600080fd5b50610460610eba565b005b61047c60048036038101906104779190612eee565b610ece565b005b34801561048a57600080fd5b50610493610f62565b6040516104a091906135e8565b60405180910390f35b3480156104b557600080fd5b506104be610f8c565b6040516104cb9190613700565b60405180910390f35b3480156104e057600080fd5b506104fb60048036038101906104f6919061316b565b61101e565b005b34801561050957600080fd5b50610524600480360381019061051f9190612e76565b61113c565b005b34801561053257600080fd5b5061054d60048036038101906105489190612d47565b611152565b005b34801561055b57600080fd5b5061057660048036038101906105719190612fd5565b61119e565b005b34801561058457600080fd5b5061059f600480360381019061059a9190612dfb565b6111fb565b005b3480156105ad57600080fd5b506105c860048036038101906105c39190612d47565b61125d565b005b3480156105d657600080fd5b506105f160048036038101906105ec9190613041565b6113e6565b6040516105fe9190613700565b60405180910390f35b610621600480360381019061061c91906130eb565b61144e565b005b34801561062f57600080fd5b5061064a60048036038101906106459190613093565b61155d565b005b34801561065857600080fd5b50610673600480360381019061066e9190612d70565b6115cd565b604051610680919061364f565b60405180910390f35b34801561069557600080fd5b506106b060048036038101906106ab9190612d47565b611661565b005b3480156106be57600080fd5b506106d960048036038101906106d49190612d47565b6116e5565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107a657507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806107b657506107b5826118d9565b5b9050919050565b6107c5611943565b8060ca90805190602001906107db929190612921565b5050565b6060606580546107ee90613c0d565b80601f016020809104026020016040519081016040528092919081815260200182805461081a90613c0d565b80156108675780601f1061083c57610100808354040283529160200191610867565b820191906000526020600020905b81548152906001019060200180831161084a57829003601f168201915b5050505050905090565b600061087c826119c1565b6069600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006108c282610d50565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610933576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092a90613902565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610952611a0c565b73ffffffffffffffffffffffffffffffffffffffff16148061098157506109808161097b611a0c565b6115cd565b5b6109c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b790613862565b60405180910390fd5b6109ca8383611a14565b505050565b609760205280600052604060002060009150905080546109ee90613c0d565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1a90613c0d565b8015610a675780601f10610a3c57610100808354040283529160200191610a67565b820191906000526020600020905b815481529060010190602001808311610a4a57829003601f168201915b505050505081565b610a80610a7a611a0c565b82611acd565b610abf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab690613942565b60405180910390fd5b610aca838383611b62565b505050565b60cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610afd611943565b600060cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff166318ae19c287876040518363ffffffff1660e01b8152600401610b6192919061366a565b60206040518083038186803b158015610b7957600080fd5b505afa158015610b8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb1919061306a565b9050600083905060008990506000831415610cb75760008473ffffffffffffffffffffffffffffffffffffffff1663da4a9842348b8e6040518463ffffffff1660e01b8152600401610c0492919061366a565b6020604051808303818588803b158015610c1d57600080fd5b505af1158015610c31573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610c56919061306a565b9050808814610c9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c91906137a2565b60405180910390fd5b610ca48383611dc9565b610cb5610caf611a0c565b83611a14565b505b610cc18a8a61101e565b808273ffffffffffffffffffffffffffffffffffffffff167f4c2f0fd1019fdc5963138c1513932ae5dca836a3b35e8bd71a68803dec00ea1d8b89604051610d0a9291906136b5565b60405180910390a350505050505050505050565b610d39838383604051806020016040528060008152506111fb565b505050565b6000610d4982611de7565b9050919050565b6000806067600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610df9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df0906138e2565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6a90613822565b60405180910390fd5b606860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ec2611943565b610ecc6000611e53565b565b610ed6611943565b60005b8251811015610f5d576000838281518110610f1d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519050610f498160200151826040015185846080015185606001518660000151610af5565b508080610f5590613c70565b915050610ed9565b505050565b6000609860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060668054610f9b90613c0d565b80601f0160208091040260200160405190810160405280929190818152602001828054610fc790613c0d565b80156110145780601f10610fe957610100808354040283529160200191611014565b820191906000526020600020905b815481529060010190602001808311610ff757829003601f168201915b5050505050905090565b816000611029611a0c565b905060008173ffffffffffffffffffffffffffffffffffffffff1661104d84610d50565b73ffffffffffffffffffffffffffffffffffffffff16148061107557506110748284611acd565b5b9050806110b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ae906138a2565b60405180910390fd5b836097600087815260200190815260200160002090805190602001906110de9291906129a7565b50846110e8611a0c565b73ffffffffffffffffffffffffffffffffffffffff167fabddf73bfc8efbf8287a09ea355e43cf6c0c22880ce0470affeba5271c0a76948660405161112d9190613693565b60405180910390a35050505050565b61114e611147611a0c565b8383611f19565b5050565b61115a611943565b8060cb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600060019054906101000a900460ff166111ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e490613922565b60405180910390fd5b6111f78282612086565b5050565b61120c611206611a0c565b83611acd565b61124b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124290613942565b60405180910390fd5b611257848484846120e3565b50505050565b60008060019054906101000a900460ff1615905080801561128e5750600160008054906101000a900460ff1660ff16105b806112bb575061129d3061213f565b1580156112ba5750600160008054906101000a900460ff1660ff16145b5b6112fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f190613842565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015611337576001600060016101000a81548160ff0219169083151502179055505b611340826116e5565b611348612162565b8160cb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080156113e25760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516113d991906136e5565b60405180910390a15b5050565b60606113f1826119c1565b60006113fb6121bb565b9050600081511161141b5760405180602001604052806000815250611446565b806114258461224d565b6040516020016114369291906135c4565b6040516020818303038152906040525b915050919050565b600060cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff1663da4a984234868a6040518463ffffffff1660e01b81526004016114b392919061366a565b6020604051808303818588803b1580156114cc57600080fd5b505af11580156114e0573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611505919061306a565b9050808314611549576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611540906137a2565b60405180910390fd5b61155487878761155d565b50505050505050565b6000611567611a0c565b905060008490506115788282611dc9565b6115c68585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061101e565b5050505050565b6000606a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611669611943565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156116d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d090613742565b60405180910390fd5b6116e281611e53565b50565b60008060019054906101000a900460ff161590508080156117165750600160008054906101000a900460ff1660ff16105b8061174357506117253061213f565b1580156117425750600160008054906101000a900460ff1660ff16145b5b611782576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177990613842565b60405180910390fd5b60016000806101000a81548160ff021916908360ff16021790555080156117bf576001600060016101000a81548160ff0219169083151502179055505b6118336040518060400160405280601581526020017f4465536369205265736561726368204f626a65637400000000000000000000008152506040518060400160405280600a81526020017f44655363692d4e6f64650000000000000000000000000000000000000000000081525061119e565b61183b612162565b8160cb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080156118d55760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516118cc91906136e5565b60405180910390a15b5050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b61194b611a0c565b73ffffffffffffffffffffffffffffffffffffffff16611969610f62565b73ffffffffffffffffffffffffffffffffffffffff16146119bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b6906138c2565b60405180910390fd5b565b6119ca81611de7565b611a09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a00906138e2565b60405180910390fd5b50565b600033905090565b816069600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611a8783610d50565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611ad983610d50565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611b1b5750611b1a81856115cd565b5b80611b5957508373ffffffffffffffffffffffffffffffffffffffff16611b4184610871565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611b8282610d50565b73ffffffffffffffffffffffffffffffffffffffff1614611bd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcf90613762565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3f906137c2565b60405180910390fd5b611c538383836123fa565b611c5e600082611a14565b6001606860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611cae9190613afa565b925050819055506001606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d059190613a73565b92505081905550816067600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611dc483838361246e565b505050565b611de3828260405180602001604052806000815250612473565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff166067600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6000609860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081609860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611f88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7f906137e2565b60405180910390fd5b80606a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051612079919061364f565b60405180910390a3505050565b600060019054906101000a900460ff166120d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cc90613922565b60405180910390fd5b6120df82826124ce565b5050565b6120ee848484611b62565b6120fa8484848461254f565b612139576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213090613722565b60405180910390fd5b50505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff166121b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a890613922565b60405180910390fd5b6121b96126e6565b565b606060ca80546121ca90613c0d565b80601f01602080910402602001604051908101604052809291908181526020018280546121f690613c0d565b80156122435780601f1061221857610100808354040283529160200191612243565b820191906000526020600020905b81548152906001019060200180831161222657829003601f168201915b5050505050905090565b60606000821415612295576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506123f5565b600082905060005b600082146122c75780806122b090613c70565b915050600a826122c09190613ac9565b915061229d565b60008167ffffffffffffffff811115612309577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801561233b5781602001600182028036833780820191505090505b5090505b600085146123ee576001826123549190613afa565b9150600a856123639190613cb9565b603061236f9190613a73565b60f81b8183815181106123ab577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856123e79190613ac9565b945061233f565b8093505050505b919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612469576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246090613802565b60405180910390fd5b505050565b505050565b61247d8383612747565b61248a600084848461254f565b6124c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c090613722565b60405180910390fd5b505050565b600060019054906101000a900460ff1661251d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251490613922565b60405180910390fd5b8160659080519060200190612533929190612921565b50806066908051906020019061254a929190612921565b505050565b60006125708473ffffffffffffffffffffffffffffffffffffffff1661213f565b156126d9578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612599611a0c565b8786866040518563ffffffff1660e01b81526004016125bb9493929190613603565b602060405180830381600087803b1580156125d557600080fd5b505af192505050801561260657506040513d601f19601f820116820180604052508101906126039190612f6b565b60015b612689573d8060008114612636576040519150601f19603f3d011682016040523d82523d6000602084013e61263b565b606091505b50600081511415612681576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267890613722565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506126de565b600190505b949350505050565b600060019054906101000a900460ff16612735576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272c90613922565b60405180910390fd5b612745612740611a0c565b611e53565b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156127b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ae90613882565b60405180910390fd5b6127c081611de7565b15612800576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f790613782565b60405180910390fd5b61280c600083836123fa565b6001606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461285c9190613a73565b92505081905550816067600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461291d6000838361246e565b5050565b82805461292d90613c0d565b90600052602060002090601f01602090048101928261294f5760008555612996565b82601f1061296857805160ff1916838001178555612996565b82800160010185558215612996579182015b8281111561299557825182559160200191906001019061297a565b5b5090506129a39190612a2d565b5090565b8280546129b390613c0d565b90600052602060002090601f0160209004810192826129d55760008555612a1c565b82601f106129ee57805160ff1916838001178555612a1c565b82800160010185558215612a1c579182015b82811115612a1b578251825591602001919060010190612a00565b5b509050612a299190612a2d565b5090565b5b80821115612a46576000816000905550600101612a2e565b5090565b6000612a5d612a58846139a2565b61397d565b90508083825260208201905082856020860282011115612a7c57600080fd5b60005b85811015612ac657813567ffffffffffffffff811115612a9e57600080fd5b808601612aab8982612c7d565b85526020850194506020840193505050600181019050612a7f565b5050509392505050565b6000612ae3612ade846139ce565b61397d565b905082815260208101848484011115612afb57600080fd5b612b06848285613bcb565b509392505050565b6000612b21612b1c846139ff565b61397d565b905082815260208101848484011115612b3957600080fd5b612b44848285613bcb565b509392505050565b600081359050612b5b81614215565b92915050565b600082601f830112612b7257600080fd5b8135612b82848260208601612a4a565b91505092915050565b600081359050612b9a8161422c565b92915050565b600081359050612baf81614243565b92915050565b600081359050612bc48161425a565b92915050565b600081519050612bd98161425a565b92915050565b60008083601f840112612bf157600080fd5b8235905067ffffffffffffffff811115612c0a57600080fd5b602083019150836001820283011115612c2257600080fd5b9250929050565b600082601f830112612c3a57600080fd5b8135612c4a848260208601612ad0565b91505092915050565b600082601f830112612c6457600080fd5b8135612c74848260208601612b0e565b91505092915050565b600060a08284031215612c8f57600080fd5b612c9960a061397d565b90506000612ca984828501612b4c565b6000830152506020612cbd84828501612d1d565b602083015250604082013567ffffffffffffffff811115612cdd57600080fd5b612ce984828501612c29565b6040830152506060612cfd84828501612d1d565b6060830152506080612d1184828501612d1d565b60808301525092915050565b600081359050612d2c81614271565b92915050565b600081519050612d4181614271565b92915050565b600060208284031215612d5957600080fd5b6000612d6784828501612b4c565b91505092915050565b60008060408385031215612d8357600080fd5b6000612d9185828601612b4c565b9250506020612da285828601612b4c565b9150509250929050565b600080600060608486031215612dc157600080fd5b6000612dcf86828701612b4c565b9350506020612de086828701612b4c565b9250506040612df186828701612d1d565b9150509250925092565b60008060008060808587031215612e1157600080fd5b6000612e1f87828801612b4c565b9450506020612e3087828801612b4c565b9350506040612e4187828801612d1d565b925050606085013567ffffffffffffffff811115612e5e57600080fd5b612e6a87828801612c29565b91505092959194509250565b60008060408385031215612e8957600080fd5b6000612e9785828601612b4c565b9250506020612ea885828601612b8b565b9150509250929050565b60008060408385031215612ec557600080fd5b6000612ed385828601612b4c565b9250506020612ee485828601612d1d565b9150509250929050565b60008060408385031215612f0157600080fd5b600083013567ffffffffffffffff811115612f1b57600080fd5b612f2785828601612b61565b9250506020612f3885828601612ba0565b9150509250929050565b600060208284031215612f5457600080fd5b6000612f6284828501612bb5565b91505092915050565b600060208284031215612f7d57600080fd5b6000612f8b84828501612bca565b91505092915050565b600060208284031215612fa657600080fd5b600082013567ffffffffffffffff811115612fc057600080fd5b612fcc84828501612c53565b91505092915050565b60008060408385031215612fe857600080fd5b600083013567ffffffffffffffff81111561300257600080fd5b61300e85828601612c53565b925050602083013567ffffffffffffffff81111561302b57600080fd5b61303785828601612c53565b9150509250929050565b60006020828403121561305357600080fd5b600061306184828501612d1d565b91505092915050565b60006020828403121561307c57600080fd5b600061308a84828501612d32565b91505092915050565b6000806000604084860312156130a857600080fd5b60006130b686828701612d1d565b935050602084013567ffffffffffffffff8111156130d357600080fd5b6130df86828701612bdf565b92509250509250925092565b60008060008060006080868803121561310357600080fd5b600061311188828901612d1d565b955050602086013567ffffffffffffffff81111561312e57600080fd5b61313a88828901612bdf565b9450945050604061314d88828901612ba0565b925050606061315e88828901612d1d565b9150509295509295909350565b6000806040838503121561317e57600080fd5b600061318c85828601612d1d565b925050602083013567ffffffffffffffff8111156131a957600080fd5b6131b585828601612c29565b9150509250929050565b60008060008060008060c087890312156131d857600080fd5b60006131e689828a01612d1d565b965050602087013567ffffffffffffffff81111561320357600080fd5b61320f89828a01612c29565b955050604061322089828a01612ba0565b945050606061323189828a01612d1d565b935050608061324289828a01612d1d565b92505060a061325389828a01612b4c565b9150509295509295509295565b61326981613b2e565b82525050565b61327881613b40565b82525050565b61328781613b4c565b82525050565b600061329882613a30565b6132a28185613a46565b93506132b2818560208601613bda565b6132bb81613da6565b840191505092915050565b6132cf81613bb9565b82525050565b60006132e082613a3b565b6132ea8185613a57565b93506132fa818560208601613bda565b61330381613da6565b840191505092915050565b600061331982613a3b565b6133238185613a68565b9350613333818560208601613bda565b80840191505092915050565b600061334c603283613a57565b915061335782613db7565b604082019050919050565b600061336f602683613a57565b915061337a82613e06565b604082019050919050565b6000613392602583613a57565b915061339d82613e55565b604082019050919050565b60006133b5601c83613a57565b91506133c082613ea4565b602082019050919050565b60006133d8600f83613a57565b91506133e382613ecd565b602082019050919050565b60006133fb602483613a57565b915061340682613ef6565b604082019050919050565b600061341e601983613a57565b915061342982613f45565b602082019050919050565b6000613441600b83613a57565b915061344c82613f6e565b602082019050919050565b6000613464602983613a57565b915061346f82613f97565b604082019050919050565b6000613487602e83613a57565b915061349282613fe6565b604082019050919050565b60006134aa603e83613a57565b91506134b582614035565b604082019050919050565b60006134cd602083613a57565b91506134d882614084565b602082019050919050565b60006134f0600d83613a57565b91506134fb826140ad565b602082019050919050565b6000613513602083613a57565b915061351e826140d6565b602082019050919050565b6000613536601883613a57565b9150613541826140ff565b602082019050919050565b6000613559602183613a57565b915061356482614128565b604082019050919050565b600061357c602b83613a57565b915061358782614177565b604082019050919050565b600061359f602e83613a57565b91506135aa826141c6565b604082019050919050565b6135be81613ba2565b82525050565b60006135d0828561330e565b91506135dc828461330e565b91508190509392505050565b60006020820190506135fd6000830184613260565b92915050565b60006080820190506136186000830187613260565b6136256020830186613260565b61363260408301856135b5565b8181036060830152613644818461328d565b905095945050505050565b6000602082019050613664600083018461326f565b92915050565b600060408201905061367f600083018561327e565b61368c60208301846135b5565b9392505050565b600060208201905081810360008301526136ad818461328d565b905092915050565b600060408201905081810360008301526136cf818561328d565b90506136de60208301846135b5565b9392505050565b60006020820190506136fa60008301846132c6565b92915050565b6000602082019050818103600083015261371a81846132d5565b905092915050565b6000602082019050818103600083015261373b8161333f565b9050919050565b6000602082019050818103600083015261375b81613362565b9050919050565b6000602082019050818103600083015261377b81613385565b9050919050565b6000602082019050818103600083015261379b816133a8565b9050919050565b600060208201905081810360008301526137bb816133cb565b9050919050565b600060208201905081810360008301526137db816133ee565b9050919050565b600060208201905081810360008301526137fb81613411565b9050919050565b6000602082019050818103600083015261381b81613434565b9050919050565b6000602082019050818103600083015261383b81613457565b9050919050565b6000602082019050818103600083015261385b8161347a565b9050919050565b6000602082019050818103600083015261387b8161349d565b9050919050565b6000602082019050818103600083015261389b816134c0565b9050919050565b600060208201905081810360008301526138bb816134e3565b9050919050565b600060208201905081810360008301526138db81613506565b9050919050565b600060208201905081810360008301526138fb81613529565b9050919050565b6000602082019050818103600083015261391b8161354c565b9050919050565b6000602082019050818103600083015261393b8161356f565b9050919050565b6000602082019050818103600083015261395b81613592565b9050919050565b600060208201905061397760008301846135b5565b92915050565b6000613987613998565b90506139938282613c3f565b919050565b6000604051905090565b600067ffffffffffffffff8211156139bd576139bc613d77565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156139e9576139e8613d77565b5b6139f282613da6565b9050602081019050919050565b600067ffffffffffffffff821115613a1a57613a19613d77565b5b613a2382613da6565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000613a7e82613ba2565b9150613a8983613ba2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613abe57613abd613cea565b5b828201905092915050565b6000613ad482613ba2565b9150613adf83613ba2565b925082613aef57613aee613d19565b5b828204905092915050565b6000613b0582613ba2565b9150613b1083613ba2565b925082821015613b2357613b22613cea565b5b828203905092915050565b6000613b3982613b82565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613bc482613bac565b9050919050565b82818337600083830152505050565b60005b83811015613bf8578082015181840152602081019050613bdd565b83811115613c07576000848401525b50505050565b60006002820490506001821680613c2557607f821691505b60208210811415613c3957613c38613d48565b5b50919050565b613c4882613da6565b810181811067ffffffffffffffff82111715613c6757613c66613d77565b5b80604052505050565b6000613c7b82613ba2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613cae57613cad613cea565b5b600182019050919050565b6000613cc482613ba2565b9150613ccf83613ba2565b925082613cdf57613cde613d19565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f556e657870656374656420645049440000000000000000000000000000000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f6e6f207472616e73666572000000000000000000000000000000000000000000600082015250565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4e6f207065726d697373696f6e00000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206e6f7220617070726f766564000000000000000000000000000000000000602082015250565b61421e81613b2e565b811461422957600080fd5b50565b61423581613b40565b811461424057600080fd5b50565b61424c81613b4c565b811461425757600080fd5b50565b61426381613b56565b811461426e57600080fd5b50565b61427a81613ba2565b811461428557600080fd5b5056fea2646970667358221220e147c9d6b61e5e0fe6fd6c5970956c393da31e1955617ef35149fc909ab6e77a64736f6c63430008040033"; -var isSuperArgs = function (xs) { return xs.length > 1; }; -var ResearchObjectMigrated__factory = /** @class */ (function (_super) { - __extends(ResearchObjectMigrated__factory, _super); - function ResearchObjectMigrated__factory() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - var _this = this; - if (isSuperArgs(args)) { - _this = _super.apply(this, args) || this; - } - else { - _this = _super.call(this, _abi, _bytecode, args[0]) || this; - } - _this.contractName = "ResearchObjectMigrated"; - return _this; - } - ResearchObjectMigrated__factory.prototype.deploy = function (overrides) { - return _super.prototype.deploy.call(this, overrides || {}); - }; - ResearchObjectMigrated__factory.prototype.getDeployTransaction = function (overrides) { - return _super.prototype.getDeployTransaction.call(this, overrides || {}); - }; - ResearchObjectMigrated__factory.prototype.attach = function (address) { - return _super.prototype.attach.call(this, address); - }; - ResearchObjectMigrated__factory.prototype.connect = function (signer) { - return _super.prototype.connect.call(this, signer); - }; - ResearchObjectMigrated__factory.createInterface = function () { - return new ethers_1.utils.Interface(_abi); - }; - ResearchObjectMigrated__factory.connect = function (address, signerOrProvider) { - return new ethers_1.Contract(address, _abi, signerOrProvider); - }; - ResearchObjectMigrated__factory.bytecode = _bytecode; - ResearchObjectMigrated__factory.abi = _abi; - return ResearchObjectMigrated__factory; -}(ethers_1.ContractFactory)); -exports.ResearchObjectMigrated__factory = ResearchObjectMigrated__factory; diff --git a/desci-contracts/typechain-types/factories/ResearchObjectV2__factory.js b/desci-contracts/typechain-types/factories/ResearchObjectV2__factory.js deleted file mode 100644 index 8abcd7065..000000000 --- a/desci-contracts/typechain-types/factories/ResearchObjectV2__factory.js +++ /dev/null @@ -1,663 +0,0 @@ -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -exports.__esModule = true; -exports.ResearchObjectV2__factory = void 0; -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -var ethers_1 = require("ethers"); -var _abi = [ - { - inputs: [], - stateMutability: "nonpayable", - type: "constructor" - }, - { - 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: "uint8", - name: "version", - type: "uint8" - }, - ], - name: "Initialized", - 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" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "_from", - type: "address" - }, - { - indexed: true, - internalType: "uint256", - name: "_uuid", - type: "uint256" - }, - { - indexed: false, - internalType: "bytes", - name: "_cid", - type: "bytes" - }, - ], - name: "VersionPush", - type: "event" - }, - { - inputs: [ - { - internalType: "address", - name: "dpidRegistry", - type: "address" - }, - ], - name: "__ResearchObjectV2_init", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string" - }, - { - internalType: "string", - name: "symbol", - type: "string" - }, - ], - name: "__VersionedERC721V2_init", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [], - name: "_dpidRegistry", - outputs: [ - { - internalType: "address", - name: "", - type: "address" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "", - type: "uint256" - }, - ], - name: "_metadata", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes" - }, - ], - 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: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "exists", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "getApproved", - outputs: [ - { - internalType: "address", - name: "", - type: "address" - }, - ], - 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: [ - { - internalType: "uint256", - name: "uuid", - type: "uint256" - }, - { - internalType: "bytes", - name: "cid", - type: "bytes" - }, - ], - name: "mint", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "uuid", - type: "uint256" - }, - { - internalType: "bytes", - name: "cid", - type: "bytes" - }, - { - internalType: "bytes32", - name: "prefix", - type: "bytes32" - }, - { - internalType: "uint256", - name: "expectedDpid", - type: "uint256" - }, - ], - name: "mintWithDpid", - outputs: [], - stateMutability: "payable", - 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: "address", - name: "dpidRegistry", - type: "address" - }, - ], - name: "setRegistry", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "string", - name: "uri", - type: "string" - }, - ], - name: "setURI", - 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: "tokenId", - 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" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - { - internalType: "bytes", - name: "cid", - type: "bytes" - }, - ], - name: "updateMetadata", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, -]; -var _bytecode = "0x60806040523480156200001157600080fd5b50620000226200002860201b60201c565b620001d3565b600060019054906101000a900460ff16156200007b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000729062000127565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff161015620000ed5760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff604051620000e4919062000149565b60405180910390a15b565b6000620000fe60278362000166565b91506200010b8262000184565b604082019050919050565b620001218162000177565b82525050565b600060208201905081810360008301526200014281620000ef565b9050919050565b600060208201905062000160600083018462000116565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b613b3580620001e36000396000f3fe6080604052600436106101815760003560e01c80638da5cb5b116100d1578063b88d4fde1161008a578063db7fd40811610064578063db7fd40814610581578063e985e9c5146105aa578063f2fde38b146105e7578063ffe77b0f1461061057610181565b8063b88d4fde146104ff578063c87b56dd14610528578063c88efd151461056557610181565b80638da5cb5b1461040557806395d89b41146104305780639a7fad401461045b578063a22cb46514610484578063a91ee0dc146104ad578063af3ba9c1146104d657610181565b806323b872dd1161013e5780634f558e79116101185780634f558e79146103375780636352211e1461037457806370a08231146103b1578063715018a6146103ee57610181565b806323b872dd146102ba5780633dcd3236146102e357806342842e0e1461030e57610181565b806301ffc9a71461018657806302fe5305146101c357806306fdde03146101ec578063081812fc14610217578063095ea7b31461025457806313859f461461027d575b600080fd5b34801561019257600080fd5b506101ad60048036038101906101a891906128b6565b610639565b6040516101ba9190612f22565b60405180910390f35b3480156101cf57600080fd5b506101ea60048036038101906101e59190612908565b61071b565b005b3480156101f857600080fd5b5061020161073d565b60405161020e9190612fa3565b60405180910390f35b34801561022357600080fd5b5061023e600480360381019061023991906129b5565b6107cf565b60405161024b9190612ebb565b60405180910390f35b34801561026057600080fd5b5061027b6004803603810190610276919061287a565b610815565b005b34801561028957600080fd5b506102a4600480360381019061029f91906129b5565b61092d565b6040516102b19190612f66565b60405180910390f35b3480156102c657600080fd5b506102e160048036038101906102dc9190612774565b6109cd565b005b3480156102ef57600080fd5b506102f8610a2d565b6040516103059190612ebb565b60405180910390f35b34801561031a57600080fd5b5061033560048036038101906103309190612774565b610a53565b005b34801561034357600080fd5b5061035e600480360381019061035991906129b5565b610a73565b60405161036b9190612f22565b60405180910390f35b34801561038057600080fd5b5061039b600480360381019061039691906129b5565b610a85565b6040516103a89190612ebb565b60405180910390f35b3480156103bd57600080fd5b506103d860048036038101906103d3919061270f565b610b37565b6040516103e59190613205565b60405180910390f35b3480156103fa57600080fd5b50610403610bef565b005b34801561041157600080fd5b5061041a610c03565b6040516104279190612ebb565b60405180910390f35b34801561043c57600080fd5b50610445610c2d565b6040516104529190612fa3565b60405180910390f35b34801561046757600080fd5b50610482600480360381019061047d9190612adf565b610cbf565b005b34801561049057600080fd5b506104ab60048036038101906104a6919061283e565b610ddd565b005b3480156104b957600080fd5b506104d460048036038101906104cf919061270f565b610df3565b005b3480156104e257600080fd5b506104fd60048036038101906104f89190612949565b610e3f565b005b34801561050b57600080fd5b50610526600480360381019061052191906127c3565b610e9c565b005b34801561053457600080fd5b5061054f600480360381019061054a91906129b5565b610efe565b60405161055c9190612fa3565b60405180910390f35b61057f600480360381019061057a9190612a5f565b610f66565b005b34801561058d57600080fd5b506105a860048036038101906105a39190612a07565b611075565b005b3480156105b657600080fd5b506105d160048036038101906105cc9190612738565b6110e5565b6040516105de9190612f22565b60405180910390f35b3480156105f357600080fd5b5061060e6004803603810190610609919061270f565b611179565b005b34801561061c57600080fd5b506106376004803603810190610632919061270f565b6111fd565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061070457507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806107145750610713826113f1565b5b9050919050565b61072361145b565b8060ca9080519060200190610739929190612439565b5050565b60606065805461074c90613484565b80601f016020809104026020016040519081016040528092919081815260200182805461077890613484565b80156107c55780601f1061079a576101008083540402835291602001916107c5565b820191906000526020600020905b8154815290600101906020018083116107a857829003601f168201915b5050505050905090565b60006107da826114d9565b6069600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061082082610a85565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610891576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610888906131a5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108b0611524565b73ffffffffffffffffffffffffffffffffffffffff1614806108df57506108de816108d9611524565b6110e5565b5b61091e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091590613105565b60405180910390fd5b610928838361152c565b505050565b6097602052806000526040600020600091509050805461094c90613484565b80601f016020809104026020016040519081016040528092919081815260200182805461097890613484565b80156109c55780601f1061099a576101008083540402835291602001916109c5565b820191906000526020600020905b8154815290600101906020018083116109a857829003601f168201915b505050505081565b6109de6109d8611524565b826115e5565b610a1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a14906131e5565b60405180910390fd5b610a2883838361167a565b505050565b60cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a6e83838360405180602001604052806000815250610e9c565b505050565b6000610a7e826118e1565b9050919050565b6000806067600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2590613185565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ba8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9f906130c5565b60405180910390fd5b606860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610bf761145b565b610c01600061194d565b565b6000609860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060668054610c3c90613484565b80601f0160208091040260200160405190810160405280929190818152602001828054610c6890613484565b8015610cb55780601f10610c8a57610100808354040283529160200191610cb5565b820191906000526020600020905b815481529060010190602001808311610c9857829003601f168201915b5050505050905090565b816000610cca611524565b905060008173ffffffffffffffffffffffffffffffffffffffff16610cee84610a85565b73ffffffffffffffffffffffffffffffffffffffff161480610d165750610d1582846115e5565b5b905080610d58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4f90613145565b60405180910390fd5b83609760008781526020019081526020016000209080519060200190610d7f9291906124bf565b5084610d89611524565b73ffffffffffffffffffffffffffffffffffffffff167fabddf73bfc8efbf8287a09ea355e43cf6c0c22880ce0470affeba5271c0a769486604051610dce9190612f66565b60405180910390a35050505050565b610def610de8611524565b8383611a13565b5050565b610dfb61145b565b8060cb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600060019054906101000a900460ff16610e8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e85906131c5565b60405180910390fd5b610e988282611b80565b5050565b610ead610ea7611524565b836115e5565b610eec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee3906131e5565b60405180910390fd5b610ef884848484611bdd565b50505050565b6060610f09826114d9565b6000610f13611c39565b90506000815111610f335760405180602001604052806000815250610f5e565b80610f3d84611ccb565b604051602001610f4e929190612e97565b6040516020818303038152906040525b915050919050565b600060cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff1663da4a984234868a6040518463ffffffff1660e01b8152600401610fcb929190612f3d565b6020604051808303818588803b158015610fe457600080fd5b505af1158015610ff8573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061101d91906129de565b9050808314611061576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105890613045565b60405180910390fd5b61106c878787611075565b50505050505050565b600061107f611524565b905060008490506110908282611e78565b6110de8585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050610cbf565b5050505050565b6000606a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61118161145b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156111f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e890612fe5565b60405180910390fd5b6111fa8161194d565b50565b60008060019054906101000a900460ff1615905080801561122e5750600160008054906101000a900460ff1660ff16105b8061125b575061123d30611e96565b15801561125a5750600160008054906101000a900460ff1660ff16145b5b61129a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611291906130e5565b60405180910390fd5b60016000806101000a81548160ff021916908360ff16021790555080156112d7576001600060016101000a81548160ff0219169083151502179055505b61134b6040518060400160405280601581526020017f4465536369205265736561726368204f626a65637400000000000000000000008152506040518060400160405280600a81526020017f44655363692d4e6f646500000000000000000000000000000000000000000000815250610e3f565b611353611eb9565b8160cb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080156113ed5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516113e49190612f88565b60405180910390a15b5050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b611463611524565b73ffffffffffffffffffffffffffffffffffffffff16611481610c03565b73ffffffffffffffffffffffffffffffffffffffff16146114d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ce90613165565b60405180910390fd5b565b6114e2816118e1565b611521576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151890613185565b60405180910390fd5b50565b600033905090565b816069600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661159f83610a85565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806115f183610a85565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611633575061163281856110e5565b5b8061167157508373ffffffffffffffffffffffffffffffffffffffff16611659846107cf565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661169a82610a85565b73ffffffffffffffffffffffffffffffffffffffff16146116f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e790613005565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611760576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175790613065565b60405180910390fd5b61176b838383611f12565b61177660008261152c565b6001606860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117c69190613371565b925050819055506001606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461181d91906132ea565b92505081905550816067600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46118dc838383611f86565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff166067600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6000609860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081609860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611a82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7990613085565b60405180910390fd5b80606a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611b739190612f22565b60405180910390a3505050565b600060019054906101000a900460ff16611bcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc6906131c5565b60405180910390fd5b611bd98282611f8b565b5050565b611be884848461167a565b611bf48484848461200c565b611c33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2a90612fc5565b60405180910390fd5b50505050565b606060ca8054611c4890613484565b80601f0160208091040260200160405190810160405280929190818152602001828054611c7490613484565b8015611cc15780601f10611c9657610100808354040283529160200191611cc1565b820191906000526020600020905b815481529060010190602001808311611ca457829003601f168201915b5050505050905090565b60606000821415611d13576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611e73565b600082905060005b60008214611d45578080611d2e906134e7565b915050600a82611d3e9190613340565b9150611d1b565b60008167ffffffffffffffff811115611d87577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611db95781602001600182028036833780820191505090505b5090505b60008514611e6c57600182611dd29190613371565b9150600a85611de19190613530565b6030611ded91906132ea565b60f81b818381518110611e29577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611e659190613340565b9450611dbd565b8093505050505b919050565b611e928282604051806020016040528060008152506121a3565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611f08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eff906131c5565b60405180910390fd5b611f106121fe565b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611f81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f78906130a5565b60405180910390fd5b505050565b505050565b600060019054906101000a900460ff16611fda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd1906131c5565b60405180910390fd5b8160659080519060200190611ff0929190612439565b508060669080519060200190612007929190612439565b505050565b600061202d8473ffffffffffffffffffffffffffffffffffffffff16611e96565b15612196578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612056611524565b8786866040518563ffffffff1660e01b81526004016120789493929190612ed6565b602060405180830381600087803b15801561209257600080fd5b505af19250505080156120c357506040513d601f19601f820116820180604052508101906120c091906128df565b60015b612146573d80600081146120f3576040519150601f19603f3d011682016040523d82523d6000602084013e6120f8565b606091505b5060008151141561213e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213590612fc5565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505061219b565b600190505b949350505050565b6121ad838361225f565b6121ba600084848461200c565b6121f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f090612fc5565b60405180910390fd5b505050565b600060019054906101000a900460ff1661224d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612244906131c5565b60405180910390fd5b61225d612258611524565b61194d565b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c690613125565b60405180910390fd5b6122d8816118e1565b15612318576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230f90613025565b60405180910390fd5b61232460008383611f12565b6001606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461237491906132ea565b92505081905550816067600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461243560008383611f86565b5050565b82805461244590613484565b90600052602060002090601f01602090048101928261246757600085556124ae565b82601f1061248057805160ff19168380011785556124ae565b828001600101855582156124ae579182015b828111156124ad578251825591602001919060010190612492565b5b5090506124bb9190612545565b5090565b8280546124cb90613484565b90600052602060002090601f0160209004810192826124ed5760008555612534565b82601f1061250657805160ff1916838001178555612534565b82800160010185558215612534579182015b82811115612533578251825591602001919060010190612518565b5b5090506125419190612545565b5090565b5b8082111561255e576000816000905550600101612546565b5090565b600061257561257084613245565b613220565b90508281526020810184848401111561258d57600080fd5b612598848285613442565b509392505050565b60006125b36125ae84613276565b613220565b9050828152602081018484840111156125cb57600080fd5b6125d6848285613442565b509392505050565b6000813590506125ed81613a8c565b92915050565b60008135905061260281613aa3565b92915050565b60008135905061261781613aba565b92915050565b60008135905061262c81613ad1565b92915050565b60008151905061264181613ad1565b92915050565b60008083601f84011261265957600080fd5b8235905067ffffffffffffffff81111561267257600080fd5b60208301915083600182028301111561268a57600080fd5b9250929050565b600082601f8301126126a257600080fd5b81356126b2848260208601612562565b91505092915050565b600082601f8301126126cc57600080fd5b81356126dc8482602086016125a0565b91505092915050565b6000813590506126f481613ae8565b92915050565b60008151905061270981613ae8565b92915050565b60006020828403121561272157600080fd5b600061272f848285016125de565b91505092915050565b6000806040838503121561274b57600080fd5b6000612759858286016125de565b925050602061276a858286016125de565b9150509250929050565b60008060006060848603121561278957600080fd5b6000612797868287016125de565b93505060206127a8868287016125de565b92505060406127b9868287016126e5565b9150509250925092565b600080600080608085870312156127d957600080fd5b60006127e7878288016125de565b94505060206127f8878288016125de565b9350506040612809878288016126e5565b925050606085013567ffffffffffffffff81111561282657600080fd5b61283287828801612691565b91505092959194509250565b6000806040838503121561285157600080fd5b600061285f858286016125de565b9250506020612870858286016125f3565b9150509250929050565b6000806040838503121561288d57600080fd5b600061289b858286016125de565b92505060206128ac858286016126e5565b9150509250929050565b6000602082840312156128c857600080fd5b60006128d68482850161261d565b91505092915050565b6000602082840312156128f157600080fd5b60006128ff84828501612632565b91505092915050565b60006020828403121561291a57600080fd5b600082013567ffffffffffffffff81111561293457600080fd5b612940848285016126bb565b91505092915050565b6000806040838503121561295c57600080fd5b600083013567ffffffffffffffff81111561297657600080fd5b612982858286016126bb565b925050602083013567ffffffffffffffff81111561299f57600080fd5b6129ab858286016126bb565b9150509250929050565b6000602082840312156129c757600080fd5b60006129d5848285016126e5565b91505092915050565b6000602082840312156129f057600080fd5b60006129fe848285016126fa565b91505092915050565b600080600060408486031215612a1c57600080fd5b6000612a2a868287016126e5565b935050602084013567ffffffffffffffff811115612a4757600080fd5b612a5386828701612647565b92509250509250925092565b600080600080600060808688031215612a7757600080fd5b6000612a85888289016126e5565b955050602086013567ffffffffffffffff811115612aa257600080fd5b612aae88828901612647565b94509450506040612ac188828901612608565b9250506060612ad2888289016126e5565b9150509295509295909350565b60008060408385031215612af257600080fd5b6000612b00858286016126e5565b925050602083013567ffffffffffffffff811115612b1d57600080fd5b612b2985828601612691565b9150509250929050565b612b3c816133a5565b82525050565b612b4b816133b7565b82525050565b612b5a816133c3565b82525050565b6000612b6b826132a7565b612b7581856132bd565b9350612b85818560208601613451565b612b8e8161361d565b840191505092915050565b612ba281613430565b82525050565b6000612bb3826132b2565b612bbd81856132ce565b9350612bcd818560208601613451565b612bd68161361d565b840191505092915050565b6000612bec826132b2565b612bf681856132df565b9350612c06818560208601613451565b80840191505092915050565b6000612c1f6032836132ce565b9150612c2a8261362e565b604082019050919050565b6000612c426026836132ce565b9150612c4d8261367d565b604082019050919050565b6000612c656025836132ce565b9150612c70826136cc565b604082019050919050565b6000612c88601c836132ce565b9150612c938261371b565b602082019050919050565b6000612cab600f836132ce565b9150612cb682613744565b602082019050919050565b6000612cce6024836132ce565b9150612cd98261376d565b604082019050919050565b6000612cf16019836132ce565b9150612cfc826137bc565b602082019050919050565b6000612d14600b836132ce565b9150612d1f826137e5565b602082019050919050565b6000612d376029836132ce565b9150612d428261380e565b604082019050919050565b6000612d5a602e836132ce565b9150612d658261385d565b604082019050919050565b6000612d7d603e836132ce565b9150612d88826138ac565b604082019050919050565b6000612da06020836132ce565b9150612dab826138fb565b602082019050919050565b6000612dc3600d836132ce565b9150612dce82613924565b602082019050919050565b6000612de66020836132ce565b9150612df18261394d565b602082019050919050565b6000612e096018836132ce565b9150612e1482613976565b602082019050919050565b6000612e2c6021836132ce565b9150612e378261399f565b604082019050919050565b6000612e4f602b836132ce565b9150612e5a826139ee565b604082019050919050565b6000612e72602e836132ce565b9150612e7d82613a3d565b604082019050919050565b612e9181613419565b82525050565b6000612ea38285612be1565b9150612eaf8284612be1565b91508190509392505050565b6000602082019050612ed06000830184612b33565b92915050565b6000608082019050612eeb6000830187612b33565b612ef86020830186612b33565b612f056040830185612e88565b8181036060830152612f178184612b60565b905095945050505050565b6000602082019050612f376000830184612b42565b92915050565b6000604082019050612f526000830185612b51565b612f5f6020830184612e88565b9392505050565b60006020820190508181036000830152612f808184612b60565b905092915050565b6000602082019050612f9d6000830184612b99565b92915050565b60006020820190508181036000830152612fbd8184612ba8565b905092915050565b60006020820190508181036000830152612fde81612c12565b9050919050565b60006020820190508181036000830152612ffe81612c35565b9050919050565b6000602082019050818103600083015261301e81612c58565b9050919050565b6000602082019050818103600083015261303e81612c7b565b9050919050565b6000602082019050818103600083015261305e81612c9e565b9050919050565b6000602082019050818103600083015261307e81612cc1565b9050919050565b6000602082019050818103600083015261309e81612ce4565b9050919050565b600060208201905081810360008301526130be81612d07565b9050919050565b600060208201905081810360008301526130de81612d2a565b9050919050565b600060208201905081810360008301526130fe81612d4d565b9050919050565b6000602082019050818103600083015261311e81612d70565b9050919050565b6000602082019050818103600083015261313e81612d93565b9050919050565b6000602082019050818103600083015261315e81612db6565b9050919050565b6000602082019050818103600083015261317e81612dd9565b9050919050565b6000602082019050818103600083015261319e81612dfc565b9050919050565b600060208201905081810360008301526131be81612e1f565b9050919050565b600060208201905081810360008301526131de81612e42565b9050919050565b600060208201905081810360008301526131fe81612e65565b9050919050565b600060208201905061321a6000830184612e88565b92915050565b600061322a61323b565b905061323682826134b6565b919050565b6000604051905090565b600067ffffffffffffffff8211156132605761325f6135ee565b5b6132698261361d565b9050602081019050919050565b600067ffffffffffffffff821115613291576132906135ee565b5b61329a8261361d565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006132f582613419565b915061330083613419565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561333557613334613561565b5b828201905092915050565b600061334b82613419565b915061335683613419565b92508261336657613365613590565b5b828204905092915050565b600061337c82613419565b915061338783613419565b92508282101561339a57613399613561565b5b828203905092915050565b60006133b0826133f9565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061343b82613423565b9050919050565b82818337600083830152505050565b60005b8381101561346f578082015181840152602081019050613454565b8381111561347e576000848401525b50505050565b6000600282049050600182168061349c57607f821691505b602082108114156134b0576134af6135bf565b5b50919050565b6134bf8261361d565b810181811067ffffffffffffffff821117156134de576134dd6135ee565b5b80604052505050565b60006134f282613419565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561352557613524613561565b5b600182019050919050565b600061353b82613419565b915061354683613419565b92508261355657613555613590565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f556e657870656374656420645049440000000000000000000000000000000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f6e6f207472616e73666572000000000000000000000000000000000000000000600082015250565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4e6f207065726d697373696f6e00000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206e6f7220617070726f766564000000000000000000000000000000000000602082015250565b613a95816133a5565b8114613aa057600080fd5b50565b613aac816133b7565b8114613ab757600080fd5b50565b613ac3816133c3565b8114613ace57600080fd5b50565b613ada816133cd565b8114613ae557600080fd5b50565b613af181613419565b8114613afc57600080fd5b5056fea2646970667358221220448f67f11695953978b8db1358e26068f93ba3d14c1086e8e7334058afa9d92664736f6c63430008040033"; -var isSuperArgs = function (xs) { return xs.length > 1; }; -var ResearchObjectV2__factory = /** @class */ (function (_super) { - __extends(ResearchObjectV2__factory, _super); - function ResearchObjectV2__factory() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - var _this = this; - if (isSuperArgs(args)) { - _this = _super.apply(this, args) || this; - } - else { - _this = _super.call(this, _abi, _bytecode, args[0]) || this; - } - _this.contractName = "ResearchObjectV2"; - return _this; - } - ResearchObjectV2__factory.prototype.deploy = function (overrides) { - return _super.prototype.deploy.call(this, overrides || {}); - }; - ResearchObjectV2__factory.prototype.getDeployTransaction = function (overrides) { - return _super.prototype.getDeployTransaction.call(this, overrides || {}); - }; - ResearchObjectV2__factory.prototype.attach = function (address) { - return _super.prototype.attach.call(this, address); - }; - ResearchObjectV2__factory.prototype.connect = function (signer) { - return _super.prototype.connect.call(this, signer); - }; - ResearchObjectV2__factory.createInterface = function () { - return new ethers_1.utils.Interface(_abi); - }; - ResearchObjectV2__factory.connect = function (address, signerOrProvider) { - return new ethers_1.Contract(address, _abi, signerOrProvider); - }; - ResearchObjectV2__factory.bytecode = _bytecode; - ResearchObjectV2__factory.abi = _abi; - return ResearchObjectV2__factory; -}(ethers_1.ContractFactory)); -exports.ResearchObjectV2__factory = ResearchObjectV2__factory; diff --git a/desci-contracts/typechain-types/factories/ResearchObject__factory.js b/desci-contracts/typechain-types/factories/ResearchObject__factory.js deleted file mode 100644 index 36bd9bcb5..000000000 --- a/desci-contracts/typechain-types/factories/ResearchObject__factory.js +++ /dev/null @@ -1,663 +0,0 @@ -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -exports.__esModule = true; -exports.ResearchObject__factory = void 0; -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -var ethers_1 = require("ethers"); -var _abi = [ - { - inputs: [], - stateMutability: "nonpayable", - type: "constructor" - }, - { - 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: "uint8", - name: "version", - type: "uint8" - }, - ], - name: "Initialized", - 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" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "_from", - type: "address" - }, - { - indexed: true, - internalType: "uint256", - name: "_uuid", - type: "uint256" - }, - { - indexed: false, - internalType: "bytes", - name: "_cid", - type: "bytes" - }, - ], - name: "VersionPush", - type: "event" - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string" - }, - { - internalType: "string", - name: "symbol", - type: "string" - }, - ], - name: "__VersionedERC721_init", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [], - name: "_dpidRegistry", - outputs: [ - { - internalType: "address", - name: "", - type: "address" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "", - type: "uint256" - }, - ], - name: "_metadata", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes" - }, - ], - 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: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "exists", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "getApproved", - outputs: [ - { - internalType: "address", - name: "", - type: "address" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "dpidRegistry", - type: "address" - }, - ], - name: "initialize", - outputs: [], - stateMutability: "nonpayable", - 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: [ - { - internalType: "uint256", - name: "uuid", - type: "uint256" - }, - { - internalType: "bytes", - name: "cid", - type: "bytes" - }, - ], - name: "mint", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "uuid", - type: "uint256" - }, - { - internalType: "bytes", - name: "cid", - type: "bytes" - }, - { - internalType: "bytes32", - name: "prefix", - type: "bytes32" - }, - { - internalType: "uint256", - name: "expectedDpid", - type: "uint256" - }, - ], - name: "mintWithDpid", - outputs: [], - stateMutability: "payable", - 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: "address", - name: "dpidRegistry", - type: "address" - }, - ], - name: "setRegistry", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "string", - name: "uri", - type: "string" - }, - ], - name: "setURI", - 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: "tokenId", - 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" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - { - internalType: "bytes", - name: "cid", - type: "bytes" - }, - ], - name: "updateMetadata", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, -]; -var _bytecode = "0x60806040523480156200001157600080fd5b50620000226200002860201b60201c565b620001d3565b600060019054906101000a900460ff16156200007b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000729062000127565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff161015620000ed5760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff604051620000e4919062000149565b60405180910390a15b565b6000620000fe60278362000166565b91506200010b8262000184565b604082019050919050565b620001218162000177565b82525050565b600060208201905081810360008301526200014281620000ef565b9050919050565b600060208201905062000160600083018462000116565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b613b2480620001e36000396000f3fe6080604052600436106101815760003560e01c8063715018a6116100d1578063b88d4fde1161008a578063c88efd1511610064578063c88efd151461058e578063db7fd408146105aa578063e985e9c5146105d3578063f2fde38b1461061057610181565b8063b88d4fde146104ff578063c4d66de814610528578063c87b56dd1461055157610181565b8063715018a6146104175780638da5cb5b1461042e57806395d89b41146104595780639a7fad4014610484578063a22cb465146104ad578063a91ee0dc146104d657610181565b806323b872dd1161013e5780634f558e79116101185780634f558e7914610337578063599ad936146103745780636352211e1461039d57806370a08231146103da57610181565b806323b872dd146102ba5780633dcd3236146102e357806342842e0e1461030e57610181565b806301ffc9a71461018657806302fe5305146101c357806306fdde03146101ec578063081812fc14610217578063095ea7b31461025457806313859f461461027d575b600080fd5b34801561019257600080fd5b506101ad60048036038101906101a891906128a5565b610639565b6040516101ba9190612f11565b60405180910390f35b3480156101cf57600080fd5b506101ea60048036038101906101e591906128f7565b61071b565b005b3480156101f857600080fd5b5061020161073d565b60405161020e9190612f92565b60405180910390f35b34801561022357600080fd5b5061023e600480360381019061023991906129a4565b6107cf565b60405161024b9190612eaa565b60405180910390f35b34801561026057600080fd5b5061027b60048036038101906102769190612869565b610815565b005b34801561028957600080fd5b506102a4600480360381019061029f91906129a4565b61092d565b6040516102b19190612f55565b60405180910390f35b3480156102c657600080fd5b506102e160048036038101906102dc9190612763565b6109cd565b005b3480156102ef57600080fd5b506102f8610a2d565b6040516103059190612eaa565b60405180910390f35b34801561031a57600080fd5b5061033560048036038101906103309190612763565b610a53565b005b34801561034357600080fd5b5061035e600480360381019061035991906129a4565b610a73565b60405161036b9190612f11565b60405180910390f35b34801561038057600080fd5b5061039b60048036038101906103969190612938565b610a85565b005b3480156103a957600080fd5b506103c460048036038101906103bf91906129a4565b610ae2565b6040516103d19190612eaa565b60405180910390f35b3480156103e657600080fd5b5061040160048036038101906103fc91906126fe565b610b94565b60405161040e91906131f4565b60405180910390f35b34801561042357600080fd5b5061042c610c4c565b005b34801561043a57600080fd5b50610443610c60565b6040516104509190612eaa565b60405180910390f35b34801561046557600080fd5b5061046e610c8a565b60405161047b9190612f92565b60405180910390f35b34801561049057600080fd5b506104ab60048036038101906104a69190612ace565b610d1c565b005b3480156104b957600080fd5b506104d460048036038101906104cf919061282d565b610e29565b005b3480156104e257600080fd5b506104fd60048036038101906104f891906126fe565b610e3f565b005b34801561050b57600080fd5b50610526600480360381019061052191906127b2565b610e8b565b005b34801561053457600080fd5b5061054f600480360381019061054a91906126fe565b610eed565b005b34801561055d57600080fd5b50610578600480360381019061057391906129a4565b6110e1565b6040516105859190612f92565b60405180910390f35b6105a860048036038101906105a39190612a4e565b611149565b005b3480156105b657600080fd5b506105d160048036038101906105cc91906129f6565b611258565b005b3480156105df57600080fd5b506105fa60048036038101906105f59190612727565b6112c8565b6040516106079190612f11565b60405180910390f35b34801561061c57600080fd5b50610637600480360381019061063291906126fe565b61135c565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061070457507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806107145750610713826113e0565b5b9050919050565b61072361144a565b8060ca9080519060200190610739929190612428565b5050565b60606065805461074c90613473565b80601f016020809104026020016040519081016040528092919081815260200182805461077890613473565b80156107c55780601f1061079a576101008083540402835291602001916107c5565b820191906000526020600020905b8154815290600101906020018083116107a857829003601f168201915b5050505050905090565b60006107da826114c8565b6069600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061082082610ae2565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610891576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088890613194565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108b0611513565b73ffffffffffffffffffffffffffffffffffffffff1614806108df57506108de816108d9611513565b6112c8565b5b61091e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610915906130f4565b60405180910390fd5b610928838361151b565b505050565b6097602052806000526040600020600091509050805461094c90613473565b80601f016020809104026020016040519081016040528092919081815260200182805461097890613473565b80156109c55780601f1061099a576101008083540402835291602001916109c5565b820191906000526020600020905b8154815290600101906020018083116109a857829003601f168201915b505050505081565b6109de6109d8611513565b826115d4565b610a1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a14906131d4565b60405180910390fd5b610a28838383611669565b505050565b60cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a6e83838360405180602001604052806000815250610e8b565b505050565b6000610a7e826118d0565b9050919050565b600060019054906101000a900460ff16610ad4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acb906131b4565b60405180910390fd5b610ade828261193c565b5050565b6000806067600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8290613174565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfc906130b4565b60405180910390fd5b606860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610c5461144a565b610c5e6000611999565b565b6000609860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060668054610c9990613473565b80601f0160208091040260200160405190810160405280929190818152602001828054610cc590613473565b8015610d125780601f10610ce757610100808354040283529160200191610d12565b820191906000526020600020905b815481529060010190602001808311610cf557829003601f168201915b5050505050905090565b816000610d27611513565b905060008173ffffffffffffffffffffffffffffffffffffffff16610d4b84610ae2565b73ffffffffffffffffffffffffffffffffffffffff1614905080610da4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9b90613134565b60405180910390fd5b83609760008781526020019081526020016000209080519060200190610dcb9291906124ae565b5084610dd5611513565b73ffffffffffffffffffffffffffffffffffffffff167fabddf73bfc8efbf8287a09ea355e43cf6c0c22880ce0470affeba5271c0a769486604051610e1a9190612f55565b60405180910390a35050505050565b610e3b610e34611513565b8383611a5f565b5050565b610e4761144a565b8060cb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610e9c610e96611513565b836115d4565b610edb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed2906131d4565b60405180910390fd5b610ee784848484611bcc565b50505050565b60008060019054906101000a900460ff16159050808015610f1e5750600160008054906101000a900460ff1660ff16105b80610f4b5750610f2d30611c28565b158015610f4a5750600160008054906101000a900460ff1660ff16145b5b610f8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f81906130d4565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610fc7576001600060016101000a81548160ff0219169083151502179055505b61103b6040518060400160405280601581526020017f4465536369205265736561726368204f626a65637400000000000000000000008152506040518060400160405280600a81526020017f44655363692d4e6f646500000000000000000000000000000000000000000000815250610a85565b611043611c4b565b8160cb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080156110dd5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516110d49190612f77565b60405180910390a15b5050565b60606110ec826114c8565b60006110f6611ca4565b905060008151116111165760405180602001604052806000815250611141565b8061112084611d36565b604051602001611131929190612e86565b6040516020818303038152906040525b915050919050565b600060cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff1663da4a984234868a6040518463ffffffff1660e01b81526004016111ae929190612f2c565b6020604051808303818588803b1580156111c757600080fd5b505af11580156111db573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061120091906129cd565b9050808314611244576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123b90613034565b60405180910390fd5b61124f878787611258565b50505050505050565b6000611262611513565b905060008490506112738282611ee3565b6112c18585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050610d1c565b5050505050565b6000606a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61136461144a565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156113d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cb90612fd4565b60405180910390fd5b6113dd81611999565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b611452611513565b73ffffffffffffffffffffffffffffffffffffffff16611470610c60565b73ffffffffffffffffffffffffffffffffffffffff16146114c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bd90613154565b60405180910390fd5b565b6114d1816118d0565b611510576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150790613174565b60405180910390fd5b50565b600033905090565b816069600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661158e83610ae2565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806115e083610ae2565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611622575061162181856112c8565b5b8061166057508373ffffffffffffffffffffffffffffffffffffffff16611648846107cf565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661168982610ae2565b73ffffffffffffffffffffffffffffffffffffffff16146116df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d690612ff4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561174f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174690613054565b60405180910390fd5b61175a838383611f01565b61176560008261151b565b6001606860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117b59190613360565b925050819055506001606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461180c91906132d9565b92505081905550816067600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46118cb838383611f75565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff166067600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600060019054906101000a900460ff1661198b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611982906131b4565b60405180910390fd5b6119958282611f7a565b5050565b6000609860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081609860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611ace576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac590613074565b60405180910390fd5b80606a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611bbf9190612f11565b60405180910390a3505050565b611bd7848484611669565b611be384848484611ffb565b611c22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1990612fb4565b60405180910390fd5b50505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611c9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c91906131b4565b60405180910390fd5b611ca2612192565b565b606060ca8054611cb390613473565b80601f0160208091040260200160405190810160405280929190818152602001828054611cdf90613473565b8015611d2c5780601f10611d0157610100808354040283529160200191611d2c565b820191906000526020600020905b815481529060010190602001808311611d0f57829003601f168201915b5050505050905090565b60606000821415611d7e576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611ede565b600082905060005b60008214611db0578080611d99906134d6565b915050600a82611da9919061332f565b9150611d86565b60008167ffffffffffffffff811115611df2577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611e245781602001600182028036833780820191505090505b5090505b60008514611ed757600182611e3d9190613360565b9150600a85611e4c919061351f565b6030611e5891906132d9565b60f81b818381518110611e94577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611ed0919061332f565b9450611e28565b8093505050505b919050565b611efd8282604051806020016040528060008152506121f3565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611f70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6790613094565b60405180910390fd5b505050565b505050565b600060019054906101000a900460ff16611fc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc0906131b4565b60405180910390fd5b8160659080519060200190611fdf929190612428565b508060669080519060200190611ff6929190612428565b505050565b600061201c8473ffffffffffffffffffffffffffffffffffffffff16611c28565b15612185578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612045611513565b8786866040518563ffffffff1660e01b81526004016120679493929190612ec5565b602060405180830381600087803b15801561208157600080fd5b505af19250505080156120b257506040513d601f19601f820116820180604052508101906120af91906128ce565b60015b612135573d80600081146120e2576040519150601f19603f3d011682016040523d82523d6000602084013e6120e7565b606091505b5060008151141561212d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212490612fb4565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505061218a565b600190505b949350505050565b600060019054906101000a900460ff166121e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d8906131b4565b60405180910390fd5b6121f16121ec611513565b611999565b565b6121fd838361224e565b61220a6000848484611ffb565b612249576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224090612fb4565b60405180910390fd5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b590613114565b60405180910390fd5b6122c7816118d0565b15612307576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122fe90613014565b60405180910390fd5b61231360008383611f01565b6001606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461236391906132d9565b92505081905550816067600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461242460008383611f75565b5050565b82805461243490613473565b90600052602060002090601f016020900481019282612456576000855561249d565b82601f1061246f57805160ff191683800117855561249d565b8280016001018555821561249d579182015b8281111561249c578251825591602001919060010190612481565b5b5090506124aa9190612534565b5090565b8280546124ba90613473565b90600052602060002090601f0160209004810192826124dc5760008555612523565b82601f106124f557805160ff1916838001178555612523565b82800160010185558215612523579182015b82811115612522578251825591602001919060010190612507565b5b5090506125309190612534565b5090565b5b8082111561254d576000816000905550600101612535565b5090565b600061256461255f84613234565b61320f565b90508281526020810184848401111561257c57600080fd5b612587848285613431565b509392505050565b60006125a261259d84613265565b61320f565b9050828152602081018484840111156125ba57600080fd5b6125c5848285613431565b509392505050565b6000813590506125dc81613a7b565b92915050565b6000813590506125f181613a92565b92915050565b60008135905061260681613aa9565b92915050565b60008135905061261b81613ac0565b92915050565b60008151905061263081613ac0565b92915050565b60008083601f84011261264857600080fd5b8235905067ffffffffffffffff81111561266157600080fd5b60208301915083600182028301111561267957600080fd5b9250929050565b600082601f83011261269157600080fd5b81356126a1848260208601612551565b91505092915050565b600082601f8301126126bb57600080fd5b81356126cb84826020860161258f565b91505092915050565b6000813590506126e381613ad7565b92915050565b6000815190506126f881613ad7565b92915050565b60006020828403121561271057600080fd5b600061271e848285016125cd565b91505092915050565b6000806040838503121561273a57600080fd5b6000612748858286016125cd565b9250506020612759858286016125cd565b9150509250929050565b60008060006060848603121561277857600080fd5b6000612786868287016125cd565b9350506020612797868287016125cd565b92505060406127a8868287016126d4565b9150509250925092565b600080600080608085870312156127c857600080fd5b60006127d6878288016125cd565b94505060206127e7878288016125cd565b93505060406127f8878288016126d4565b925050606085013567ffffffffffffffff81111561281557600080fd5b61282187828801612680565b91505092959194509250565b6000806040838503121561284057600080fd5b600061284e858286016125cd565b925050602061285f858286016125e2565b9150509250929050565b6000806040838503121561287c57600080fd5b600061288a858286016125cd565b925050602061289b858286016126d4565b9150509250929050565b6000602082840312156128b757600080fd5b60006128c58482850161260c565b91505092915050565b6000602082840312156128e057600080fd5b60006128ee84828501612621565b91505092915050565b60006020828403121561290957600080fd5b600082013567ffffffffffffffff81111561292357600080fd5b61292f848285016126aa565b91505092915050565b6000806040838503121561294b57600080fd5b600083013567ffffffffffffffff81111561296557600080fd5b612971858286016126aa565b925050602083013567ffffffffffffffff81111561298e57600080fd5b61299a858286016126aa565b9150509250929050565b6000602082840312156129b657600080fd5b60006129c4848285016126d4565b91505092915050565b6000602082840312156129df57600080fd5b60006129ed848285016126e9565b91505092915050565b600080600060408486031215612a0b57600080fd5b6000612a19868287016126d4565b935050602084013567ffffffffffffffff811115612a3657600080fd5b612a4286828701612636565b92509250509250925092565b600080600080600060808688031215612a6657600080fd5b6000612a74888289016126d4565b955050602086013567ffffffffffffffff811115612a9157600080fd5b612a9d88828901612636565b94509450506040612ab0888289016125f7565b9250506060612ac1888289016126d4565b9150509295509295909350565b60008060408385031215612ae157600080fd5b6000612aef858286016126d4565b925050602083013567ffffffffffffffff811115612b0c57600080fd5b612b1885828601612680565b9150509250929050565b612b2b81613394565b82525050565b612b3a816133a6565b82525050565b612b49816133b2565b82525050565b6000612b5a82613296565b612b6481856132ac565b9350612b74818560208601613440565b612b7d8161360c565b840191505092915050565b612b918161341f565b82525050565b6000612ba2826132a1565b612bac81856132bd565b9350612bbc818560208601613440565b612bc58161360c565b840191505092915050565b6000612bdb826132a1565b612be581856132ce565b9350612bf5818560208601613440565b80840191505092915050565b6000612c0e6032836132bd565b9150612c198261361d565b604082019050919050565b6000612c316026836132bd565b9150612c3c8261366c565b604082019050919050565b6000612c546025836132bd565b9150612c5f826136bb565b604082019050919050565b6000612c77601c836132bd565b9150612c828261370a565b602082019050919050565b6000612c9a600f836132bd565b9150612ca582613733565b602082019050919050565b6000612cbd6024836132bd565b9150612cc88261375c565b604082019050919050565b6000612ce06019836132bd565b9150612ceb826137ab565b602082019050919050565b6000612d03600b836132bd565b9150612d0e826137d4565b602082019050919050565b6000612d266029836132bd565b9150612d31826137fd565b604082019050919050565b6000612d49602e836132bd565b9150612d548261384c565b604082019050919050565b6000612d6c603e836132bd565b9150612d778261389b565b604082019050919050565b6000612d8f6020836132bd565b9150612d9a826138ea565b602082019050919050565b6000612db2600d836132bd565b9150612dbd82613913565b602082019050919050565b6000612dd56020836132bd565b9150612de08261393c565b602082019050919050565b6000612df86018836132bd565b9150612e0382613965565b602082019050919050565b6000612e1b6021836132bd565b9150612e268261398e565b604082019050919050565b6000612e3e602b836132bd565b9150612e49826139dd565b604082019050919050565b6000612e61602e836132bd565b9150612e6c82613a2c565b604082019050919050565b612e8081613408565b82525050565b6000612e928285612bd0565b9150612e9e8284612bd0565b91508190509392505050565b6000602082019050612ebf6000830184612b22565b92915050565b6000608082019050612eda6000830187612b22565b612ee76020830186612b22565b612ef46040830185612e77565b8181036060830152612f068184612b4f565b905095945050505050565b6000602082019050612f266000830184612b31565b92915050565b6000604082019050612f416000830185612b40565b612f4e6020830184612e77565b9392505050565b60006020820190508181036000830152612f6f8184612b4f565b905092915050565b6000602082019050612f8c6000830184612b88565b92915050565b60006020820190508181036000830152612fac8184612b97565b905092915050565b60006020820190508181036000830152612fcd81612c01565b9050919050565b60006020820190508181036000830152612fed81612c24565b9050919050565b6000602082019050818103600083015261300d81612c47565b9050919050565b6000602082019050818103600083015261302d81612c6a565b9050919050565b6000602082019050818103600083015261304d81612c8d565b9050919050565b6000602082019050818103600083015261306d81612cb0565b9050919050565b6000602082019050818103600083015261308d81612cd3565b9050919050565b600060208201905081810360008301526130ad81612cf6565b9050919050565b600060208201905081810360008301526130cd81612d19565b9050919050565b600060208201905081810360008301526130ed81612d3c565b9050919050565b6000602082019050818103600083015261310d81612d5f565b9050919050565b6000602082019050818103600083015261312d81612d82565b9050919050565b6000602082019050818103600083015261314d81612da5565b9050919050565b6000602082019050818103600083015261316d81612dc8565b9050919050565b6000602082019050818103600083015261318d81612deb565b9050919050565b600060208201905081810360008301526131ad81612e0e565b9050919050565b600060208201905081810360008301526131cd81612e31565b9050919050565b600060208201905081810360008301526131ed81612e54565b9050919050565b60006020820190506132096000830184612e77565b92915050565b600061321961322a565b905061322582826134a5565b919050565b6000604051905090565b600067ffffffffffffffff82111561324f5761324e6135dd565b5b6132588261360c565b9050602081019050919050565b600067ffffffffffffffff8211156132805761327f6135dd565b5b6132898261360c565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006132e482613408565b91506132ef83613408565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561332457613323613550565b5b828201905092915050565b600061333a82613408565b915061334583613408565b9250826133555761335461357f565b5b828204905092915050565b600061336b82613408565b915061337683613408565b92508282101561338957613388613550565b5b828203905092915050565b600061339f826133e8565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061342a82613412565b9050919050565b82818337600083830152505050565b60005b8381101561345e578082015181840152602081019050613443565b8381111561346d576000848401525b50505050565b6000600282049050600182168061348b57607f821691505b6020821081141561349f5761349e6135ae565b5b50919050565b6134ae8261360c565b810181811067ffffffffffffffff821117156134cd576134cc6135dd565b5b80604052505050565b60006134e182613408565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561351457613513613550565b5b600182019050919050565b600061352a82613408565b915061353583613408565b9250826135455761354461357f565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f556e657870656374656420645049440000000000000000000000000000000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f6e6f207472616e73666572000000000000000000000000000000000000000000600082015250565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4e6f207065726d697373696f6e00000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206e6f7220617070726f766564000000000000000000000000000000000000602082015250565b613a8481613394565b8114613a8f57600080fd5b50565b613a9b816133a6565b8114613aa657600080fd5b50565b613ab2816133b2565b8114613abd57600080fd5b50565b613ac9816133bc565b8114613ad457600080fd5b50565b613ae081613408565b8114613aeb57600080fd5b5056fea2646970667358221220fd45769375da65a7b72b174103a35892b9105a217010be05d215a49590f1c9f564736f6c63430008040033"; -var isSuperArgs = function (xs) { return xs.length > 1; }; -var ResearchObject__factory = /** @class */ (function (_super) { - __extends(ResearchObject__factory, _super); - function ResearchObject__factory() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - var _this = this; - if (isSuperArgs(args)) { - _this = _super.apply(this, args) || this; - } - else { - _this = _super.call(this, _abi, _bytecode, args[0]) || this; - } - _this.contractName = "ResearchObject"; - return _this; - } - ResearchObject__factory.prototype.deploy = function (overrides) { - return _super.prototype.deploy.call(this, overrides || {}); - }; - ResearchObject__factory.prototype.getDeployTransaction = function (overrides) { - return _super.prototype.getDeployTransaction.call(this, overrides || {}); - }; - ResearchObject__factory.prototype.attach = function (address) { - return _super.prototype.attach.call(this, address); - }; - ResearchObject__factory.prototype.connect = function (signer) { - return _super.prototype.connect.call(this, signer); - }; - ResearchObject__factory.createInterface = function () { - return new ethers_1.utils.Interface(_abi); - }; - ResearchObject__factory.connect = function (address, signerOrProvider) { - return new ethers_1.Contract(address, _abi, signerOrProvider); - }; - ResearchObject__factory.bytecode = _bytecode; - ResearchObject__factory.abi = _abi; - return ResearchObject__factory; -}(ethers_1.ContractFactory)); -exports.ResearchObject__factory = ResearchObject__factory; diff --git a/desci-contracts/typechain-types/factories/TestERC721__factory.js b/desci-contracts/typechain-types/factories/TestERC721__factory.js deleted file mode 100644 index 89d7ac74f..000000000 --- a/desci-contracts/typechain-types/factories/TestERC721__factory.js +++ /dev/null @@ -1,425 +0,0 @@ -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -exports.__esModule = true; -exports.TestERC721__factory = void 0; -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -var ethers_1 = require("ethers"); -var _abi = [ - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string" - }, - { - internalType: "string", - name: "symbol", - type: "string" - }, - ], - stateMutability: "nonpayable", - type: "constructor" - }, - { - 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: 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: [ - { - 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: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "getApproved", - outputs: [ - { - internalType: "address", - name: "", - type: "address" - }, - ], - 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: [ - { - internalType: "address", - name: "to", - type: "address" - }, - ], - name: "mint", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [], - name: "name", - outputs: [ - { - internalType: "string", - name: "", - type: "string" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "ownerOf", - outputs: [ - { - internalType: "address", - name: "", - type: "address" - }, - ], - stateMutability: "view", - 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: "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: "tokenId", - 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" - }, -]; -var _bytecode = "0x608060405260006006553480156200001657600080fd5b5060405162002b8038038062002b8083398181016040528101906200003c91906200019c565b81818160009080519060200190620000569291906200007a565b5080600190805190602001906200006f9291906200007a565b50505050506200037f565b8280546200008890620002a4565b90600052602060002090601f016020900481019282620000ac5760008555620000f8565b82601f10620000c757805160ff1916838001178555620000f8565b82800160010185558215620000f8579182015b82811115620000f7578251825591602001919060010190620000da565b5b5090506200010791906200010b565b5090565b5b80821115620001265760008160009055506001016200010c565b5090565b6000620001416200013b8462000238565b6200020f565b9050828152602081018484840111156200015a57600080fd5b620001678482856200026e565b509392505050565b600082601f8301126200018157600080fd5b8151620001938482602086016200012a565b91505092915050565b60008060408385031215620001b057600080fd5b600083015167ffffffffffffffff811115620001cb57600080fd5b620001d9858286016200016f565b925050602083015167ffffffffffffffff811115620001f757600080fd5b62000205858286016200016f565b9150509250929050565b60006200021b6200022e565b9050620002298282620002da565b919050565b6000604051905090565b600067ffffffffffffffff8211156200025657620002556200033f565b5b62000261826200036e565b9050602081019050919050565b60005b838110156200028e57808201518184015260208101905062000271565b838111156200029e576000848401525b50505050565b60006002820490506001821680620002bd57607f821691505b60208210811415620002d457620002d362000310565b5b50919050565b620002e5826200036e565b810181811067ffffffffffffffff821117156200030757620003066200033f565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6127f1806200038f6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80636a6278421161008c578063a22cb46511610066578063a22cb4651461025b578063b88d4fde14610277578063c87b56dd14610293578063e985e9c5146102c3576100ea565b80636a627842146101f157806370a082311461020d57806395d89b411461023d576100ea565b8063095ea7b3116100c8578063095ea7b31461016d57806323b872dd1461018957806342842e0e146101a55780636352211e146101c1576100ea565b806301ffc9a7146100ef57806306fdde031461011f578063081812fc1461013d575b600080fd5b61010960048036038101906101049190611c60565b6102f3565b6040516101169190611fb7565b60405180910390f35b6101276103d5565b6040516101349190611fd2565b60405180910390f35b61015760048036038101906101529190611cb2565b610467565b6040516101649190611f50565b60405180910390f35b61018760048036038101906101829190611c24565b6104ad565b005b6101a3600480360381019061019e9190611b1e565b6105c5565b005b6101bf60048036038101906101ba9190611b1e565b610625565b005b6101db60048036038101906101d69190611cb2565b610645565b6040516101e89190611f50565b60405180910390f35b61020b60048036038101906102069190611ab9565b6106cc565b005b61022760048036038101906102229190611ab9565b6106ef565b6040516102349190612154565b60405180910390f35b6102456107a7565b6040516102529190611fd2565b60405180910390f35b61027560048036038101906102709190611be8565b610839565b005b610291600480360381019061028c9190611b6d565b61084f565b005b6102ad60048036038101906102a89190611cb2565b6108b1565b6040516102ba9190611fd2565b60405180910390f35b6102dd60048036038101906102d89190611ae2565b610919565b6040516102ea9190611fb7565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103be57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806103ce57506103cd826109ad565b5b9050919050565b6060600080546103e490612348565b80601f016020809104026020016040519081016040528092919081815260200182805461041090612348565b801561045d5780601f106104325761010080835404028352916020019161045d565b820191906000526020600020905b81548152906001019060200180831161044057829003601f168201915b5050505050905090565b600061047282610a17565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006104b882610645565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610529576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161052090612114565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610548610a62565b73ffffffffffffffffffffffffffffffffffffffff161480610577575061057681610571610a62565b610919565b5b6105b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ad90612134565b60405180910390fd5b6105c08383610a6a565b505050565b6105d66105d0610a62565b82610b23565b610615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060c90611ff4565b60405180910390fd5b610620838383610bb8565b505050565b6106408383836040518060200160405280600081525061084f565b505050565b60008061065183610eb2565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156106c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ba906120f4565b60405180910390fd5b80915050919050565b6106ec81600660008154809291906106e3906123ab565b91905055610eef565b50565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610760576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610757906120b4565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600180546107b690612348565b80601f01602080910402602001604051908101604052809291908181526020018280546107e290612348565b801561082f5780601f106108045761010080835404028352916020019161082f565b820191906000526020600020905b81548152906001019060200180831161081257829003601f168201915b5050505050905090565b61084b610844610a62565b8383610f0d565b5050565b61086061085a610a62565b83610b23565b61089f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089690611ff4565b60405180910390fd5b6108ab8484848461107a565b50505050565b60606108bc82610a17565b60006108c66110d6565b905060008151116108e65760405180602001604052806000815250610911565b806108f0846110ed565b604051602001610901929190611f2c565b6040516020818303038152906040525b915050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610a2081611211565b610a5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a56906120f4565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16610add83610645565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610b2f83610645565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610b715750610b708185610919565b5b80610baf57508373ffffffffffffffffffffffffffffffffffffffff16610b9784610467565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16610bd882610645565b73ffffffffffffffffffffffffffffffffffffffff1614610c2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2590612034565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9590612074565b60405180910390fd5b610cab8383836001611252565b8273ffffffffffffffffffffffffffffffffffffffff16610ccb82610645565b73ffffffffffffffffffffffffffffffffffffffff1614610d21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1890612034565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4610ead8383836001611378565b505050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b610f0982826040518060200160405280600081525061137e565b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7390612094565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161106d9190611fb7565b60405180910390a3505050565b611085848484610bb8565b611091848484846113d9565b6110d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c790612014565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b6060600060016110fc84611570565b01905060008167ffffffffffffffff811115611141577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156111735781602001600182028036833780820191505090505b509050600082602001820190505b600115611206578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816111f0577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b049450600085141561120157611206565b611181565b819350505050919050565b60008073ffffffffffffffffffffffffffffffffffffffff1661123383610eb2565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600181111561137257600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146112e65780600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546112de919061225e565b925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146113715780600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113699190612208565b925050819055505b5b50505050565b50505050565b61138883836117a7565b61139560008484846113d9565b6113d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cb90612014565b60405180910390fd5b505050565b60006113fa8473ffffffffffffffffffffffffffffffffffffffff166119c5565b15611563578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611423610a62565b8786866040518563ffffffff1660e01b81526004016114459493929190611f6b565b602060405180830381600087803b15801561145f57600080fd5b505af192505050801561149057506040513d601f19601f8201168201806040525081019061148d9190611c89565b60015b611513573d80600081146114c0576040519150601f19603f3d011682016040523d82523d6000602084013e6114c5565b606091505b5060008151141561150b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150290612014565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611568565b600190505b949350505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106115f4577a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083816115ea577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b0492506040810190505b6d04ee2d6d415b85acef81000000008310611657576d04ee2d6d415b85acef8100000000838161164d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b0492506020810190505b662386f26fc1000083106116ac57662386f26fc1000083816116a2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b0492506010810190505b6305f5e10083106116fb576305f5e10083816116f1577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b0492506008810190505b612710831061174657612710838161173c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b0492506004810190505b6064831061178f5760648381611785577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b0492506002810190505b600a831061179e576001810190505b80915050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180e906120d4565b60405180910390fd5b61182081611211565b15611860576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185790612054565b60405180910390fd5b61186e600083836001611252565b61187781611211565b156118b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ae90612054565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46119c1600083836001611378565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60006119fb6119f684612194565b61216f565b905082815260208101848484011115611a1357600080fd5b611a1e848285612306565b509392505050565b600081359050611a358161275f565b92915050565b600081359050611a4a81612776565b92915050565b600081359050611a5f8161278d565b92915050565b600081519050611a748161278d565b92915050565b600082601f830112611a8b57600080fd5b8135611a9b8482602086016119e8565b91505092915050565b600081359050611ab3816127a4565b92915050565b600060208284031215611acb57600080fd5b6000611ad984828501611a26565b91505092915050565b60008060408385031215611af557600080fd5b6000611b0385828601611a26565b9250506020611b1485828601611a26565b9150509250929050565b600080600060608486031215611b3357600080fd5b6000611b4186828701611a26565b9350506020611b5286828701611a26565b9250506040611b6386828701611aa4565b9150509250925092565b60008060008060808587031215611b8357600080fd5b6000611b9187828801611a26565b9450506020611ba287828801611a26565b9350506040611bb387828801611aa4565b925050606085013567ffffffffffffffff811115611bd057600080fd5b611bdc87828801611a7a565b91505092959194509250565b60008060408385031215611bfb57600080fd5b6000611c0985828601611a26565b9250506020611c1a85828601611a3b565b9150509250929050565b60008060408385031215611c3757600080fd5b6000611c4585828601611a26565b9250506020611c5685828601611aa4565b9150509250929050565b600060208284031215611c7257600080fd5b6000611c8084828501611a50565b91505092915050565b600060208284031215611c9b57600080fd5b6000611ca984828501611a65565b91505092915050565b600060208284031215611cc457600080fd5b6000611cd284828501611aa4565b91505092915050565b611ce481612292565b82525050565b611cf3816122a4565b82525050565b6000611d04826121c5565b611d0e81856121db565b9350611d1e818560208601612315565b611d2781612481565b840191505092915050565b6000611d3d826121d0565b611d4781856121ec565b9350611d57818560208601612315565b611d6081612481565b840191505092915050565b6000611d76826121d0565b611d8081856121fd565b9350611d90818560208601612315565b80840191505092915050565b6000611da9602d836121ec565b9150611db482612492565b604082019050919050565b6000611dcc6032836121ec565b9150611dd7826124e1565b604082019050919050565b6000611def6025836121ec565b9150611dfa82612530565b604082019050919050565b6000611e12601c836121ec565b9150611e1d8261257f565b602082019050919050565b6000611e356024836121ec565b9150611e40826125a8565b604082019050919050565b6000611e586019836121ec565b9150611e63826125f7565b602082019050919050565b6000611e7b6029836121ec565b9150611e8682612620565b604082019050919050565b6000611e9e6020836121ec565b9150611ea98261266f565b602082019050919050565b6000611ec16018836121ec565b9150611ecc82612698565b602082019050919050565b6000611ee46021836121ec565b9150611eef826126c1565b604082019050919050565b6000611f07603d836121ec565b9150611f1282612710565b604082019050919050565b611f26816122fc565b82525050565b6000611f388285611d6b565b9150611f448284611d6b565b91508190509392505050565b6000602082019050611f656000830184611cdb565b92915050565b6000608082019050611f806000830187611cdb565b611f8d6020830186611cdb565b611f9a6040830185611f1d565b8181036060830152611fac8184611cf9565b905095945050505050565b6000602082019050611fcc6000830184611cea565b92915050565b60006020820190508181036000830152611fec8184611d32565b905092915050565b6000602082019050818103600083015261200d81611d9c565b9050919050565b6000602082019050818103600083015261202d81611dbf565b9050919050565b6000602082019050818103600083015261204d81611de2565b9050919050565b6000602082019050818103600083015261206d81611e05565b9050919050565b6000602082019050818103600083015261208d81611e28565b9050919050565b600060208201905081810360008301526120ad81611e4b565b9050919050565b600060208201905081810360008301526120cd81611e6e565b9050919050565b600060208201905081810360008301526120ed81611e91565b9050919050565b6000602082019050818103600083015261210d81611eb4565b9050919050565b6000602082019050818103600083015261212d81611ed7565b9050919050565b6000602082019050818103600083015261214d81611efa565b9050919050565b60006020820190506121696000830184611f1d565b92915050565b600061217961218a565b9050612185828261237a565b919050565b6000604051905090565b600067ffffffffffffffff8211156121af576121ae612452565b5b6121b882612481565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000612213826122fc565b915061221e836122fc565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612253576122526123f4565b5b828201905092915050565b6000612269826122fc565b9150612274836122fc565b925082821015612287576122866123f4565b5b828203905092915050565b600061229d826122dc565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015612333578082015181840152602081019050612318565b83811115612342576000848401525b50505050565b6000600282049050600182168061236057607f821691505b6020821081141561237457612373612423565b5b50919050565b61238382612481565b810181811067ffffffffffffffff821117156123a2576123a1612452565b5b80604052505050565b60006123b6826122fc565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156123e9576123e86123f4565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b61276881612292565b811461277357600080fd5b50565b61277f816122a4565b811461278a57600080fd5b50565b612796816122b0565b81146127a157600080fd5b50565b6127ad816122fc565b81146127b857600080fd5b5056fea264697066735822122081cc551bc6d29594eaf36ece0da52af221587575fe93fcb37decc025948e4fc364736f6c63430008040033"; -var isSuperArgs = function (xs) { return xs.length > 1; }; -var TestERC721__factory = /** @class */ (function (_super) { - __extends(TestERC721__factory, _super); - function TestERC721__factory() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - var _this = this; - if (isSuperArgs(args)) { - _this = _super.apply(this, args) || this; - } - else { - _this = _super.call(this, _abi, _bytecode, args[0]) || this; - } - _this.contractName = "TestERC721"; - return _this; - } - TestERC721__factory.prototype.deploy = function (name, symbol, overrides) { - return _super.prototype.deploy.call(this, name, symbol, overrides || {}); - }; - TestERC721__factory.prototype.getDeployTransaction = function (name, symbol, overrides) { - return _super.prototype.getDeployTransaction.call(this, name, symbol, overrides || {}); - }; - TestERC721__factory.prototype.attach = function (address) { - return _super.prototype.attach.call(this, address); - }; - TestERC721__factory.prototype.connect = function (signer) { - return _super.prototype.connect.call(this, signer); - }; - TestERC721__factory.createInterface = function () { - return new ethers_1.utils.Interface(_abi); - }; - TestERC721__factory.connect = function (address, signerOrProvider) { - return new ethers_1.Contract(address, _abi, signerOrProvider); - }; - TestERC721__factory.bytecode = _bytecode; - TestERC721__factory.abi = _abi; - return TestERC721__factory; -}(ethers_1.ContractFactory)); -exports.TestERC721__factory = TestERC721__factory; diff --git a/desci-contracts/typechain-types/factories/VersionedERC721V2__factory.js b/desci-contracts/typechain-types/factories/VersionedERC721V2__factory.js deleted file mode 100644 index da52e72d3..000000000 --- a/desci-contracts/typechain-types/factories/VersionedERC721V2__factory.js +++ /dev/null @@ -1,508 +0,0 @@ -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -exports.__esModule = true; -exports.VersionedERC721V2__factory = void 0; -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -var ethers_1 = require("ethers"); -var _abi = [ - { - 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: "uint8", - name: "version", - type: "uint8" - }, - ], - name: "Initialized", - 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" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "_from", - type: "address" - }, - { - indexed: true, - internalType: "uint256", - name: "_uuid", - type: "uint256" - }, - { - indexed: false, - internalType: "bytes", - name: "_cid", - type: "bytes" - }, - ], - name: "VersionPush", - type: "event" - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string" - }, - { - internalType: "string", - name: "symbol", - type: "string" - }, - ], - name: "__VersionedERC721V2_init", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "", - type: "uint256" - }, - ], - name: "_metadata", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes" - }, - ], - 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: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "exists", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "getApproved", - outputs: [ - { - internalType: "address", - name: "", - type: "address" - }, - ], - 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: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "ownerOf", - outputs: [ - { - internalType: "address", - name: "", - type: "address" - }, - ], - stateMutability: "view", - 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: "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: "tokenId", - 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: "uint256", - name: "tokenId", - type: "uint256" - }, - { - internalType: "bytes", - name: "cid", - type: "bytes" - }, - ], - name: "updateMetadata", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, -]; -var _bytecode = "0x608060405234801561001057600080fd5b506128f0806100206000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c80636352211e116100a2578063a22cb46511610071578063a22cb465146102dc578063af3ba9c1146102f8578063b88d4fde14610314578063c87b56dd14610330578063e985e9c5146103605761010b565b80636352211e1461024257806370a082311461027257806395d89b41146102a25780639a7fad40146102c05761010b565b806313859f46116100de57806313859f46146101aa57806323b872dd146101da57806342842e0e146101f65780634f558e79146102125761010b565b806301ffc9a71461011057806306fdde0314610140578063081812fc1461015e578063095ea7b31461018e575b600080fd5b61012a60048036038101906101259190611b95565b610390565b6040516101379190611fac565b60405180910390f35b610148610472565b6040516101559190611fe9565b60405180910390f35b61017860048036038101906101739190611c53565b610504565b6040516101859190611f45565b60405180910390f35b6101a860048036038101906101a39190611b59565b61054a565b005b6101c460048036038101906101bf9190611c53565b610662565b6040516101d19190611fc7565b60405180910390f35b6101f460048036038101906101ef9190611a53565b610702565b005b610210600480360381019061020b9190611a53565b610762565b005b61022c60048036038101906102279190611c53565b610782565b6040516102399190611fac565b60405180910390f35b61025c60048036038101906102579190611c53565b610794565b6040516102699190611f45565b60405180910390f35b61028c600480360381019061028791906119ee565b610846565b604051610299919061216b565b60405180910390f35b6102aa6108fe565b6040516102b79190611fe9565b60405180910390f35b6102da60048036038101906102d59190611c7c565b610990565b005b6102f660048036038101906102f19190611b1d565b610aae565b005b610312600480360381019061030d9190611be7565b610ac4565b005b61032e60048036038101906103299190611aa2565b610b21565b005b61034a60048036038101906103459190611c53565b610b83565b6040516103579190611fe9565b60405180910390f35b61037a60048036038101906103759190611a17565b610beb565b6040516103879190611fac565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061045b57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061046b575061046a82610c7f565b5b9050919050565b606060658054610481906123c1565b80601f01602080910402602001604051908101604052809291908181526020018280546104ad906123c1565b80156104fa5780601f106104cf576101008083540402835291602001916104fa565b820191906000526020600020905b8154815290600101906020018083116104dd57829003601f168201915b5050505050905090565b600061050f82610ce9565b6069600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061055582610794565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156105c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd9061210b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166105e5610d34565b73ffffffffffffffffffffffffffffffffffffffff16148061061457506106138161060e610d34565b610beb565b5b610653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064a906120ab565b60405180910390fd5b61065d8383610d3c565b505050565b60976020528060005260406000206000915090508054610681906123c1565b80601f01602080910402602001604051908101604052809291908181526020018280546106ad906123c1565b80156106fa5780601f106106cf576101008083540402835291602001916106fa565b820191906000526020600020905b8154815290600101906020018083116106dd57829003601f168201915b505050505081565b61071361070d610d34565b82610df5565b610752576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107499061214b565b60405180910390fd5b61075d838383610e8a565b505050565b61077d83838360405180602001604052806000815250610b21565b505050565b600061078d826110f1565b9050919050565b6000806067600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561083d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610834906120eb565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156108b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ae9061208b565b60405180910390fd5b606860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606066805461090d906123c1565b80601f0160208091040260200160405190810160405280929190818152602001828054610939906123c1565b80156109865780601f1061095b57610100808354040283529160200191610986565b820191906000526020600020905b81548152906001019060200180831161096957829003601f168201915b5050505050905090565b81600061099b610d34565b905060008173ffffffffffffffffffffffffffffffffffffffff166109bf84610794565b73ffffffffffffffffffffffffffffffffffffffff1614806109e757506109e68284610df5565b5b905080610a29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a20906120cb565b60405180910390fd5b83609760008781526020019081526020016000209080519060200190610a5092919061178c565b5084610a5a610d34565b73ffffffffffffffffffffffffffffffffffffffff167fabddf73bfc8efbf8287a09ea355e43cf6c0c22880ce0470affeba5271c0a769486604051610a9f9190611fc7565b60405180910390a35050505050565b610ac0610ab9610d34565b838361115d565b5050565b600060019054906101000a900460ff16610b13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0a9061212b565b60405180910390fd5b610b1d82826112ca565b5050565b610b32610b2c610d34565b83610df5565b610b71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b689061214b565b60405180910390fd5b610b7d84848484611327565b50505050565b6060610b8e82610ce9565b6000610b98611383565b90506000815111610bb85760405180602001604052806000815250610be3565b80610bc28461139a565b604051602001610bd3929190611f21565b6040516020818303038152906040525b915050919050565b6000606a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610cf2816110f1565b610d31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d28906120eb565b60405180910390fd5b50565b600033905090565b816069600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16610daf83610794565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610e0183610794565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610e435750610e428185610beb565b5b80610e8157508373ffffffffffffffffffffffffffffffffffffffff16610e6984610504565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16610eaa82610794565b73ffffffffffffffffffffffffffffffffffffffff1614610f00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef79061202b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f679061204b565b60405180910390fd5b610f7b838383611547565b610f86600082610d3c565b6001606860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610fd691906122d7565b925050819055506001606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461102d9190612250565b92505081905550816067600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46110ec83838361154c565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff166067600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156111cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c39061206b565b60405180910390fd5b80606a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516112bd9190611fac565b60405180910390a3505050565b600060019054906101000a900460ff16611319576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113109061212b565b60405180910390fd5b6113238282611551565b5050565b611332848484610e8a565b61133e848484846115d2565b61137d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113749061200b565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b606060008214156113e2576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611542565b600082905060005b600082146114145780806113fd90612424565b915050600a8261140d91906122a6565b91506113ea565b60008167ffffffffffffffff811115611456577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156114885781602001600182028036833780820191505090505b5090505b6000851461153b576001826114a191906122d7565b9150600a856114b0919061246d565b60306114bc9190612250565b60f81b8183815181106114f8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561153491906122a6565b945061148c565b8093505050505b919050565b505050565b505050565b600060019054906101000a900460ff166115a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115979061212b565b60405180910390fd5b81606590805190602001906115b6929190611812565b5080606690805190602001906115cd929190611812565b505050565b60006115f38473ffffffffffffffffffffffffffffffffffffffff16611769565b1561175c578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261161c610d34565b8786866040518563ffffffff1660e01b815260040161163e9493929190611f60565b602060405180830381600087803b15801561165857600080fd5b505af192505050801561168957506040513d601f19601f820116820180604052508101906116869190611bbe565b60015b61170c573d80600081146116b9576040519150601f19603f3d011682016040523d82523d6000602084013e6116be565b606091505b50600081511415611704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fb9061200b565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611761565b600190505b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b828054611798906123c1565b90600052602060002090601f0160209004810192826117ba5760008555611801565b82601f106117d357805160ff1916838001178555611801565b82800160010185558215611801579182015b828111156118005782518255916020019190600101906117e5565b5b50905061180e9190611898565b5090565b82805461181e906123c1565b90600052602060002090601f0160209004810192826118405760008555611887565b82601f1061185957805160ff1916838001178555611887565b82800160010185558215611887579182015b8281111561188657825182559160200191906001019061186b565b5b5090506118949190611898565b5090565b5b808211156118b1576000816000905550600101611899565b5090565b60006118c86118c3846121ab565b612186565b9050828152602081018484840111156118e057600080fd5b6118eb84828561237f565b509392505050565b6000611906611901846121dc565b612186565b90508281526020810184848401111561191e57600080fd5b61192984828561237f565b509392505050565b6000813590506119408161285e565b92915050565b60008135905061195581612875565b92915050565b60008135905061196a8161288c565b92915050565b60008151905061197f8161288c565b92915050565b600082601f83011261199657600080fd5b81356119a68482602086016118b5565b91505092915050565b600082601f8301126119c057600080fd5b81356119d08482602086016118f3565b91505092915050565b6000813590506119e8816128a3565b92915050565b600060208284031215611a0057600080fd5b6000611a0e84828501611931565b91505092915050565b60008060408385031215611a2a57600080fd5b6000611a3885828601611931565b9250506020611a4985828601611931565b9150509250929050565b600080600060608486031215611a6857600080fd5b6000611a7686828701611931565b9350506020611a8786828701611931565b9250506040611a98868287016119d9565b9150509250925092565b60008060008060808587031215611ab857600080fd5b6000611ac687828801611931565b9450506020611ad787828801611931565b9350506040611ae8878288016119d9565b925050606085013567ffffffffffffffff811115611b0557600080fd5b611b1187828801611985565b91505092959194509250565b60008060408385031215611b3057600080fd5b6000611b3e85828601611931565b9250506020611b4f85828601611946565b9150509250929050565b60008060408385031215611b6c57600080fd5b6000611b7a85828601611931565b9250506020611b8b858286016119d9565b9150509250929050565b600060208284031215611ba757600080fd5b6000611bb58482850161195b565b91505092915050565b600060208284031215611bd057600080fd5b6000611bde84828501611970565b91505092915050565b60008060408385031215611bfa57600080fd5b600083013567ffffffffffffffff811115611c1457600080fd5b611c20858286016119af565b925050602083013567ffffffffffffffff811115611c3d57600080fd5b611c49858286016119af565b9150509250929050565b600060208284031215611c6557600080fd5b6000611c73848285016119d9565b91505092915050565b60008060408385031215611c8f57600080fd5b6000611c9d858286016119d9565b925050602083013567ffffffffffffffff811115611cba57600080fd5b611cc685828601611985565b9150509250929050565b611cd98161230b565b82525050565b611ce88161231d565b82525050565b6000611cf98261220d565b611d038185612223565b9350611d1381856020860161238e565b611d1c8161255a565b840191505092915050565b6000611d3282612218565b611d3c8185612234565b9350611d4c81856020860161238e565b611d558161255a565b840191505092915050565b6000611d6b82612218565b611d758185612245565b9350611d8581856020860161238e565b80840191505092915050565b6000611d9e603283612234565b9150611da98261256b565b604082019050919050565b6000611dc1602583612234565b9150611dcc826125ba565b604082019050919050565b6000611de4602483612234565b9150611def82612609565b604082019050919050565b6000611e07601983612234565b9150611e1282612658565b602082019050919050565b6000611e2a602983612234565b9150611e3582612681565b604082019050919050565b6000611e4d603e83612234565b9150611e58826126d0565b604082019050919050565b6000611e70600d83612234565b9150611e7b8261271f565b602082019050919050565b6000611e93601883612234565b9150611e9e82612748565b602082019050919050565b6000611eb6602183612234565b9150611ec182612771565b604082019050919050565b6000611ed9602b83612234565b9150611ee4826127c0565b604082019050919050565b6000611efc602e83612234565b9150611f078261280f565b604082019050919050565b611f1b81612375565b82525050565b6000611f2d8285611d60565b9150611f398284611d60565b91508190509392505050565b6000602082019050611f5a6000830184611cd0565b92915050565b6000608082019050611f756000830187611cd0565b611f826020830186611cd0565b611f8f6040830185611f12565b8181036060830152611fa18184611cee565b905095945050505050565b6000602082019050611fc16000830184611cdf565b92915050565b60006020820190508181036000830152611fe18184611cee565b905092915050565b600060208201905081810360008301526120038184611d27565b905092915050565b6000602082019050818103600083015261202481611d91565b9050919050565b6000602082019050818103600083015261204481611db4565b9050919050565b6000602082019050818103600083015261206481611dd7565b9050919050565b6000602082019050818103600083015261208481611dfa565b9050919050565b600060208201905081810360008301526120a481611e1d565b9050919050565b600060208201905081810360008301526120c481611e40565b9050919050565b600060208201905081810360008301526120e481611e63565b9050919050565b6000602082019050818103600083015261210481611e86565b9050919050565b6000602082019050818103600083015261212481611ea9565b9050919050565b6000602082019050818103600083015261214481611ecc565b9050919050565b6000602082019050818103600083015261216481611eef565b9050919050565b60006020820190506121806000830184611f12565b92915050565b60006121906121a1565b905061219c82826123f3565b919050565b6000604051905090565b600067ffffffffffffffff8211156121c6576121c561252b565b5b6121cf8261255a565b9050602081019050919050565b600067ffffffffffffffff8211156121f7576121f661252b565b5b6122008261255a565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600061225b82612375565b915061226683612375565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561229b5761229a61249e565b5b828201905092915050565b60006122b182612375565b91506122bc83612375565b9250826122cc576122cb6124cd565b5b828204905092915050565b60006122e282612375565b91506122ed83612375565b925082821015612300576122ff61249e565b5b828203905092915050565b600061231682612355565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156123ac578082015181840152602081019050612391565b838111156123bb576000848401525b50505050565b600060028204905060018216806123d957607f821691505b602082108114156123ed576123ec6124fc565b5b50919050565b6123fc8261255a565b810181811067ffffffffffffffff8211171561241b5761241a61252b565b5b80604052505050565b600061242f82612375565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156124625761246161249e565b5b600182019050919050565b600061247882612375565b915061248383612375565b925082612493576124926124cd565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b7f4e6f207065726d697373696f6e00000000000000000000000000000000000000600082015250565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206e6f7220617070726f766564000000000000000000000000000000000000602082015250565b6128678161230b565b811461287257600080fd5b50565b61287e8161231d565b811461288957600080fd5b50565b61289581612329565b81146128a057600080fd5b50565b6128ac81612375565b81146128b757600080fd5b5056fea2646970667358221220912681ee982aac98ba6e5a66c351c0104fd0af441115dab6d9ad9423598c793364736f6c63430008040033"; -var isSuperArgs = function (xs) { return xs.length > 1; }; -var VersionedERC721V2__factory = /** @class */ (function (_super) { - __extends(VersionedERC721V2__factory, _super); - function VersionedERC721V2__factory() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - var _this = this; - if (isSuperArgs(args)) { - _this = _super.apply(this, args) || this; - } - else { - _this = _super.call(this, _abi, _bytecode, args[0]) || this; - } - _this.contractName = "VersionedERC721V2"; - return _this; - } - VersionedERC721V2__factory.prototype.deploy = function (overrides) { - return _super.prototype.deploy.call(this, overrides || {}); - }; - VersionedERC721V2__factory.prototype.getDeployTransaction = function (overrides) { - return _super.prototype.getDeployTransaction.call(this, overrides || {}); - }; - VersionedERC721V2__factory.prototype.attach = function (address) { - return _super.prototype.attach.call(this, address); - }; - VersionedERC721V2__factory.prototype.connect = function (signer) { - return _super.prototype.connect.call(this, signer); - }; - VersionedERC721V2__factory.createInterface = function () { - return new ethers_1.utils.Interface(_abi); - }; - VersionedERC721V2__factory.connect = function (address, signerOrProvider) { - return new ethers_1.Contract(address, _abi, signerOrProvider); - }; - VersionedERC721V2__factory.bytecode = _bytecode; - VersionedERC721V2__factory.abi = _abi; - return VersionedERC721V2__factory; -}(ethers_1.ContractFactory)); -exports.VersionedERC721V2__factory = VersionedERC721V2__factory; diff --git a/desci-contracts/typechain-types/factories/VersionedERC721__factory.js b/desci-contracts/typechain-types/factories/VersionedERC721__factory.js deleted file mode 100644 index 25f3262de..000000000 --- a/desci-contracts/typechain-types/factories/VersionedERC721__factory.js +++ /dev/null @@ -1,508 +0,0 @@ -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -exports.__esModule = true; -exports.VersionedERC721__factory = void 0; -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -var ethers_1 = require("ethers"); -var _abi = [ - { - 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: "uint8", - name: "version", - type: "uint8" - }, - ], - name: "Initialized", - 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" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "_from", - type: "address" - }, - { - indexed: true, - internalType: "uint256", - name: "_uuid", - type: "uint256" - }, - { - indexed: false, - internalType: "bytes", - name: "_cid", - type: "bytes" - }, - ], - name: "VersionPush", - type: "event" - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string" - }, - { - internalType: "string", - name: "symbol", - type: "string" - }, - ], - name: "__VersionedERC721_init", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "", - type: "uint256" - }, - ], - name: "_metadata", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes" - }, - ], - 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: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "exists", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "getApproved", - outputs: [ - { - internalType: "address", - name: "", - type: "address" - }, - ], - 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: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "ownerOf", - outputs: [ - { - internalType: "address", - name: "", - type: "address" - }, - ], - stateMutability: "view", - 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: "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: "tokenId", - 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: "uint256", - name: "tokenId", - type: "uint256" - }, - { - internalType: "bytes", - name: "cid", - type: "bytes" - }, - ], - name: "updateMetadata", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, -]; -var _bytecode = "0x608060405234801561001057600080fd5b506128df806100206000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c8063599ad936116100a25780639a7fad40116100715780639a7fad40146102dc578063a22cb465146102f8578063b88d4fde14610314578063c87b56dd14610330578063e985e9c5146103605761010b565b8063599ad936146102425780636352211e1461025e57806370a082311461028e57806395d89b41146102be5761010b565b806313859f46116100de57806313859f46146101aa57806323b872dd146101da57806342842e0e146101f65780634f558e79146102125761010b565b806301ffc9a71461011057806306fdde0314610140578063081812fc1461015e578063095ea7b31461018e575b600080fd5b61012a60048036038101906101259190611b84565b610390565b6040516101379190611f9b565b60405180910390f35b610148610472565b6040516101559190611fd8565b60405180910390f35b61017860048036038101906101739190611c42565b610504565b6040516101859190611f34565b60405180910390f35b6101a860048036038101906101a39190611b48565b61054a565b005b6101c460048036038101906101bf9190611c42565b610662565b6040516101d19190611fb6565b60405180910390f35b6101f460048036038101906101ef9190611a42565b610702565b005b610210600480360381019061020b9190611a42565b610762565b005b61022c60048036038101906102279190611c42565b610782565b6040516102399190611f9b565b60405180910390f35b61025c60048036038101906102579190611bd6565b610794565b005b61027860048036038101906102739190611c42565b6107f1565b6040516102859190611f34565b60405180910390f35b6102a860048036038101906102a391906119dd565b6108a3565b6040516102b5919061215a565b60405180910390f35b6102c661095b565b6040516102d39190611fd8565b60405180910390f35b6102f660048036038101906102f19190611c6b565b6109ed565b005b610312600480360381019061030d9190611b0c565b610afa565b005b61032e60048036038101906103299190611a91565b610b10565b005b61034a60048036038101906103459190611c42565b610b72565b6040516103579190611fd8565b60405180910390f35b61037a60048036038101906103759190611a06565b610bda565b6040516103879190611f9b565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061045b57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061046b575061046a82610c6e565b5b9050919050565b606060658054610481906123b0565b80601f01602080910402602001604051908101604052809291908181526020018280546104ad906123b0565b80156104fa5780601f106104cf576101008083540402835291602001916104fa565b820191906000526020600020905b8154815290600101906020018083116104dd57829003601f168201915b5050505050905090565b600061050f82610cd8565b6069600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610555826107f1565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156105c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd906120fa565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166105e5610d23565b73ffffffffffffffffffffffffffffffffffffffff16148061061457506106138161060e610d23565b610bda565b5b610653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064a9061209a565b60405180910390fd5b61065d8383610d2b565b505050565b60976020528060005260406000206000915090508054610681906123b0565b80601f01602080910402602001604051908101604052809291908181526020018280546106ad906123b0565b80156106fa5780601f106106cf576101008083540402835291602001916106fa565b820191906000526020600020905b8154815290600101906020018083116106dd57829003601f168201915b505050505081565b61071361070d610d23565b82610de4565b610752576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107499061213a565b60405180910390fd5b61075d838383610e79565b505050565b61077d83838360405180602001604052806000815250610b10565b505050565b600061078d826110e0565b9050919050565b600060019054906101000a900460ff166107e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107da9061211a565b60405180910390fd5b6107ed828261114c565b5050565b6000806067600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561089a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610891906120da565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610914576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090b9061207a565b60405180910390fd5b606860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606066805461096a906123b0565b80601f0160208091040260200160405190810160405280929190818152602001828054610996906123b0565b80156109e35780601f106109b8576101008083540402835291602001916109e3565b820191906000526020600020905b8154815290600101906020018083116109c657829003601f168201915b5050505050905090565b8160006109f8610d23565b905060008173ffffffffffffffffffffffffffffffffffffffff16610a1c846107f1565b73ffffffffffffffffffffffffffffffffffffffff1614905080610a75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6c906120ba565b60405180910390fd5b83609760008781526020019081526020016000209080519060200190610a9c92919061177b565b5084610aa6610d23565b73ffffffffffffffffffffffffffffffffffffffff167fabddf73bfc8efbf8287a09ea355e43cf6c0c22880ce0470affeba5271c0a769486604051610aeb9190611fb6565b60405180910390a35050505050565b610b0c610b05610d23565b83836111a9565b5050565b610b21610b1b610d23565b83610de4565b610b60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b579061213a565b60405180910390fd5b610b6c84848484611316565b50505050565b6060610b7d82610cd8565b6000610b87611372565b90506000815111610ba75760405180602001604052806000815250610bd2565b80610bb184611389565b604051602001610bc2929190611f10565b6040516020818303038152906040525b915050919050565b6000606a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610ce1816110e0565b610d20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d17906120da565b60405180910390fd5b50565b600033905090565b816069600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16610d9e836107f1565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610df0836107f1565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610e325750610e318185610bda565b5b80610e7057508373ffffffffffffffffffffffffffffffffffffffff16610e5884610504565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16610e99826107f1565b73ffffffffffffffffffffffffffffffffffffffff1614610eef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee69061201a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f569061203a565b60405180910390fd5b610f6a838383611536565b610f75600082610d2b565b6001606860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610fc591906122c6565b925050819055506001606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461101c919061223f565b92505081905550816067600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46110db83838361153b565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff166067600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600060019054906101000a900460ff1661119b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111929061211a565b60405180910390fd5b6111a58282611540565b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611218576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120f9061205a565b60405180910390fd5b80606a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516113099190611f9b565b60405180910390a3505050565b611321848484610e79565b61132d848484846115c1565b61136c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136390611ffa565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b606060008214156113d1576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611531565b600082905060005b600082146114035780806113ec90612413565b915050600a826113fc9190612295565b91506113d9565b60008167ffffffffffffffff811115611445577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156114775781602001600182028036833780820191505090505b5090505b6000851461152a5760018261149091906122c6565b9150600a8561149f919061245c565b60306114ab919061223f565b60f81b8183815181106114e7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856115239190612295565b945061147b565b8093505050505b919050565b505050565b505050565b600060019054906101000a900460ff1661158f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115869061211a565b60405180910390fd5b81606590805190602001906115a5929190611801565b5080606690805190602001906115bc929190611801565b505050565b60006115e28473ffffffffffffffffffffffffffffffffffffffff16611758565b1561174b578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261160b610d23565b8786866040518563ffffffff1660e01b815260040161162d9493929190611f4f565b602060405180830381600087803b15801561164757600080fd5b505af192505050801561167857506040513d601f19601f820116820180604052508101906116759190611bad565b60015b6116fb573d80600081146116a8576040519150601f19603f3d011682016040523d82523d6000602084013e6116ad565b606091505b506000815114156116f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ea90611ffa565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611750565b600190505b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b828054611787906123b0565b90600052602060002090601f0160209004810192826117a957600085556117f0565b82601f106117c257805160ff19168380011785556117f0565b828001600101855582156117f0579182015b828111156117ef5782518255916020019190600101906117d4565b5b5090506117fd9190611887565b5090565b82805461180d906123b0565b90600052602060002090601f01602090048101928261182f5760008555611876565b82601f1061184857805160ff1916838001178555611876565b82800160010185558215611876579182015b8281111561187557825182559160200191906001019061185a565b5b5090506118839190611887565b5090565b5b808211156118a0576000816000905550600101611888565b5090565b60006118b76118b28461219a565b612175565b9050828152602081018484840111156118cf57600080fd5b6118da84828561236e565b509392505050565b60006118f56118f0846121cb565b612175565b90508281526020810184848401111561190d57600080fd5b61191884828561236e565b509392505050565b60008135905061192f8161284d565b92915050565b60008135905061194481612864565b92915050565b6000813590506119598161287b565b92915050565b60008151905061196e8161287b565b92915050565b600082601f83011261198557600080fd5b81356119958482602086016118a4565b91505092915050565b600082601f8301126119af57600080fd5b81356119bf8482602086016118e2565b91505092915050565b6000813590506119d781612892565b92915050565b6000602082840312156119ef57600080fd5b60006119fd84828501611920565b91505092915050565b60008060408385031215611a1957600080fd5b6000611a2785828601611920565b9250506020611a3885828601611920565b9150509250929050565b600080600060608486031215611a5757600080fd5b6000611a6586828701611920565b9350506020611a7686828701611920565b9250506040611a87868287016119c8565b9150509250925092565b60008060008060808587031215611aa757600080fd5b6000611ab587828801611920565b9450506020611ac687828801611920565b9350506040611ad7878288016119c8565b925050606085013567ffffffffffffffff811115611af457600080fd5b611b0087828801611974565b91505092959194509250565b60008060408385031215611b1f57600080fd5b6000611b2d85828601611920565b9250506020611b3e85828601611935565b9150509250929050565b60008060408385031215611b5b57600080fd5b6000611b6985828601611920565b9250506020611b7a858286016119c8565b9150509250929050565b600060208284031215611b9657600080fd5b6000611ba48482850161194a565b91505092915050565b600060208284031215611bbf57600080fd5b6000611bcd8482850161195f565b91505092915050565b60008060408385031215611be957600080fd5b600083013567ffffffffffffffff811115611c0357600080fd5b611c0f8582860161199e565b925050602083013567ffffffffffffffff811115611c2c57600080fd5b611c388582860161199e565b9150509250929050565b600060208284031215611c5457600080fd5b6000611c62848285016119c8565b91505092915050565b60008060408385031215611c7e57600080fd5b6000611c8c858286016119c8565b925050602083013567ffffffffffffffff811115611ca957600080fd5b611cb585828601611974565b9150509250929050565b611cc8816122fa565b82525050565b611cd78161230c565b82525050565b6000611ce8826121fc565b611cf28185612212565b9350611d0281856020860161237d565b611d0b81612549565b840191505092915050565b6000611d2182612207565b611d2b8185612223565b9350611d3b81856020860161237d565b611d4481612549565b840191505092915050565b6000611d5a82612207565b611d648185612234565b9350611d7481856020860161237d565b80840191505092915050565b6000611d8d603283612223565b9150611d988261255a565b604082019050919050565b6000611db0602583612223565b9150611dbb826125a9565b604082019050919050565b6000611dd3602483612223565b9150611dde826125f8565b604082019050919050565b6000611df6601983612223565b9150611e0182612647565b602082019050919050565b6000611e19602983612223565b9150611e2482612670565b604082019050919050565b6000611e3c603e83612223565b9150611e47826126bf565b604082019050919050565b6000611e5f600d83612223565b9150611e6a8261270e565b602082019050919050565b6000611e82601883612223565b9150611e8d82612737565b602082019050919050565b6000611ea5602183612223565b9150611eb082612760565b604082019050919050565b6000611ec8602b83612223565b9150611ed3826127af565b604082019050919050565b6000611eeb602e83612223565b9150611ef6826127fe565b604082019050919050565b611f0a81612364565b82525050565b6000611f1c8285611d4f565b9150611f288284611d4f565b91508190509392505050565b6000602082019050611f496000830184611cbf565b92915050565b6000608082019050611f646000830187611cbf565b611f716020830186611cbf565b611f7e6040830185611f01565b8181036060830152611f908184611cdd565b905095945050505050565b6000602082019050611fb06000830184611cce565b92915050565b60006020820190508181036000830152611fd08184611cdd565b905092915050565b60006020820190508181036000830152611ff28184611d16565b905092915050565b6000602082019050818103600083015261201381611d80565b9050919050565b6000602082019050818103600083015261203381611da3565b9050919050565b6000602082019050818103600083015261205381611dc6565b9050919050565b6000602082019050818103600083015261207381611de9565b9050919050565b6000602082019050818103600083015261209381611e0c565b9050919050565b600060208201905081810360008301526120b381611e2f565b9050919050565b600060208201905081810360008301526120d381611e52565b9050919050565b600060208201905081810360008301526120f381611e75565b9050919050565b6000602082019050818103600083015261211381611e98565b9050919050565b6000602082019050818103600083015261213381611ebb565b9050919050565b6000602082019050818103600083015261215381611ede565b9050919050565b600060208201905061216f6000830184611f01565b92915050565b600061217f612190565b905061218b82826123e2565b919050565b6000604051905090565b600067ffffffffffffffff8211156121b5576121b461251a565b5b6121be82612549565b9050602081019050919050565b600067ffffffffffffffff8211156121e6576121e561251a565b5b6121ef82612549565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600061224a82612364565b915061225583612364565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561228a5761228961248d565b5b828201905092915050565b60006122a082612364565b91506122ab83612364565b9250826122bb576122ba6124bc565b5b828204905092915050565b60006122d182612364565b91506122dc83612364565b9250828210156122ef576122ee61248d565b5b828203905092915050565b600061230582612344565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101561239b578082015181840152602081019050612380565b838111156123aa576000848401525b50505050565b600060028204905060018216806123c857607f821691505b602082108114156123dc576123db6124eb565b5b50919050565b6123eb82612549565b810181811067ffffffffffffffff8211171561240a5761240961251a565b5b80604052505050565b600061241e82612364565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156124515761245061248d565b5b600182019050919050565b600061246782612364565b915061247283612364565b925082612482576124816124bc565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b7f4e6f207065726d697373696f6e00000000000000000000000000000000000000600082015250565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206e6f7220617070726f766564000000000000000000000000000000000000602082015250565b612856816122fa565b811461286157600080fd5b50565b61286d8161230c565b811461287857600080fd5b50565b61288481612318565b811461288f57600080fd5b50565b61289b81612364565b81146128a657600080fd5b5056fea26469706673582212208816f35c3f39abe99ae49479034773b9cac55a86f0dc13f69dab11aa58a03d2f64736f6c63430008040033"; -var isSuperArgs = function (xs) { return xs.length > 1; }; -var VersionedERC721__factory = /** @class */ (function (_super) { - __extends(VersionedERC721__factory, _super); - function VersionedERC721__factory() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - var _this = this; - if (isSuperArgs(args)) { - _this = _super.apply(this, args) || this; - } - else { - _this = _super.call(this, _abi, _bytecode, args[0]) || this; - } - _this.contractName = "VersionedERC721"; - return _this; - } - VersionedERC721__factory.prototype.deploy = function (overrides) { - return _super.prototype.deploy.call(this, overrides || {}); - }; - VersionedERC721__factory.prototype.getDeployTransaction = function (overrides) { - return _super.prototype.getDeployTransaction.call(this, overrides || {}); - }; - VersionedERC721__factory.prototype.attach = function (address) { - return _super.prototype.attach.call(this, address); - }; - VersionedERC721__factory.prototype.connect = function (signer) { - return _super.prototype.connect.call(this, signer); - }; - VersionedERC721__factory.createInterface = function () { - return new ethers_1.utils.Interface(_abi); - }; - VersionedERC721__factory.connect = function (address, signerOrProvider) { - return new ethers_1.Contract(address, _abi, signerOrProvider); - }; - VersionedERC721__factory.bytecode = _bytecode; - VersionedERC721__factory.abi = _abi; - return VersionedERC721__factory; -}(ethers_1.ContractFactory)); -exports.VersionedERC721__factory = VersionedERC721__factory; diff --git a/desci-contracts/typechain-types/hardhat.d.ts b/desci-contracts/typechain-types/hardhat.d.ts index 49fd57e36..116bf02cc 100644 --- a/desci-contracts/typechain-types/hardhat.d.ts +++ b/desci-contracts/typechain-types/hardhat.d.ts @@ -72,6 +72,10 @@ declare module "hardhat/types/runtime" { name: "IERC165", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; + getContractFactory( + name: "DpidAliasRegistry", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "DpidRegistry", signerOrOptions?: ethers.Signer | FactoryOptions @@ -180,6 +184,11 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; + getContractAt( + name: "DpidAliasRegistry", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( name: "DpidRegistry", address: string, diff --git a/desci-contracts/typechain-types/index.js b/desci-contracts/typechain-types/index.js deleted file mode 100644 index 62939d509..000000000 --- a/desci-contracts/typechain-types/index.js +++ /dev/null @@ -1,60 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -exports.__esModule = true; -exports.VersionedERC721V2__factory = exports.VersionedERC721__factory = exports.TestERC721__factory = exports.ResearchObjectV2__factory = exports.ResearchObject__factory = exports.ResearchObjectMigrated__factory = exports.IDpidRegistry__factory = exports.DpidRegistry__factory = exports.IERC165__factory = exports.ERC165__factory = exports.IERC721Receiver__factory = exports.IERC721__factory = exports.IERC721Metadata__factory = exports.ERC721__factory = exports.IERC165Upgradeable__factory = exports.ERC165Upgradeable__factory = exports.ContextUpgradeable__factory = exports.IERC721Upgradeable__factory = exports.IERC721ReceiverUpgradeable__factory = exports.IERC721MetadataUpgradeable__factory = exports.ERC721Upgradeable__factory = exports.Initializable__factory = exports.OwnableUpgradeable__factory = void 0; -var OwnableUpgradeable__factory_1 = require("./factories/OwnableUpgradeable__factory"); -__createBinding(exports, OwnableUpgradeable__factory_1, "OwnableUpgradeable__factory"); -var Initializable__factory_1 = require("./factories/Initializable__factory"); -__createBinding(exports, Initializable__factory_1, "Initializable__factory"); -var ERC721Upgradeable__factory_1 = require("./factories/ERC721Upgradeable__factory"); -__createBinding(exports, ERC721Upgradeable__factory_1, "ERC721Upgradeable__factory"); -var IERC721MetadataUpgradeable__factory_1 = require("./factories/IERC721MetadataUpgradeable__factory"); -__createBinding(exports, IERC721MetadataUpgradeable__factory_1, "IERC721MetadataUpgradeable__factory"); -var IERC721ReceiverUpgradeable__factory_1 = require("./factories/IERC721ReceiverUpgradeable__factory"); -__createBinding(exports, IERC721ReceiverUpgradeable__factory_1, "IERC721ReceiverUpgradeable__factory"); -var IERC721Upgradeable__factory_1 = require("./factories/IERC721Upgradeable__factory"); -__createBinding(exports, IERC721Upgradeable__factory_1, "IERC721Upgradeable__factory"); -var ContextUpgradeable__factory_1 = require("./factories/ContextUpgradeable__factory"); -__createBinding(exports, ContextUpgradeable__factory_1, "ContextUpgradeable__factory"); -var ERC165Upgradeable__factory_1 = require("./factories/ERC165Upgradeable__factory"); -__createBinding(exports, ERC165Upgradeable__factory_1, "ERC165Upgradeable__factory"); -var IERC165Upgradeable__factory_1 = require("./factories/IERC165Upgradeable__factory"); -__createBinding(exports, IERC165Upgradeable__factory_1, "IERC165Upgradeable__factory"); -var ERC721__factory_1 = require("./factories/ERC721__factory"); -__createBinding(exports, ERC721__factory_1, "ERC721__factory"); -var IERC721Metadata__factory_1 = require("./factories/IERC721Metadata__factory"); -__createBinding(exports, IERC721Metadata__factory_1, "IERC721Metadata__factory"); -var IERC721__factory_1 = require("./factories/IERC721__factory"); -__createBinding(exports, IERC721__factory_1, "IERC721__factory"); -var IERC721Receiver__factory_1 = require("./factories/IERC721Receiver__factory"); -__createBinding(exports, IERC721Receiver__factory_1, "IERC721Receiver__factory"); -var ERC165__factory_1 = require("./factories/ERC165__factory"); -__createBinding(exports, ERC165__factory_1, "ERC165__factory"); -var IERC165__factory_1 = require("./factories/IERC165__factory"); -__createBinding(exports, IERC165__factory_1, "IERC165__factory"); -var DpidRegistry__factory_1 = require("./factories/DpidRegistry__factory"); -__createBinding(exports, DpidRegistry__factory_1, "DpidRegistry__factory"); -var IDpidRegistry__factory_1 = require("./factories/IDpidRegistry__factory"); -__createBinding(exports, IDpidRegistry__factory_1, "IDpidRegistry__factory"); -var ResearchObjectMigrated__factory_1 = require("./factories/ResearchObjectMigrated__factory"); -__createBinding(exports, ResearchObjectMigrated__factory_1, "ResearchObjectMigrated__factory"); -var ResearchObject__factory_1 = require("./factories/ResearchObject__factory"); -__createBinding(exports, ResearchObject__factory_1, "ResearchObject__factory"); -var ResearchObjectV2__factory_1 = require("./factories/ResearchObjectV2__factory"); -__createBinding(exports, ResearchObjectV2__factory_1, "ResearchObjectV2__factory"); -var TestERC721__factory_1 = require("./factories/TestERC721__factory"); -__createBinding(exports, TestERC721__factory_1, "TestERC721__factory"); -var VersionedERC721__factory_1 = require("./factories/VersionedERC721__factory"); -__createBinding(exports, VersionedERC721__factory_1, "VersionedERC721__factory"); -var VersionedERC721V2__factory_1 = require("./factories/VersionedERC721V2__factory"); -__createBinding(exports, VersionedERC721V2__factory_1, "VersionedERC721V2__factory"); diff --git a/desci-contracts/typechain-types/index.ts b/desci-contracts/typechain-types/index.ts index 82c5030b0..5b992f0f4 100644 --- a/desci-contracts/typechain-types/index.ts +++ b/desci-contracts/typechain-types/index.ts @@ -16,6 +16,7 @@ export type { IERC721 } from "./IERC721"; export type { IERC721Receiver } from "./IERC721Receiver"; export type { ERC165 } from "./ERC165"; export type { IERC165 } from "./IERC165"; +export type { DpidAliasRegistry } from "./DpidAliasRegistry"; export type { DpidRegistry } from "./DpidRegistry"; export type { IDpidRegistry } from "./IDpidRegistry"; export type { ResearchObjectMigrated } from "./ResearchObjectMigrated"; @@ -40,6 +41,7 @@ export { IERC721__factory } from "./factories/IERC721__factory"; export { IERC721Receiver__factory } from "./factories/IERC721Receiver__factory"; export { ERC165__factory } from "./factories/ERC165__factory"; export { IERC165__factory } from "./factories/IERC165__factory"; +export { DpidAliasRegistry__factory } from "./factories/DpidAliasRegistry__factory"; export { DpidRegistry__factory } from "./factories/DpidRegistry__factory"; export { IDpidRegistry__factory } from "./factories/IDpidRegistry__factory"; export { ResearchObjectMigrated__factory } from "./factories/ResearchObjectMigrated__factory"; diff --git a/desci-contracts/yarn.lock b/desci-contracts/yarn.lock index 978088aa4..5ba7f6ae2 100644 --- a/desci-contracts/yarn.lock +++ b/desci-contracts/yarn.lock @@ -1784,6 +1784,13 @@ "@types/node" "*" "@types/responselike" "^1.0.0" +"@types/chai-as-promised@^7.1.8": + version "7.1.8" + resolved "https://registry.yarnpkg.com/@types/chai-as-promised/-/chai-as-promised-7.1.8.tgz#f2b3d82d53c59626b5d6bbc087667ccb4b677fe9" + integrity sha512-ThlRVIJhr69FLlh6IctTXFkmhtP3NpMZ2QGq69StYLyKZFp/HOp1VdKZj7RvfNWYYcJ1xlbLGLLWj1UvP5u/Gw== + dependencies: + "@types/chai" "*" + "@types/chai@*", "@types/chai@^4.2.21": version "4.3.14" resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.14.tgz#ae3055ea2be43c91c9fd700a36d67820026d96e6" @@ -3613,6 +3620,13 @@ cborg@^1.5.4, cborg@^1.6.0: resolved "https://registry.yarnpkg.com/cborg/-/cborg-1.10.2.tgz#83cd581b55b3574c816f82696307c7512db759a1" integrity sha512-b3tFPA9pUr2zCUiCfRd2+wok2/LBSNUMKOuRRok+WlvvAgEt/PlbgPTsZUcwCOs53IJvLgTp0eotwtosE6njug== +chai-as-promised@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/chai-as-promised/-/chai-as-promised-7.1.2.tgz#70cd73b74afd519754161386421fb71832c6d041" + integrity sha512-aBDHZxRzYnUYuIAIPBH2s511DjlKPzXNlXSGFC8CwmroWQLfrW0LtE1nK3MAwwNhJPa9raEjNCmRoFpG0Hurdw== + dependencies: + check-error "^1.0.2" + chai@^4.3.4: version "4.4.1" resolved "https://registry.yarnpkg.com/chai/-/chai-4.4.1.tgz#3603fa6eba35425b0f2ac91a009fe924106e50d1" @@ -3667,7 +3681,7 @@ chalk@^4, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" integrity sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA== -check-error@^1.0.3: +check-error@^1.0.2, check-error@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.3.tgz#a6502e4312a7ee969f646e83bb3ddd56281bd694" integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg== From e21aac51ae0ff0c57a24b58d706177394159fe87 Mon Sep 17 00:00:00 2001 From: m0ar Date: Mon, 20 May 2024 16:03:40 +0200 Subject: [PATCH 02/34] Move chai-as-promises to devdep --- desci-contracts/package.json | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/desci-contracts/package.json b/desci-contracts/package.json index e26bfb55e..011c277b7 100644 --- a/desci-contracts/package.json +++ b/desci-contracts/package.json @@ -45,6 +45,7 @@ "@types/node": "^16.4.10", "as-base64": "^0.2.0", "chai": "^4.3.4", + "chai-as-promised": "^7.1.2", "cids": "^1.1.9", "dotenv": "^10.0.0", "ethereum-waffle": "^3.4.0", @@ -62,7 +63,5 @@ "typechain": "^7.0.0", "typescript": "^4.3.5" }, - "dependencies": { - "chai-as-promised": "^7.1.2" - } + "dependencies": {} } From bc5a3dc3b2a2939075fe3806c227461cd1897aea Mon Sep 17 00:00:00 2001 From: m0ar Date: Thu, 23 May 2024 09:56:47 +0200 Subject: [PATCH 03/34] contracts: deploy alias registry in chain seeding --- desci-contracts/package.json | 5 +-- .../scripts/deployDpidAliasRegistry.js | 31 +++++++++++++++++++ desci-contracts/scripts/startTestChain.sh | 5 +++ 3 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 desci-contracts/scripts/deployDpidAliasRegistry.js diff --git a/desci-contracts/package.json b/desci-contracts/package.json index 011c277b7..ac3089b40 100644 --- a/desci-contracts/package.json +++ b/desci-contracts/package.json @@ -1,16 +1,17 @@ { "name": "@desci-labs/desci-contracts", "description": "Smart contracts implementing DeSci Nodes on-chain state and logic", - "version": "0.2.3-rc3", + "version": "0.2.4", "license": "MIT", "scripts": { - "test": "hardhat clean && hardhat test test/DpidAliasRegistry.ts", + "test": "hardhat clean && hardhat test", "build": "hardhat compile --network ganache", "makePackage": "rm -rf dist && tsc && cp -r .openzeppelin dist", "docker:build": "docker build -t desci-hardhat-node .", "docker:push": "docker tag desci-hardhat-node:latest 523044037273.dkr.ecr.us-east-2.amazonaws.com/desci-hardhat-node:latest && docker push 523044037273.dkr.ecr.us-east-2.amazonaws.com/desci-hardhat-node:latest", "deploy:ganache": "yarn stubHardhatAnalytics && hardhat run scripts/deployResearchObject.js --network ganache", "deploy:dpid:ganache": "yarn stubHardhatAnalytics && hardhat run scripts/deployDpidRegistry.js --network ganache", + "deploy:alias:ganache": "yarn stubHardhatAnalytics && hardhat run scripts/deployDpidAliasRegistry.js --network ganache", "migrate": "hardhat run scripts/migrateToNewContract.js --network ganache && touch ./.openzeppelin/migration-complete.json", "graph:codegen": "graph codegen subgraph/subgraph.yaml -o subgraph/generated", "graph:build": "graph build subgraph/subgraph.yaml", diff --git a/desci-contracts/scripts/deployDpidAliasRegistry.js b/desci-contracts/scripts/deployDpidAliasRegistry.js new file mode 100644 index 000000000..c6d8efef8 --- /dev/null +++ b/desci-contracts/scripts/deployDpidAliasRegistry.js @@ -0,0 +1,31 @@ +const { ethers, upgrades } = require("hardhat"); +const fs = require('fs'); + +const FIRST_DPID = 500; + +console.log(process.cwd()) +async function main() { + fs.rmSync(".openzeppelin/unknown-dpid-alias-registry.json", { force: true }); + fs.rmSync(".openzeppelin/unknown-1337.json", { force: true }); + + const DpidAliasRegistry = await ethers.getContractFactory("DpidAliasRegistry"); + console.log("[deployDpidAliasRegistry] Deploying DpidAliasRegistry..."); + const proxy = await upgrades.deployProxy( + DpidAliasRegistry, + [ + FIRST_DPID // firstDpid + ], + { + initializer: "__DpidAliasRegistry_init" + } + ); + await proxy.deployed(); + console.log("[deployDpidRegistry] DpidAliasRegistry deployed to:", proxy.address); + + fs.renameSync( + ".openzeppelin/unknown-1337.json", + ".openzeppelin/unknown-dpid-alias-registry.json", + ); +}; + +main(); diff --git a/desci-contracts/scripts/startTestChain.sh b/desci-contracts/scripts/startTestChain.sh index a72377a46..5b30987d8 100755 --- a/desci-contracts/scripts/startTestChain.sh +++ b/desci-contracts/scripts/startTestChain.sh @@ -32,6 +32,11 @@ checkTestDeployments() { echo "[startTestChain] deploying RO contract..." yarn deploy:ganache fi + + if ! scripts/checkTestDeployments.sh ".openzeppelin/unknown-dpid-alias-registry.json"; then + echo "[startTestChain] deploying dpid alias registry..." + yarn deploy:alias:ganache + fi } waitForPostgres() { From 0ce077214afc1c1f6de41e933e441d89a2f0712b Mon Sep 17 00:00:00 2001 From: m0ar Date: Fri, 24 May 2024 12:12:32 +0200 Subject: [PATCH 04/34] contracts: tweak alias registry, add migration script, update typechain artefacts --- .../DpidAliasRegistry.json | 14 ++--- .../contracts/DpidAliasRegistry.sol | 15 +++-- desci-contracts/hardhat.config.ts | 2 - desci-contracts/index.ts | 2 + desci-contracts/package.json | 2 +- .../scripts/migrateToAliasRegistry.mjs | 61 +++++++++++++++++++ desci-contracts/test/DpidAliasRegistry.ts | 4 +- .../typechain-types/DpidAliasRegistry.ts | 33 +++++----- .../factories/DpidAliasRegistry__factory.ts | 12 ++-- 9 files changed, 103 insertions(+), 42 deletions(-) create mode 100644 desci-contracts/scripts/migrateToAliasRegistry.mjs diff --git a/desci-contracts/artifacts/contracts/DpidAliasRegistry.sol/DpidAliasRegistry.json b/desci-contracts/artifacts/contracts/DpidAliasRegistry.sol/DpidAliasRegistry.json index 24c643073..51effc33f 100644 --- a/desci-contracts/artifacts/contracts/DpidAliasRegistry.sol/DpidAliasRegistry.json +++ b/desci-contracts/artifacts/contracts/DpidAliasRegistry.sol/DpidAliasRegistry.json @@ -52,7 +52,7 @@ }, { "internalType": "uint256", - "name": "timestamp", + "name": "time", "type": "uint256" } ], @@ -125,7 +125,7 @@ "inputs": [ { "internalType": "uint256", - "name": "firstDpid", + "name": "_firstDpid", "type": "uint256" } ], @@ -136,7 +136,7 @@ }, { "inputs": [], - "name": "_firstDpid", + "name": "firstDpid", "outputs": [ { "internalType": "uint256", @@ -170,7 +170,7 @@ }, { "internalType": "uint256", - "name": "timestamp", + "name": "time", "type": "uint256" } ], @@ -234,7 +234,7 @@ }, { "internalType": "uint256", - "name": "timestamp", + "name": "time", "type": "uint256" } ], @@ -373,8 +373,8 @@ "type": "function" } ], - "bytecode": "0x60806040523480156200001157600080fd5b50620000226200002860201b60201c565b620001d3565b600060019054906101000a900460ff16156200007b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000729062000127565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff161015620000ed5760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff604051620000e4919062000149565b60405180910390a15b565b6000620000fe60278362000166565b91506200010b8262000184565b604082019050919050565b620001218162000177565b82525050565b600060208201905081810360008301526200014281620000ef565b9050919050565b600060208201905062000160600083018462000116565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b6122cb80620001e36000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063810a9afa1161008c578063b724de3a11610066578063b724de3a14610212578063dc5d7a2e14610242578063ded8896b14610260578063f2fde38b1461027c576100cf565b8063810a9afa146101a65780638da5cb5b146101d6578063afc26911146101f4576100cf565b80630a874df6146100d4578063144ae85514610104578063362b3e63146101205780635893253c1461013c578063715018a61461016c578063788243d514610176575b600080fd5b6100ee60048036038101906100e99190610dff565b610298565b6040516100fb919061131c565b60405180910390f35b61011e60048036038101906101199190610e80565b61033d565b005b61013a60048036038101906101359190610dff565b6103a5565b005b61015660048036038101906101519190610dff565b6104eb565b604051610163919061131c565b60405180910390f35b61017461058b565b005b610190600480360381019061018b9190610dff565b61059f565b60405161019d91906112e6565b60405180910390f35b6101c060048036038101906101bb9190610dff565b6105dd565b6040516101cd91906113fe565b60405180910390f35b6101de61075b565b6040516101eb91906112e6565b60405180910390f35b6101fc610785565b6040516102099190611420565b60405180910390f35b61022c60048036038101906102279190610dba565b61078b565b6040516102399190611420565b60405180910390f35b61024a610813565b6040516102579190611420565b60405180910390f35b61027a60048036038101906102759190610e28565b610819565b005b61029660048036038101906102919190610d91565b610982565b005b60606067600083815260200190815260200160002080546102b890611c27565b80601f01602080910402602001604051908101604052809291908181526020018280546102e490611c27565b80156103315780601f1061030657610100808354040283529160200191610331565b820191906000526020600020905b81548152906001019060200180831161031457829003601f168201915b50505050509050919050565b610345610a06565b8060686000848152602001908152602001600020818161036591906121ee565b9050507fa9c55ebaa1fada408bd72c2f0ea7c27f5444b105bcff12c5381baac912156ada828260405161039992919061146d565b60405180910390a15050565b60008060019054906101000a900460ff161590508080156103d65750600160008054906101000a900460ff1660ff16105b8061040357506103e530610a84565b1580156104025750600160008054906101000a900460ff1660ff16145b5b610442576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104399061137e565b60405180910390fd5b60016000806101000a81548160ff021916908360ff160217905550801561047f576001600060016101000a81548160ff0219169083151502179055505b610487610aa7565b8160668190555080156104e75760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516104de9190611301565b60405180910390a15b5050565b6067602052806000526040600020600091509050805461050a90611c27565b80601f016020809104026020016040519081016040528092919081815260200182805461053690611c27565b80156105835780601f1061055857610100808354040283529160200191610583565b820191906000526020600020905b81548152906001019060200180831161056657829003601f168201915b505050505081565b610593610a06565b61059d6000610b00565b565b60686020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081565b6105e5610c2f565b606860008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805480602002602001604051908101604052809291908181526020016000905b8282101561074c57838290600052602060002090600202016040518060400160405290816000820180546106b190611c27565b80601f01602080910402602001604051908101604052809291908181526020018280546106dd90611c27565b801561072a5780601f106106ff5761010080835404028352916020019161072a565b820191906000526020600020905b81548152906001019060200180831161070d57829003601f168201915b505050505081526020016001820154815250508152602001906001019061067e565b50505050815250509050919050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60665481565b600080606654905083836067600084815260200190815260200160002091906107b5929190610c5f565b507f96a65efbb6991f67fc8a4c7550fcfd08f1968737d2f5adcded5cd937b3cc0f3d8185856040516107e99392919061143b565b60405180910390a16066600081548092919061080490611c75565b91905055508091505092915050565b60655481565b600060676000858152602001908152602001600020805461083990611c27565b90501461087b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108729061133e565b60405180910390fd5b3273ffffffffffffffffffffffffffffffffffffffff166068600085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461091f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610916906113de565b60405180910390fd5b8181606760008681526020019081526020016000209190610941929190610c5f565b507f442b41840a10393534508176faee6f70b1870707dc24573b67d49f28cbac7f1c8383836040516109759392919061143b565b60405180910390a1505050565b61098a610a06565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156109fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f19061135e565b60405180910390fd5b610a0381610b00565b50565b610a0e610bc6565b73ffffffffffffffffffffffffffffffffffffffff16610a2c61075b565b73ffffffffffffffffffffffffffffffffffffffff1614610a82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a799061139e565b60405180910390fd5b565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16610af6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aed906113be565b60405180910390fd5b610afe610bce565b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b600060019054906101000a900460ff16610c1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c14906113be565b60405180910390fd5b610c2d610c28610bc6565b610b00565b565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b828054610c6b90611c27565b90600052602060002090601f016020900481019282610c8d5760008555610cd4565b82601f10610ca657803560ff1916838001178555610cd4565b82800160010185558215610cd4579182015b82811115610cd3578235825591602001919060010190610cb8565b5b509050610ce19190610ce5565b5090565b5b80821115610cfe576000816000905550600101610ce6565b5090565b600081359050610d1181612262565b92915050565b60008083601f840112610d2957600080fd5b8235905067ffffffffffffffff811115610d4257600080fd5b602083019150836001820283011115610d5a57600080fd5b9250929050565b600060408284031215610d7357600080fd5b81905092915050565b600081359050610d8b81612279565b92915050565b600060208284031215610da357600080fd5b6000610db184828501610d02565b91505092915050565b60008060208385031215610dcd57600080fd5b600083013567ffffffffffffffff811115610de757600080fd5b610df385828601610d17565b92509250509250929050565b600060208284031215610e1157600080fd5b6000610e1f84828501610d7c565b91505092915050565b600080600060408486031215610e3d57600080fd5b6000610e4b86828701610d7c565b935050602084013567ffffffffffffffff811115610e6857600080fd5b610e7486828701610d17565b92509250509250925092565b60008060408385031215610e9357600080fd5b6000610ea185828601610d7c565b925050602083013567ffffffffffffffff811115610ebe57600080fd5b610eca85828601610d61565b9150509250929050565b6000610ee0838361123c565b905092915050565b6000610ef4838361128b565b905092915050565b610f05816118ad565b82525050565b610f14816118ad565b82525050565b6000610f26838561161b565b935083602084028501610f3884611586565b8060005b87811015610f7c578484038952610f538284611818565b610f5d8582610ed4565b9450610f6883611601565b925060208a01995050600181019050610f3c565b50829750879450505050509392505050565b6000610f99826115d5565b610fa3818561161b565b935083602082028501610fb585611590565b8060005b85811015610ff15784840389528151610fd28582610ee8565b9450610fdd8361160e565b925060208a01995050600181019050610fb9565b50829750879550505050505092915050565b61100c8161199c565b82525050565b600061101e838561162c565b935061102b838584611b59565b61103483611ecc565b840190509392505050565b600061104b838561163d565b9350611058838584611b59565b61106183611ecc565b840190509392505050565b6000611077826115f6565b611081818561162c565b9350611091818560208601611b68565b61109a81611ecc565b840191505092915050565b60006110b0826115f6565b6110ba818561163d565b93506110ca818560208601611b68565b6110d381611ecc565b840191505092915050565b60006110eb60158361163d565b91506110f682611f58565b602082019050919050565b600061110e60268361163d565b915061111982611f81565b604082019050919050565b6000611131602e8361163d565b915061113c82611fd0565b604082019050919050565b600061115460208361163d565b915061115f8261201f565b602082019050919050565b6000611177602b8361163d565b915061118282612048565b604082019050919050565b600061119a60198361163d565b91506111a582612097565b602082019050919050565b6000604083016111c36000840184611753565b6111d06000860182610efc565b506111de602084018461176a565b85830360208701526111f1838284610f1a565b925050508091505092915050565b60006040830160008301516112176000860182610efc565b506020830151848203602086015261122f8282610f8e565b9150508091505092915050565b60006040830161124f60008401846117c1565b8583036000870152611262838284611012565b92505050611273602084018461183c565b61128060208601826112c8565b508091505092915050565b600060408301600083015184820360008601526112a8828261106c565b91505060208301516112bd60208601826112c8565b508091505092915050565b6112d1816118df565b82525050565b6112e0816118df565b82525050565b60006020820190506112fb6000830184610f0b565b92915050565b60006020820190506113166000830184611003565b92915050565b6000602082019050818103600083015261133681846110a5565b905092915050565b60006020820190508181036000830152611357816110de565b9050919050565b6000602082019050818103600083015261137781611101565b9050919050565b6000602082019050818103600083015261139781611124565b9050919050565b600060208201905081810360008301526113b781611147565b9050919050565b600060208201905081810360008301526113d78161116a565b9050919050565b600060208201905081810360008301526113f78161118d565b9050919050565b6000602082019050818103600083015261141881846111ff565b905092915050565b600060208201905061143560008301846112d7565b92915050565b600060408201905061145060008301866112d7565b818103602083015261146381848661103f565b9050949350505050565b600060408201905061148260008301856112d7565b818103602083015261149481846111b0565b90509392505050565b600080833560016020038436030381126114b657600080fd5b80840192508235915067ffffffffffffffff8211156114d457600080fd5b6020830192506020820236038313156114ec57600080fd5b509250929050565b6000808335600160200384360303811261150d57600080fd5b80840192508235915067ffffffffffffffff82111561152b57600080fd5b60208301925060018202360383131561154357600080fd5b509250929050565b60008235600160400383360303811261156357600080fd5b80830191505092915050565b600081905061157f826002611853565b9050919050565b6000819050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b600082905092915050565b600081519050919050565b600081549050919050565b600082905092915050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b60208410600081146116a757601f841160018114611677576116708685611c59565b83556116a1565b611680836115b5565b6116956020601f880104820160018301611904565b61169f87856120c0565b505b506116f0565b6116b0826115b5565b6020601f8701048101601f871680156116d1576116d08160018403611d98565b5b6116e36020601f890104840183611904565b6001886002021785555050505b5050505050565b6020831060008114611742576020851060008114611720576117198685611c59565b835561173c565b8360ff1916935083611731846115b5565b556001866002020183555b5061174c565b6001856002020182555b5050505050565b60006117626020840184610d02565b905092915050565b6000808335600160200384360303811261178357600080fd5b83810192508235915060208301925067ffffffffffffffff8211156117a757600080fd5b6020820236038413156117b957600080fd5b509250929050565b600080833560016020038436030381126117da57600080fd5b83810192508235915060208301925067ffffffffffffffff8211156117fe57600080fd5b60018202360384131561181057600080fd5b509250929050565b60008235600160400383360303811261183057600080fd5b82810191505092915050565b600061184b6020840184610d7c565b905092915050565b600061185e826118df565b9150611869836118df565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156118a2576118a1611d0b565b5b828202905092915050565b60006118b8826118bf565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b611901600082611e77565b50565b5b8181101561192357611918600082611f40565b600181019050611905565b5050565b5b818110156119465761193b600082611f22565b600281019050611928565b5050565b818110156119685761195d600082611f40565b60018101905061194a565b5050565b6119796000808301611f04565b611987600060018301611f40565b50565b6000611995826119ae565b9050919050565b60006119a7826118e9565b9050919050565b60006119b9826119c0565b9050919050565b60006119cb826118bf565b9050919050565b60006119dd826118df565b9050919050565b6119ee83836115ca565b6119f88183611e13565b611a0183611586565b611a0a836115a0565b6000805b84811015611a4357611a20848861154b565b611a2b81848661221f565b60208501945060028401935050600181019050611a0e565b5050505050505050565b611a5783836115eb565b67ffffffffffffffff811115611a7057611a6f611d69565b5b611a7a8254611c27565b600080601f8411601f84111715611a9757611a94856115b5565b90505b601f831115611aca576020601f85010481016020851015611ab6578190505b611ac86020601f860104830182611904565b505b601f841160018114611af75760008515611ae5578388013590505b611aef8682611c59565b875550611b4f565b601f1985168260005b82811015611b2557858a01358255600182019150602086019550602081019050611b00565b87831015611b4257858a0135611b3e601f8a1682611cbe565b8355505b6001600289020189555050505b5050505050505050565b82818337600083830152505050565b60005b83811015611b86578082015181840152602081019050611b6b565b83811115611b95576000848401525b50505050565b600081016000830180611bad81611de7565b9050611bb981846121ab565b5050506001810160208301611bce818561149d565b611bd98183866121ce565b505050505050565b6000810160008301611bf381856114f4565b611bfe8183866121de565b50505050600181016020830180611c1481611dfd565b9050611c2081846121fc565b5050505050565b60006002820490506001821680611c3f57607f821691505b60208210811415611c5357611c52611d3a565b5b50919050565b6000611c658383611cbe565b9150826002028217905092915050565b6000611c80826118df565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611cb357611cb2611d0b565b5b600182019050919050565b6000611ccf60001984600802611ef7565b1980831691505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611dc87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802611ef7565b815481168255505050565b6000819050919050565b6000819050919050565b60008135611df481612262565b80915050919050565b60008135611e0a81612279565b80915050919050565b68010000000000000000821115611e2d57611e2c611d69565b5b611e36816115e0565b82825580831015611e7257611e4a8161156f565b611e538461156f565b611e5c846115a0565b818101838201611e6c8183611927565b50505050505b505050565b68010000000000000000821115611e9157611e90611d69565b5b8054611e9c81611c27565b80841115611eb157611eb0848284866116f7565b5b80841015611ec657611ec58482848661164e565b5b50505050565b6000601f19601f8301169050919050565b60008160001b9050919050565b600082821b905092915050565b600082821c905092915050565b60008214611f1557611f14611cdc565b5b611f1e816118f6565b5050565b60008214611f3357611f32611cdc565b5b611f3c8161196c565b5050565b611f48612290565b611f5381848461223d565b505050565b7f6470696420616c72656164792075706772616465640000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f756e617574686f72697a65642064706964207570677261646500000000000000600082015250565b6120c9816115b5565b6120d4838254611c59565b8083556000825550505050565b600073ffffffffffffffffffffffffffffffffffffffff61210184611edd565b9350801983169250808416831791505092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61214384611edd565b9350801983169250808416831791505092915050565b6000600883026121897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611eea565b6121938683611eea565b95508019841693508086168417925050509392505050565b6121b48261198a565b6121c76121c082611dd3565b83546120e1565b8255505050565b6121d98383836119e4565b505050565b6121e9838383611a4d565b505050565b6121f88282611b9b565b5050565b612205826119d2565b61221861221182611ddd565b8354612117565b8255505050565b811561222e5761222d611cdc565b5b6122388382611be1565b505050565b612246836119d2565b61225a61225282611ddd565b848454612159565b825550505050565b61226b816118ad565b811461227657600080fd5b50565b612282816118df565b811461228d57600080fd5b50565b60009056fea26469706673582212209d15c5501273e10408c38b0c27c1d9008c55404af21e411dc9d13c190f83a2b364736f6c63430008040033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063810a9afa1161008c578063b724de3a11610066578063b724de3a14610212578063dc5d7a2e14610242578063ded8896b14610260578063f2fde38b1461027c576100cf565b8063810a9afa146101a65780638da5cb5b146101d6578063afc26911146101f4576100cf565b80630a874df6146100d4578063144ae85514610104578063362b3e63146101205780635893253c1461013c578063715018a61461016c578063788243d514610176575b600080fd5b6100ee60048036038101906100e99190610dff565b610298565b6040516100fb919061131c565b60405180910390f35b61011e60048036038101906101199190610e80565b61033d565b005b61013a60048036038101906101359190610dff565b6103a5565b005b61015660048036038101906101519190610dff565b6104eb565b604051610163919061131c565b60405180910390f35b61017461058b565b005b610190600480360381019061018b9190610dff565b61059f565b60405161019d91906112e6565b60405180910390f35b6101c060048036038101906101bb9190610dff565b6105dd565b6040516101cd91906113fe565b60405180910390f35b6101de61075b565b6040516101eb91906112e6565b60405180910390f35b6101fc610785565b6040516102099190611420565b60405180910390f35b61022c60048036038101906102279190610dba565b61078b565b6040516102399190611420565b60405180910390f35b61024a610813565b6040516102579190611420565b60405180910390f35b61027a60048036038101906102759190610e28565b610819565b005b61029660048036038101906102919190610d91565b610982565b005b60606067600083815260200190815260200160002080546102b890611c27565b80601f01602080910402602001604051908101604052809291908181526020018280546102e490611c27565b80156103315780601f1061030657610100808354040283529160200191610331565b820191906000526020600020905b81548152906001019060200180831161031457829003601f168201915b50505050509050919050565b610345610a06565b8060686000848152602001908152602001600020818161036591906121ee565b9050507fa9c55ebaa1fada408bd72c2f0ea7c27f5444b105bcff12c5381baac912156ada828260405161039992919061146d565b60405180910390a15050565b60008060019054906101000a900460ff161590508080156103d65750600160008054906101000a900460ff1660ff16105b8061040357506103e530610a84565b1580156104025750600160008054906101000a900460ff1660ff16145b5b610442576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104399061137e565b60405180910390fd5b60016000806101000a81548160ff021916908360ff160217905550801561047f576001600060016101000a81548160ff0219169083151502179055505b610487610aa7565b8160668190555080156104e75760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516104de9190611301565b60405180910390a15b5050565b6067602052806000526040600020600091509050805461050a90611c27565b80601f016020809104026020016040519081016040528092919081815260200182805461053690611c27565b80156105835780601f1061055857610100808354040283529160200191610583565b820191906000526020600020905b81548152906001019060200180831161056657829003601f168201915b505050505081565b610593610a06565b61059d6000610b00565b565b60686020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081565b6105e5610c2f565b606860008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805480602002602001604051908101604052809291908181526020016000905b8282101561074c57838290600052602060002090600202016040518060400160405290816000820180546106b190611c27565b80601f01602080910402602001604051908101604052809291908181526020018280546106dd90611c27565b801561072a5780601f106106ff5761010080835404028352916020019161072a565b820191906000526020600020905b81548152906001019060200180831161070d57829003601f168201915b505050505081526020016001820154815250508152602001906001019061067e565b50505050815250509050919050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60665481565b600080606654905083836067600084815260200190815260200160002091906107b5929190610c5f565b507f96a65efbb6991f67fc8a4c7550fcfd08f1968737d2f5adcded5cd937b3cc0f3d8185856040516107e99392919061143b565b60405180910390a16066600081548092919061080490611c75565b91905055508091505092915050565b60655481565b600060676000858152602001908152602001600020805461083990611c27565b90501461087b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108729061133e565b60405180910390fd5b3273ffffffffffffffffffffffffffffffffffffffff166068600085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461091f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610916906113de565b60405180910390fd5b8181606760008681526020019081526020016000209190610941929190610c5f565b507f442b41840a10393534508176faee6f70b1870707dc24573b67d49f28cbac7f1c8383836040516109759392919061143b565b60405180910390a1505050565b61098a610a06565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156109fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f19061135e565b60405180910390fd5b610a0381610b00565b50565b610a0e610bc6565b73ffffffffffffffffffffffffffffffffffffffff16610a2c61075b565b73ffffffffffffffffffffffffffffffffffffffff1614610a82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a799061139e565b60405180910390fd5b565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16610af6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aed906113be565b60405180910390fd5b610afe610bce565b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b600060019054906101000a900460ff16610c1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c14906113be565b60405180910390fd5b610c2d610c28610bc6565b610b00565b565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b828054610c6b90611c27565b90600052602060002090601f016020900481019282610c8d5760008555610cd4565b82601f10610ca657803560ff1916838001178555610cd4565b82800160010185558215610cd4579182015b82811115610cd3578235825591602001919060010190610cb8565b5b509050610ce19190610ce5565b5090565b5b80821115610cfe576000816000905550600101610ce6565b5090565b600081359050610d1181612262565b92915050565b60008083601f840112610d2957600080fd5b8235905067ffffffffffffffff811115610d4257600080fd5b602083019150836001820283011115610d5a57600080fd5b9250929050565b600060408284031215610d7357600080fd5b81905092915050565b600081359050610d8b81612279565b92915050565b600060208284031215610da357600080fd5b6000610db184828501610d02565b91505092915050565b60008060208385031215610dcd57600080fd5b600083013567ffffffffffffffff811115610de757600080fd5b610df385828601610d17565b92509250509250929050565b600060208284031215610e1157600080fd5b6000610e1f84828501610d7c565b91505092915050565b600080600060408486031215610e3d57600080fd5b6000610e4b86828701610d7c565b935050602084013567ffffffffffffffff811115610e6857600080fd5b610e7486828701610d17565b92509250509250925092565b60008060408385031215610e9357600080fd5b6000610ea185828601610d7c565b925050602083013567ffffffffffffffff811115610ebe57600080fd5b610eca85828601610d61565b9150509250929050565b6000610ee0838361123c565b905092915050565b6000610ef4838361128b565b905092915050565b610f05816118ad565b82525050565b610f14816118ad565b82525050565b6000610f26838561161b565b935083602084028501610f3884611586565b8060005b87811015610f7c578484038952610f538284611818565b610f5d8582610ed4565b9450610f6883611601565b925060208a01995050600181019050610f3c565b50829750879450505050509392505050565b6000610f99826115d5565b610fa3818561161b565b935083602082028501610fb585611590565b8060005b85811015610ff15784840389528151610fd28582610ee8565b9450610fdd8361160e565b925060208a01995050600181019050610fb9565b50829750879550505050505092915050565b61100c8161199c565b82525050565b600061101e838561162c565b935061102b838584611b59565b61103483611ecc565b840190509392505050565b600061104b838561163d565b9350611058838584611b59565b61106183611ecc565b840190509392505050565b6000611077826115f6565b611081818561162c565b9350611091818560208601611b68565b61109a81611ecc565b840191505092915050565b60006110b0826115f6565b6110ba818561163d565b93506110ca818560208601611b68565b6110d381611ecc565b840191505092915050565b60006110eb60158361163d565b91506110f682611f58565b602082019050919050565b600061110e60268361163d565b915061111982611f81565b604082019050919050565b6000611131602e8361163d565b915061113c82611fd0565b604082019050919050565b600061115460208361163d565b915061115f8261201f565b602082019050919050565b6000611177602b8361163d565b915061118282612048565b604082019050919050565b600061119a60198361163d565b91506111a582612097565b602082019050919050565b6000604083016111c36000840184611753565b6111d06000860182610efc565b506111de602084018461176a565b85830360208701526111f1838284610f1a565b925050508091505092915050565b60006040830160008301516112176000860182610efc565b506020830151848203602086015261122f8282610f8e565b9150508091505092915050565b60006040830161124f60008401846117c1565b8583036000870152611262838284611012565b92505050611273602084018461183c565b61128060208601826112c8565b508091505092915050565b600060408301600083015184820360008601526112a8828261106c565b91505060208301516112bd60208601826112c8565b508091505092915050565b6112d1816118df565b82525050565b6112e0816118df565b82525050565b60006020820190506112fb6000830184610f0b565b92915050565b60006020820190506113166000830184611003565b92915050565b6000602082019050818103600083015261133681846110a5565b905092915050565b60006020820190508181036000830152611357816110de565b9050919050565b6000602082019050818103600083015261137781611101565b9050919050565b6000602082019050818103600083015261139781611124565b9050919050565b600060208201905081810360008301526113b781611147565b9050919050565b600060208201905081810360008301526113d78161116a565b9050919050565b600060208201905081810360008301526113f78161118d565b9050919050565b6000602082019050818103600083015261141881846111ff565b905092915050565b600060208201905061143560008301846112d7565b92915050565b600060408201905061145060008301866112d7565b818103602083015261146381848661103f565b9050949350505050565b600060408201905061148260008301856112d7565b818103602083015261149481846111b0565b90509392505050565b600080833560016020038436030381126114b657600080fd5b80840192508235915067ffffffffffffffff8211156114d457600080fd5b6020830192506020820236038313156114ec57600080fd5b509250929050565b6000808335600160200384360303811261150d57600080fd5b80840192508235915067ffffffffffffffff82111561152b57600080fd5b60208301925060018202360383131561154357600080fd5b509250929050565b60008235600160400383360303811261156357600080fd5b80830191505092915050565b600081905061157f826002611853565b9050919050565b6000819050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b600082905092915050565b600081519050919050565b600081549050919050565b600082905092915050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b60208410600081146116a757601f841160018114611677576116708685611c59565b83556116a1565b611680836115b5565b6116956020601f880104820160018301611904565b61169f87856120c0565b505b506116f0565b6116b0826115b5565b6020601f8701048101601f871680156116d1576116d08160018403611d98565b5b6116e36020601f890104840183611904565b6001886002021785555050505b5050505050565b6020831060008114611742576020851060008114611720576117198685611c59565b835561173c565b8360ff1916935083611731846115b5565b556001866002020183555b5061174c565b6001856002020182555b5050505050565b60006117626020840184610d02565b905092915050565b6000808335600160200384360303811261178357600080fd5b83810192508235915060208301925067ffffffffffffffff8211156117a757600080fd5b6020820236038413156117b957600080fd5b509250929050565b600080833560016020038436030381126117da57600080fd5b83810192508235915060208301925067ffffffffffffffff8211156117fe57600080fd5b60018202360384131561181057600080fd5b509250929050565b60008235600160400383360303811261183057600080fd5b82810191505092915050565b600061184b6020840184610d7c565b905092915050565b600061185e826118df565b9150611869836118df565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156118a2576118a1611d0b565b5b828202905092915050565b60006118b8826118bf565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b611901600082611e77565b50565b5b8181101561192357611918600082611f40565b600181019050611905565b5050565b5b818110156119465761193b600082611f22565b600281019050611928565b5050565b818110156119685761195d600082611f40565b60018101905061194a565b5050565b6119796000808301611f04565b611987600060018301611f40565b50565b6000611995826119ae565b9050919050565b60006119a7826118e9565b9050919050565b60006119b9826119c0565b9050919050565b60006119cb826118bf565b9050919050565b60006119dd826118df565b9050919050565b6119ee83836115ca565b6119f88183611e13565b611a0183611586565b611a0a836115a0565b6000805b84811015611a4357611a20848861154b565b611a2b81848661221f565b60208501945060028401935050600181019050611a0e565b5050505050505050565b611a5783836115eb565b67ffffffffffffffff811115611a7057611a6f611d69565b5b611a7a8254611c27565b600080601f8411601f84111715611a9757611a94856115b5565b90505b601f831115611aca576020601f85010481016020851015611ab6578190505b611ac86020601f860104830182611904565b505b601f841160018114611af75760008515611ae5578388013590505b611aef8682611c59565b875550611b4f565b601f1985168260005b82811015611b2557858a01358255600182019150602086019550602081019050611b00565b87831015611b4257858a0135611b3e601f8a1682611cbe565b8355505b6001600289020189555050505b5050505050505050565b82818337600083830152505050565b60005b83811015611b86578082015181840152602081019050611b6b565b83811115611b95576000848401525b50505050565b600081016000830180611bad81611de7565b9050611bb981846121ab565b5050506001810160208301611bce818561149d565b611bd98183866121ce565b505050505050565b6000810160008301611bf381856114f4565b611bfe8183866121de565b50505050600181016020830180611c1481611dfd565b9050611c2081846121fc565b5050505050565b60006002820490506001821680611c3f57607f821691505b60208210811415611c5357611c52611d3a565b5b50919050565b6000611c658383611cbe565b9150826002028217905092915050565b6000611c80826118df565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611cb357611cb2611d0b565b5b600182019050919050565b6000611ccf60001984600802611ef7565b1980831691505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611dc87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802611ef7565b815481168255505050565b6000819050919050565b6000819050919050565b60008135611df481612262565b80915050919050565b60008135611e0a81612279565b80915050919050565b68010000000000000000821115611e2d57611e2c611d69565b5b611e36816115e0565b82825580831015611e7257611e4a8161156f565b611e538461156f565b611e5c846115a0565b818101838201611e6c8183611927565b50505050505b505050565b68010000000000000000821115611e9157611e90611d69565b5b8054611e9c81611c27565b80841115611eb157611eb0848284866116f7565b5b80841015611ec657611ec58482848661164e565b5b50505050565b6000601f19601f8301169050919050565b60008160001b9050919050565b600082821b905092915050565b600082821c905092915050565b60008214611f1557611f14611cdc565b5b611f1e816118f6565b5050565b60008214611f3357611f32611cdc565b5b611f3c8161196c565b5050565b611f48612290565b611f5381848461223d565b505050565b7f6470696420616c72656164792075706772616465640000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f756e617574686f72697a65642064706964207570677261646500000000000000600082015250565b6120c9816115b5565b6120d4838254611c59565b8083556000825550505050565b600073ffffffffffffffffffffffffffffffffffffffff61210184611edd565b9350801983169250808416831791505092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61214384611edd565b9350801983169250808416831791505092915050565b6000600883026121897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611eea565b6121938683611eea565b95508019841693508086168417925050509392505050565b6121b48261198a565b6121c76121c082611dd3565b83546120e1565b8255505050565b6121d98383836119e4565b505050565b6121e9838383611a4d565b505050565b6121f88282611b9b565b5050565b612205826119d2565b61221861221182611ddd565b8354612117565b8255505050565b811561222e5761222d611cdc565b5b6122388382611be1565b505050565b612246836119d2565b61225a61225282611ddd565b848454612159565b825550505050565b61226b816118ad565b811461227657600080fd5b50565b612282816118df565b811461228d57600080fd5b50565b60009056fea26469706673582212209d15c5501273e10408c38b0c27c1d9008c55404af21e411dc9d13c190f83a2b364736f6c63430008040033", + "bytecode": "0x60806040523480156200001157600080fd5b50620000226200002860201b60201c565b620001d3565b600060019054906101000a900460ff16156200007b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000729062000127565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff161015620000ed5760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff604051620000e4919062000149565b60405180910390a15b565b6000620000fe60278362000166565b91506200010b8262000184565b604082019050919050565b620001218162000177565b82525050565b600060208201905081810360008301526200014281620000ef565b9050919050565b600060208201905062000160600083018462000116565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b6122d280620001e36000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063810a9afa1161008c578063b724de3a11610066578063b724de3a14610212578063cfb452b514610242578063ded8896b14610260578063f2fde38b1461027c576100cf565b8063810a9afa146101a65780638da5cb5b146101d6578063afc26911146101f4576100cf565b80630a874df6146100d4578063144ae85514610104578063362b3e63146101205780635893253c1461013c578063715018a61461016c578063788243d514610176575b600080fd5b6100ee60048036038101906100e99190610e06565b610298565b6040516100fb9190611323565b60405180910390f35b61011e60048036038101906101199190610e87565b61033d565b005b61013a60048036038101906101359190610e06565b6103a5565b005b61015660048036038101906101519190610e06565b6104f2565b6040516101639190611323565b60405180910390f35b610174610592565b005b610190600480360381019061018b9190610e06565b6105a6565b60405161019d91906112ed565b60405180910390f35b6101c060048036038101906101bb9190610e06565b6105e4565b6040516101cd9190611405565b60405180910390f35b6101de610762565b6040516101eb91906112ed565b60405180910390f35b6101fc61078c565b6040516102099190611427565b60405180910390f35b61022c60048036038101906102279190610dc1565b610792565b6040516102399190611427565b60405180910390f35b61024a61081a565b6040516102579190611427565b60405180910390f35b61027a60048036038101906102759190610e2f565b610820565b005b61029660048036038101906102919190610d98565b610989565b005b60606067600083815260200190815260200160002080546102b890611c2e565b80601f01602080910402602001604051908101604052809291908181526020018280546102e490611c2e565b80156103315780601f1061030657610100808354040283529160200191610331565b820191906000526020600020905b81548152906001019060200180831161031457829003601f168201915b50505050509050919050565b610345610a0d565b8060686000848152602001908152602001600020818161036591906121f5565b9050507fa9c55ebaa1fada408bd72c2f0ea7c27f5444b105bcff12c5381baac912156ada8282604051610399929190611474565b60405180910390a15050565b60008060019054906101000a900460ff161590508080156103d65750600160008054906101000a900460ff1660ff16105b8061040357506103e530610a8b565b1580156104025750600160008054906101000a900460ff1660ff16145b5b610442576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043990611385565b60405180910390fd5b60016000806101000a81548160ff021916908360ff160217905550801561047f576001600060016101000a81548160ff0219169083151502179055505b610487610aae565b816065819055508160668190555080156104ee5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516104e59190611308565b60405180910390a15b5050565b6067602052806000526040600020600091509050805461051190611c2e565b80601f016020809104026020016040519081016040528092919081815260200182805461053d90611c2e565b801561058a5780601f1061055f5761010080835404028352916020019161058a565b820191906000526020600020905b81548152906001019060200180831161056d57829003601f168201915b505050505081565b61059a610a0d565b6105a46000610b07565b565b60686020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081565b6105ec610c36565b606860008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805480602002602001604051908101604052809291908181526020016000905b8282101561075357838290600052602060002090600202016040518060400160405290816000820180546106b890611c2e565b80601f01602080910402602001604051908101604052809291908181526020018280546106e490611c2e565b80156107315780601f1061070657610100808354040283529160200191610731565b820191906000526020600020905b81548152906001019060200180831161071457829003601f168201915b5050505050815260200160018201548152505081526020019060010190610685565b50505050815250509050919050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60665481565b600080606654905083836067600084815260200190815260200160002091906107bc929190610c66565b507f96a65efbb6991f67fc8a4c7550fcfd08f1968737d2f5adcded5cd937b3cc0f3d8185856040516107f093929190611442565b60405180910390a16066600081548092919061080b90611c7c565b91905055508091505092915050565b60655481565b600060676000858152602001908152602001600020805461084090611c2e565b905014610882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087990611345565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166068600085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610926576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091d906113e5565b60405180910390fd5b8181606760008681526020019081526020016000209190610948929190610c66565b507f442b41840a10393534508176faee6f70b1870707dc24573b67d49f28cbac7f1c83838360405161097c93929190611442565b60405180910390a1505050565b610991610a0d565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610a01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f890611365565b60405180910390fd5b610a0a81610b07565b50565b610a15610bcd565b73ffffffffffffffffffffffffffffffffffffffff16610a33610762565b73ffffffffffffffffffffffffffffffffffffffff1614610a89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a80906113a5565b60405180910390fd5b565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16610afd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af4906113c5565b60405180910390fd5b610b05610bd5565b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b600060019054906101000a900460ff16610c24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1b906113c5565b60405180910390fd5b610c34610c2f610bcd565b610b07565b565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b828054610c7290611c2e565b90600052602060002090601f016020900481019282610c945760008555610cdb565b82601f10610cad57803560ff1916838001178555610cdb565b82800160010185558215610cdb579182015b82811115610cda578235825591602001919060010190610cbf565b5b509050610ce89190610cec565b5090565b5b80821115610d05576000816000905550600101610ced565b5090565b600081359050610d1881612269565b92915050565b60008083601f840112610d3057600080fd5b8235905067ffffffffffffffff811115610d4957600080fd5b602083019150836001820283011115610d6157600080fd5b9250929050565b600060408284031215610d7a57600080fd5b81905092915050565b600081359050610d9281612280565b92915050565b600060208284031215610daa57600080fd5b6000610db884828501610d09565b91505092915050565b60008060208385031215610dd457600080fd5b600083013567ffffffffffffffff811115610dee57600080fd5b610dfa85828601610d1e565b92509250509250929050565b600060208284031215610e1857600080fd5b6000610e2684828501610d83565b91505092915050565b600080600060408486031215610e4457600080fd5b6000610e5286828701610d83565b935050602084013567ffffffffffffffff811115610e6f57600080fd5b610e7b86828701610d1e565b92509250509250925092565b60008060408385031215610e9a57600080fd5b6000610ea885828601610d83565b925050602083013567ffffffffffffffff811115610ec557600080fd5b610ed185828601610d68565b9150509250929050565b6000610ee78383611243565b905092915050565b6000610efb8383611292565b905092915050565b610f0c816118b4565b82525050565b610f1b816118b4565b82525050565b6000610f2d8385611622565b935083602084028501610f3f8461158d565b8060005b87811015610f83578484038952610f5a828461181f565b610f648582610edb565b9450610f6f83611608565b925060208a01995050600181019050610f43565b50829750879450505050509392505050565b6000610fa0826115dc565b610faa8185611622565b935083602082028501610fbc85611597565b8060005b85811015610ff85784840389528151610fd98582610eef565b9450610fe483611615565b925060208a01995050600181019050610fc0565b50829750879550505050505092915050565b611013816119a3565b82525050565b60006110258385611633565b9350611032838584611b60565b61103b83611ed3565b840190509392505050565b60006110528385611644565b935061105f838584611b60565b61106883611ed3565b840190509392505050565b600061107e826115fd565b6110888185611633565b9350611098818560208601611b6f565b6110a181611ed3565b840191505092915050565b60006110b7826115fd565b6110c18185611644565b93506110d1818560208601611b6f565b6110da81611ed3565b840191505092915050565b60006110f2601583611644565b91506110fd82611f5f565b602082019050919050565b6000611115602683611644565b915061112082611f88565b604082019050919050565b6000611138602e83611644565b915061114382611fd7565b604082019050919050565b600061115b602083611644565b915061116682612026565b602082019050919050565b600061117e602b83611644565b91506111898261204f565b604082019050919050565b60006111a1601983611644565b91506111ac8261209e565b602082019050919050565b6000604083016111ca600084018461175a565b6111d76000860182610f03565b506111e56020840184611771565b85830360208701526111f8838284610f21565b925050508091505092915050565b600060408301600083015161121e6000860182610f03565b50602083015184820360208601526112368282610f95565b9150508091505092915050565b60006040830161125660008401846117c8565b8583036000870152611269838284611019565b9250505061127a6020840184611843565b61128760208601826112cf565b508091505092915050565b600060408301600083015184820360008601526112af8282611073565b91505060208301516112c460208601826112cf565b508091505092915050565b6112d8816118e6565b82525050565b6112e7816118e6565b82525050565b60006020820190506113026000830184610f12565b92915050565b600060208201905061131d600083018461100a565b92915050565b6000602082019050818103600083015261133d81846110ac565b905092915050565b6000602082019050818103600083015261135e816110e5565b9050919050565b6000602082019050818103600083015261137e81611108565b9050919050565b6000602082019050818103600083015261139e8161112b565b9050919050565b600060208201905081810360008301526113be8161114e565b9050919050565b600060208201905081810360008301526113de81611171565b9050919050565b600060208201905081810360008301526113fe81611194565b9050919050565b6000602082019050818103600083015261141f8184611206565b905092915050565b600060208201905061143c60008301846112de565b92915050565b600060408201905061145760008301866112de565b818103602083015261146a818486611046565b9050949350505050565b600060408201905061148960008301856112de565b818103602083015261149b81846111b7565b90509392505050565b600080833560016020038436030381126114bd57600080fd5b80840192508235915067ffffffffffffffff8211156114db57600080fd5b6020830192506020820236038313156114f357600080fd5b509250929050565b6000808335600160200384360303811261151457600080fd5b80840192508235915067ffffffffffffffff82111561153257600080fd5b60208301925060018202360383131561154a57600080fd5b509250929050565b60008235600160400383360303811261156a57600080fd5b80830191505092915050565b600081905061158682600261185a565b9050919050565b6000819050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b600082905092915050565b600081519050919050565b600081549050919050565b600082905092915050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b60208410600081146116ae57601f84116001811461167e576116778685611c60565b83556116a8565b611687836115bc565b61169c6020601f88010482016001830161190b565b6116a687856120c7565b505b506116f7565b6116b7826115bc565b6020601f8701048101601f871680156116d8576116d78160018403611d9f565b5b6116ea6020601f89010484018361190b565b6001886002021785555050505b5050505050565b6020831060008114611749576020851060008114611727576117208685611c60565b8355611743565b8360ff1916935083611738846115bc565b556001866002020183555b50611753565b6001856002020182555b5050505050565b60006117696020840184610d09565b905092915050565b6000808335600160200384360303811261178a57600080fd5b83810192508235915060208301925067ffffffffffffffff8211156117ae57600080fd5b6020820236038413156117c057600080fd5b509250929050565b600080833560016020038436030381126117e157600080fd5b83810192508235915060208301925067ffffffffffffffff82111561180557600080fd5b60018202360384131561181757600080fd5b509250929050565b60008235600160400383360303811261183757600080fd5b82810191505092915050565b60006118526020840184610d83565b905092915050565b6000611865826118e6565b9150611870836118e6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156118a9576118a8611d12565b5b828202905092915050565b60006118bf826118c6565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b611908600082611e7e565b50565b5b8181101561192a5761191f600082611f47565b60018101905061190c565b5050565b5b8181101561194d57611942600082611f29565b60028101905061192f565b5050565b8181101561196f57611964600082611f47565b600181019050611951565b5050565b6119806000808301611f0b565b61198e600060018301611f47565b50565b600061199c826119b5565b9050919050565b60006119ae826118f0565b9050919050565b60006119c0826119c7565b9050919050565b60006119d2826118c6565b9050919050565b60006119e4826118e6565b9050919050565b6119f583836115d1565b6119ff8183611e1a565b611a088361158d565b611a11836115a7565b6000805b84811015611a4a57611a278488611552565b611a32818486612226565b60208501945060028401935050600181019050611a15565b5050505050505050565b611a5e83836115f2565b67ffffffffffffffff811115611a7757611a76611d70565b5b611a818254611c2e565b600080601f8411601f84111715611a9e57611a9b856115bc565b90505b601f831115611ad1576020601f85010481016020851015611abd578190505b611acf6020601f86010483018261190b565b505b601f841160018114611afe5760008515611aec578388013590505b611af68682611c60565b875550611b56565b601f1985168260005b82811015611b2c57858a01358255600182019150602086019550602081019050611b07565b87831015611b4957858a0135611b45601f8a1682611cc5565b8355505b6001600289020189555050505b5050505050505050565b82818337600083830152505050565b60005b83811015611b8d578082015181840152602081019050611b72565b83811115611b9c576000848401525b50505050565b600081016000830180611bb481611dee565b9050611bc081846121b2565b5050506001810160208301611bd581856114a4565b611be08183866121d5565b505050505050565b6000810160008301611bfa81856114fb565b611c058183866121e5565b50505050600181016020830180611c1b81611e04565b9050611c278184612203565b5050505050565b60006002820490506001821680611c4657607f821691505b60208210811415611c5a57611c59611d41565b5b50919050565b6000611c6c8383611cc5565b9150826002028217905092915050565b6000611c87826118e6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611cba57611cb9611d12565b5b600182019050919050565b6000611cd660001984600802611efe565b1980831691505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611dcf7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802611efe565b815481168255505050565b6000819050919050565b6000819050919050565b60008135611dfb81612269565b80915050919050565b60008135611e1181612280565b80915050919050565b68010000000000000000821115611e3457611e33611d70565b5b611e3d816115e7565b82825580831015611e7957611e5181611576565b611e5a84611576565b611e63846115a7565b818101838201611e73818361192e565b50505050505b505050565b68010000000000000000821115611e9857611e97611d70565b5b8054611ea381611c2e565b80841115611eb857611eb7848284866116fe565b5b80841015611ecd57611ecc84828486611655565b5b50505050565b6000601f19601f8301169050919050565b60008160001b9050919050565b600082821b905092915050565b600082821c905092915050565b60008214611f1c57611f1b611ce3565b5b611f25816118fd565b5050565b60008214611f3a57611f39611ce3565b5b611f4381611973565b5050565b611f4f612297565b611f5a818484612244565b505050565b7f6470696420616c72656164792075706772616465640000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f756e617574686f72697a65642064706964207570677261646500000000000000600082015250565b6120d0816115bc565b6120db838254611c60565b8083556000825550505050565b600073ffffffffffffffffffffffffffffffffffffffff61210884611ee4565b9350801983169250808416831791505092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61214a84611ee4565b9350801983169250808416831791505092915050565b6000600883026121907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611ef1565b61219a8683611ef1565b95508019841693508086168417925050509392505050565b6121bb82611991565b6121ce6121c782611dda565b83546120e8565b8255505050565b6121e08383836119eb565b505050565b6121f0838383611a54565b505050565b6121ff8282611ba2565b5050565b61220c826119d9565b61221f61221882611de4565b835461211e565b8255505050565b811561223557612234611ce3565b5b61223f8382611be8565b505050565b61224d836119d9565b61226161225982611de4565b848454612160565b825550505050565b612272816118b4565b811461227d57600080fd5b50565b612289816118e6565b811461229457600080fd5b50565b60009056fea264697066735822122084f5f1681ed8582b0b01a3c050af63e3bc886fc8eb1d7bfbad5710635ba9f00f64736f6c63430008040033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063810a9afa1161008c578063b724de3a11610066578063b724de3a14610212578063cfb452b514610242578063ded8896b14610260578063f2fde38b1461027c576100cf565b8063810a9afa146101a65780638da5cb5b146101d6578063afc26911146101f4576100cf565b80630a874df6146100d4578063144ae85514610104578063362b3e63146101205780635893253c1461013c578063715018a61461016c578063788243d514610176575b600080fd5b6100ee60048036038101906100e99190610e06565b610298565b6040516100fb9190611323565b60405180910390f35b61011e60048036038101906101199190610e87565b61033d565b005b61013a60048036038101906101359190610e06565b6103a5565b005b61015660048036038101906101519190610e06565b6104f2565b6040516101639190611323565b60405180910390f35b610174610592565b005b610190600480360381019061018b9190610e06565b6105a6565b60405161019d91906112ed565b60405180910390f35b6101c060048036038101906101bb9190610e06565b6105e4565b6040516101cd9190611405565b60405180910390f35b6101de610762565b6040516101eb91906112ed565b60405180910390f35b6101fc61078c565b6040516102099190611427565b60405180910390f35b61022c60048036038101906102279190610dc1565b610792565b6040516102399190611427565b60405180910390f35b61024a61081a565b6040516102579190611427565b60405180910390f35b61027a60048036038101906102759190610e2f565b610820565b005b61029660048036038101906102919190610d98565b610989565b005b60606067600083815260200190815260200160002080546102b890611c2e565b80601f01602080910402602001604051908101604052809291908181526020018280546102e490611c2e565b80156103315780601f1061030657610100808354040283529160200191610331565b820191906000526020600020905b81548152906001019060200180831161031457829003601f168201915b50505050509050919050565b610345610a0d565b8060686000848152602001908152602001600020818161036591906121f5565b9050507fa9c55ebaa1fada408bd72c2f0ea7c27f5444b105bcff12c5381baac912156ada8282604051610399929190611474565b60405180910390a15050565b60008060019054906101000a900460ff161590508080156103d65750600160008054906101000a900460ff1660ff16105b8061040357506103e530610a8b565b1580156104025750600160008054906101000a900460ff1660ff16145b5b610442576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043990611385565b60405180910390fd5b60016000806101000a81548160ff021916908360ff160217905550801561047f576001600060016101000a81548160ff0219169083151502179055505b610487610aae565b816065819055508160668190555080156104ee5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516104e59190611308565b60405180910390a15b5050565b6067602052806000526040600020600091509050805461051190611c2e565b80601f016020809104026020016040519081016040528092919081815260200182805461053d90611c2e565b801561058a5780601f1061055f5761010080835404028352916020019161058a565b820191906000526020600020905b81548152906001019060200180831161056d57829003601f168201915b505050505081565b61059a610a0d565b6105a46000610b07565b565b60686020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081565b6105ec610c36565b606860008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805480602002602001604051908101604052809291908181526020016000905b8282101561075357838290600052602060002090600202016040518060400160405290816000820180546106b890611c2e565b80601f01602080910402602001604051908101604052809291908181526020018280546106e490611c2e565b80156107315780601f1061070657610100808354040283529160200191610731565b820191906000526020600020905b81548152906001019060200180831161071457829003601f168201915b5050505050815260200160018201548152505081526020019060010190610685565b50505050815250509050919050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60665481565b600080606654905083836067600084815260200190815260200160002091906107bc929190610c66565b507f96a65efbb6991f67fc8a4c7550fcfd08f1968737d2f5adcded5cd937b3cc0f3d8185856040516107f093929190611442565b60405180910390a16066600081548092919061080b90611c7c565b91905055508091505092915050565b60655481565b600060676000858152602001908152602001600020805461084090611c2e565b905014610882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087990611345565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166068600085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610926576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091d906113e5565b60405180910390fd5b8181606760008681526020019081526020016000209190610948929190610c66565b507f442b41840a10393534508176faee6f70b1870707dc24573b67d49f28cbac7f1c83838360405161097c93929190611442565b60405180910390a1505050565b610991610a0d565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610a01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f890611365565b60405180910390fd5b610a0a81610b07565b50565b610a15610bcd565b73ffffffffffffffffffffffffffffffffffffffff16610a33610762565b73ffffffffffffffffffffffffffffffffffffffff1614610a89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a80906113a5565b60405180910390fd5b565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16610afd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af4906113c5565b60405180910390fd5b610b05610bd5565b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b600060019054906101000a900460ff16610c24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1b906113c5565b60405180910390fd5b610c34610c2f610bcd565b610b07565b565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b828054610c7290611c2e565b90600052602060002090601f016020900481019282610c945760008555610cdb565b82601f10610cad57803560ff1916838001178555610cdb565b82800160010185558215610cdb579182015b82811115610cda578235825591602001919060010190610cbf565b5b509050610ce89190610cec565b5090565b5b80821115610d05576000816000905550600101610ced565b5090565b600081359050610d1881612269565b92915050565b60008083601f840112610d3057600080fd5b8235905067ffffffffffffffff811115610d4957600080fd5b602083019150836001820283011115610d6157600080fd5b9250929050565b600060408284031215610d7a57600080fd5b81905092915050565b600081359050610d9281612280565b92915050565b600060208284031215610daa57600080fd5b6000610db884828501610d09565b91505092915050565b60008060208385031215610dd457600080fd5b600083013567ffffffffffffffff811115610dee57600080fd5b610dfa85828601610d1e565b92509250509250929050565b600060208284031215610e1857600080fd5b6000610e2684828501610d83565b91505092915050565b600080600060408486031215610e4457600080fd5b6000610e5286828701610d83565b935050602084013567ffffffffffffffff811115610e6f57600080fd5b610e7b86828701610d1e565b92509250509250925092565b60008060408385031215610e9a57600080fd5b6000610ea885828601610d83565b925050602083013567ffffffffffffffff811115610ec557600080fd5b610ed185828601610d68565b9150509250929050565b6000610ee78383611243565b905092915050565b6000610efb8383611292565b905092915050565b610f0c816118b4565b82525050565b610f1b816118b4565b82525050565b6000610f2d8385611622565b935083602084028501610f3f8461158d565b8060005b87811015610f83578484038952610f5a828461181f565b610f648582610edb565b9450610f6f83611608565b925060208a01995050600181019050610f43565b50829750879450505050509392505050565b6000610fa0826115dc565b610faa8185611622565b935083602082028501610fbc85611597565b8060005b85811015610ff85784840389528151610fd98582610eef565b9450610fe483611615565b925060208a01995050600181019050610fc0565b50829750879550505050505092915050565b611013816119a3565b82525050565b60006110258385611633565b9350611032838584611b60565b61103b83611ed3565b840190509392505050565b60006110528385611644565b935061105f838584611b60565b61106883611ed3565b840190509392505050565b600061107e826115fd565b6110888185611633565b9350611098818560208601611b6f565b6110a181611ed3565b840191505092915050565b60006110b7826115fd565b6110c18185611644565b93506110d1818560208601611b6f565b6110da81611ed3565b840191505092915050565b60006110f2601583611644565b91506110fd82611f5f565b602082019050919050565b6000611115602683611644565b915061112082611f88565b604082019050919050565b6000611138602e83611644565b915061114382611fd7565b604082019050919050565b600061115b602083611644565b915061116682612026565b602082019050919050565b600061117e602b83611644565b91506111898261204f565b604082019050919050565b60006111a1601983611644565b91506111ac8261209e565b602082019050919050565b6000604083016111ca600084018461175a565b6111d76000860182610f03565b506111e56020840184611771565b85830360208701526111f8838284610f21565b925050508091505092915050565b600060408301600083015161121e6000860182610f03565b50602083015184820360208601526112368282610f95565b9150508091505092915050565b60006040830161125660008401846117c8565b8583036000870152611269838284611019565b9250505061127a6020840184611843565b61128760208601826112cf565b508091505092915050565b600060408301600083015184820360008601526112af8282611073565b91505060208301516112c460208601826112cf565b508091505092915050565b6112d8816118e6565b82525050565b6112e7816118e6565b82525050565b60006020820190506113026000830184610f12565b92915050565b600060208201905061131d600083018461100a565b92915050565b6000602082019050818103600083015261133d81846110ac565b905092915050565b6000602082019050818103600083015261135e816110e5565b9050919050565b6000602082019050818103600083015261137e81611108565b9050919050565b6000602082019050818103600083015261139e8161112b565b9050919050565b600060208201905081810360008301526113be8161114e565b9050919050565b600060208201905081810360008301526113de81611171565b9050919050565b600060208201905081810360008301526113fe81611194565b9050919050565b6000602082019050818103600083015261141f8184611206565b905092915050565b600060208201905061143c60008301846112de565b92915050565b600060408201905061145760008301866112de565b818103602083015261146a818486611046565b9050949350505050565b600060408201905061148960008301856112de565b818103602083015261149b81846111b7565b90509392505050565b600080833560016020038436030381126114bd57600080fd5b80840192508235915067ffffffffffffffff8211156114db57600080fd5b6020830192506020820236038313156114f357600080fd5b509250929050565b6000808335600160200384360303811261151457600080fd5b80840192508235915067ffffffffffffffff82111561153257600080fd5b60208301925060018202360383131561154a57600080fd5b509250929050565b60008235600160400383360303811261156a57600080fd5b80830191505092915050565b600081905061158682600261185a565b9050919050565b6000819050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b600082905092915050565b600081519050919050565b600081549050919050565b600082905092915050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b60208410600081146116ae57601f84116001811461167e576116778685611c60565b83556116a8565b611687836115bc565b61169c6020601f88010482016001830161190b565b6116a687856120c7565b505b506116f7565b6116b7826115bc565b6020601f8701048101601f871680156116d8576116d78160018403611d9f565b5b6116ea6020601f89010484018361190b565b6001886002021785555050505b5050505050565b6020831060008114611749576020851060008114611727576117208685611c60565b8355611743565b8360ff1916935083611738846115bc565b556001866002020183555b50611753565b6001856002020182555b5050505050565b60006117696020840184610d09565b905092915050565b6000808335600160200384360303811261178a57600080fd5b83810192508235915060208301925067ffffffffffffffff8211156117ae57600080fd5b6020820236038413156117c057600080fd5b509250929050565b600080833560016020038436030381126117e157600080fd5b83810192508235915060208301925067ffffffffffffffff82111561180557600080fd5b60018202360384131561181757600080fd5b509250929050565b60008235600160400383360303811261183757600080fd5b82810191505092915050565b60006118526020840184610d83565b905092915050565b6000611865826118e6565b9150611870836118e6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156118a9576118a8611d12565b5b828202905092915050565b60006118bf826118c6565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b611908600082611e7e565b50565b5b8181101561192a5761191f600082611f47565b60018101905061190c565b5050565b5b8181101561194d57611942600082611f29565b60028101905061192f565b5050565b8181101561196f57611964600082611f47565b600181019050611951565b5050565b6119806000808301611f0b565b61198e600060018301611f47565b50565b600061199c826119b5565b9050919050565b60006119ae826118f0565b9050919050565b60006119c0826119c7565b9050919050565b60006119d2826118c6565b9050919050565b60006119e4826118e6565b9050919050565b6119f583836115d1565b6119ff8183611e1a565b611a088361158d565b611a11836115a7565b6000805b84811015611a4a57611a278488611552565b611a32818486612226565b60208501945060028401935050600181019050611a15565b5050505050505050565b611a5e83836115f2565b67ffffffffffffffff811115611a7757611a76611d70565b5b611a818254611c2e565b600080601f8411601f84111715611a9e57611a9b856115bc565b90505b601f831115611ad1576020601f85010481016020851015611abd578190505b611acf6020601f86010483018261190b565b505b601f841160018114611afe5760008515611aec578388013590505b611af68682611c60565b875550611b56565b601f1985168260005b82811015611b2c57858a01358255600182019150602086019550602081019050611b07565b87831015611b4957858a0135611b45601f8a1682611cc5565b8355505b6001600289020189555050505b5050505050505050565b82818337600083830152505050565b60005b83811015611b8d578082015181840152602081019050611b72565b83811115611b9c576000848401525b50505050565b600081016000830180611bb481611dee565b9050611bc081846121b2565b5050506001810160208301611bd581856114a4565b611be08183866121d5565b505050505050565b6000810160008301611bfa81856114fb565b611c058183866121e5565b50505050600181016020830180611c1b81611e04565b9050611c278184612203565b5050505050565b60006002820490506001821680611c4657607f821691505b60208210811415611c5a57611c59611d41565b5b50919050565b6000611c6c8383611cc5565b9150826002028217905092915050565b6000611c87826118e6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611cba57611cb9611d12565b5b600182019050919050565b6000611cd660001984600802611efe565b1980831691505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611dcf7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802611efe565b815481168255505050565b6000819050919050565b6000819050919050565b60008135611dfb81612269565b80915050919050565b60008135611e1181612280565b80915050919050565b68010000000000000000821115611e3457611e33611d70565b5b611e3d816115e7565b82825580831015611e7957611e5181611576565b611e5a84611576565b611e63846115a7565b818101838201611e73818361192e565b50505050505b505050565b68010000000000000000821115611e9857611e97611d70565b5b8054611ea381611c2e565b80841115611eb857611eb7848284866116fe565b5b80841015611ecd57611ecc84828486611655565b5b50505050565b6000601f19601f8301169050919050565b60008160001b9050919050565b600082821b905092915050565b600082821c905092915050565b60008214611f1c57611f1b611ce3565b5b611f25816118fd565b5050565b60008214611f3a57611f39611ce3565b5b611f4381611973565b5050565b611f4f612297565b611f5a818484612244565b505050565b7f6470696420616c72656164792075706772616465640000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f756e617574686f72697a65642064706964207570677261646500000000000000600082015250565b6120d0816115bc565b6120db838254611c60565b8083556000825550505050565b600073ffffffffffffffffffffffffffffffffffffffff61210884611ee4565b9350801983169250808416831791505092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61214a84611ee4565b9350801983169250808416831791505092915050565b6000600883026121907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611ef1565b61219a8683611ef1565b95508019841693508086168417925050509392505050565b6121bb82611991565b6121ce6121c782611dda565b83546120e8565b8255505050565b6121e08383836119eb565b505050565b6121f0838383611a54565b505050565b6121ff8282611ba2565b5050565b61220c826119d9565b61221f61221882611de4565b835461211e565b8255505050565b811561223557612234611ce3565b5b61223f8382611be8565b505050565b61224d836119d9565b61226161225982611de4565b848454612160565b825550505050565b612272816118b4565b811461227d57600080fd5b50565b612289816118e6565b811461229457600080fd5b50565b60009056fea264697066735822122084f5f1681ed8582b0b01a3c050af63e3bc886fc8eb1d7bfbad5710635ba9f00f64736f6c63430008040033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/desci-contracts/contracts/DpidAliasRegistry.sol b/desci-contracts/contracts/DpidAliasRegistry.sol index c68f6b50f..f7b2010d5 100644 --- a/desci-contracts/contracts/DpidAliasRegistry.sol +++ b/desci-contracts/contracts/DpidAliasRegistry.sol @@ -4,7 +4,10 @@ pragma solidity ^0.8.0; import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; contract DpidAliasRegistry is OwnableUpgradeable { - uint256 public _firstDpid; + // Only written at time of initialization + uint256 public firstDpid; + + // Incremented on each dPID mint uint256 public nextDpid; // dpid => codex streamID @@ -16,10 +19,10 @@ contract DpidAliasRegistry is OwnableUpgradeable { _disableInitializers(); } - function __DpidAliasRegistry_init(uint256 firstDpid) public initializer { + function __DpidAliasRegistry_init(uint256 _firstDpid) public initializer { OwnableUpgradeable.__Ownable_init(); - firstDpid = firstDpid; - nextDpid = firstDpid; + firstDpid = _firstDpid; + nextDpid = _firstDpid; } /** @@ -56,7 +59,7 @@ contract DpidAliasRegistry is OwnableUpgradeable { struct LegacyVersion { string cid; - uint256 timestamp; + uint256 time; } struct LegacyDpidEntry { @@ -104,7 +107,7 @@ contract DpidAliasRegistry is OwnableUpgradeable { // Assert that this dPID has not been set in the main registry require(bytes(registry[dpid]).length == 0, "dpid already upgraded"); // Assert that the tx was made by the owner of the imported entry - require(legacy[dpid].owner == tx.origin, "unauthorized dpid upgrade"); + require(legacy[dpid].owner == msg.sender, "unauthorized dpid upgrade"); // Reclaim old dpid registry[dpid] = streamId; diff --git a/desci-contracts/hardhat.config.ts b/desci-contracts/hardhat.config.ts index 70862b6b1..0bbe69f02 100644 --- a/desci-contracts/hardhat.config.ts +++ b/desci-contracts/hardhat.config.ts @@ -35,8 +35,6 @@ module.exports = { coinmarketcap: process.env.COINMARKETCAP_API_KEY, }, networks: { - // NOTE: hardhat node has a bug with websockets: https://github.com/nomiclabs/hardhat/issues/588 - // alternative is to use ganache for more than running contract tests hardhat: { chainId: 1337, accounts: { diff --git a/desci-contracts/index.ts b/desci-contracts/index.ts index 3a0f4b785..7ded7bf67 100644 --- a/desci-contracts/index.ts +++ b/desci-contracts/index.ts @@ -5,6 +5,7 @@ import devRoInfo from "./.openzeppelin/sepoliaDev-research-object.json"; import devDpidInfo from "./.openzeppelin/sepoliaDev-dpid.json"; import prodRoInfo from "./.openzeppelin/sepoliaProd-research-object.json"; import prodDpidInfo from "./.openzeppelin/sepoliaProd-dpid.json"; +import localDpidAliasInfo from "./.openzeppelin/unknown-dpid-alias-registry.json"; export const contracts = { localRoInfo, @@ -13,4 +14,5 @@ export const contracts = { devDpidInfo, prodRoInfo, prodDpidInfo, + localDpidAliasInfo, }; diff --git a/desci-contracts/package.json b/desci-contracts/package.json index ac3089b40..ba1f4829f 100644 --- a/desci-contracts/package.json +++ b/desci-contracts/package.json @@ -1,7 +1,7 @@ { "name": "@desci-labs/desci-contracts", "description": "Smart contracts implementing DeSci Nodes on-chain state and logic", - "version": "0.2.4", + "version": "0.2.5-rc2", "license": "MIT", "scripts": { "test": "hardhat clean && hardhat test", diff --git a/desci-contracts/scripts/migrateToAliasRegistry.mjs b/desci-contracts/scripts/migrateToAliasRegistry.mjs new file mode 100644 index 000000000..916ad9f2b --- /dev/null +++ b/desci-contracts/scripts/migrateToAliasRegistry.mjs @@ -0,0 +1,61 @@ +import hardhat from "hardhat"; +const { ethers } = hardhat; +import axios from "axios"; + +const getDpidPage = async (page) => { + const { data } = await axios.get( + `https://dev-beta.dpid.org/api/v1/dpid?size=100&page=${page}` + ); + return data; +}; + +const allDpids = (await Promise.all( + [1,2,3].map(getDpidPage) +)).flat(); + +const toImportEntry = (dpid) => [ + dpid.dpid, + { + owner: dpid.researchObject.owner, + versions: dpid.researchObject.versions.map(v => ({cid: v.cid, time: v.time})) + } +]; + +const importEntries = allDpids.map(toImportEntry); + +const DpidAliasRegistryFactory = await ethers.getContractFactory("DpidAliasRegistry"); + +const registry = await upgrades.deployProxy( + DpidAliasRegistryFactory, + [ + 500 // firstDpid + ], + { + initializer: "__DpidAliasRegistry_init" + } +); + +await registry.deployed(); + +const sliceToImport = importEntries.slice(0,5); +console.log("Importing dPIDs:", sliceToImport.map(s => s[0]).join(", ")) + +const results = []; + +for (const [ dpid, entry ] of importEntries.slice(0, 5)) { + console.log(`✨ Importing dPID ${dpid}...`) + await registry.importLegacyDpid(dpid, entry); + + console.log(`🔎 Resolving dPID ${dpid} from new contract...`) + const fromContract = await registry.legacyLookup(dpid); + + const result = { + dpid, + owner: fromContract[0], + versions: fromContract[1].map(([cid, time]) => ({cid, time: ethers.BigNumber.from(time).toNumber() })) + }; + + console.log(`🎊 Found migrated history of dPID ${dpid} in new contract: \n${JSON.stringify(result, undefined, 2)}`) + console.log("-----------------------------------------------------------------") +}; + diff --git a/desci-contracts/test/DpidAliasRegistry.ts b/desci-contracts/test/DpidAliasRegistry.ts index 006398a6a..fb4825a1c 100644 --- a/desci-contracts/test/DpidAliasRegistry.ts +++ b/desci-contracts/test/DpidAliasRegistry.ts @@ -136,7 +136,7 @@ describe("dPID", () => { versions: [ { cid: "bafybeihdwdcefgh4dqkjv67uzcmw7ojee6xedzdetojuzjevtenxquvyku", - timestamp: 1716369952, + time: 1716369952, }, ], }; @@ -158,7 +158,7 @@ describe("dPID", () => { expect(legacyEntry.owner).to.equal(migrationEntry.owner); expect(legacyEntry.versions.length).to.equal(1); expect(legacyEntry.versions[0].cid).to.equal("bafybeihdwdcefgh4dqkjv67uzcmw7ojee6xedzdetojuzjevtenxquvyku"); - expect(legacyEntry.versions[0].timestamp).to.equal(1716369952); + expect(legacyEntry.versions[0].time).to.equal(1716369952); }); it("emits an event on success", () => { diff --git a/desci-contracts/typechain-types/DpidAliasRegistry.ts b/desci-contracts/typechain-types/DpidAliasRegistry.ts index 7fe4135e1..9e8188926 100644 --- a/desci-contracts/typechain-types/DpidAliasRegistry.ts +++ b/desci-contracts/typechain-types/DpidAliasRegistry.ts @@ -18,11 +18,11 @@ import { Listener, Provider } from "@ethersproject/providers"; import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; export declare namespace DpidAliasRegistry { - export type LegacyVersionStruct = { cid: string; timestamp: BigNumberish }; + export type LegacyVersionStruct = { cid: string; time: BigNumberish }; export type LegacyVersionStructOutput = [string, BigNumber] & { cid: string; - timestamp: BigNumber; + time: BigNumber; }; export type LegacyDpidEntryStruct = { @@ -43,7 +43,7 @@ export interface DpidAliasRegistryInterface extends utils.Interface { contractName: "DpidAliasRegistry"; functions: { "__DpidAliasRegistry_init(uint256)": FunctionFragment; - "_firstDpid()": FunctionFragment; + "firstDpid()": FunctionFragment; "importLegacyDpid(uint256,(address,(string,uint256)[]))": FunctionFragment; "legacy(uint256)": FunctionFragment; "legacyLookup(uint256)": FunctionFragment; @@ -61,10 +61,7 @@ export interface DpidAliasRegistryInterface extends utils.Interface { functionFragment: "__DpidAliasRegistry_init", values: [BigNumberish] ): string; - encodeFunctionData( - functionFragment: "_firstDpid", - values?: undefined - ): string; + encodeFunctionData(functionFragment: "firstDpid", values?: undefined): string; encodeFunctionData( functionFragment: "importLegacyDpid", values: [BigNumberish, DpidAliasRegistry.LegacyDpidEntryStruct] @@ -105,7 +102,7 @@ export interface DpidAliasRegistryInterface extends utils.Interface { functionFragment: "__DpidAliasRegistry_init", data: BytesLike ): Result; - decodeFunctionResult(functionFragment: "_firstDpid", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "firstDpid", data: BytesLike): Result; decodeFunctionResult( functionFragment: "importLegacyDpid", data: BytesLike @@ -210,11 +207,11 @@ export interface DpidAliasRegistry extends BaseContract { functions: { __DpidAliasRegistry_init( - firstDpid: BigNumberish, + _firstDpid: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; - _firstDpid(overrides?: CallOverrides): Promise<[BigNumber]>; + firstDpid(overrides?: CallOverrides): Promise<[BigNumber]>; importLegacyDpid( dpid: BigNumberish, @@ -262,11 +259,11 @@ export interface DpidAliasRegistry extends BaseContract { }; __DpidAliasRegistry_init( - firstDpid: BigNumberish, + _firstDpid: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; - _firstDpid(overrides?: CallOverrides): Promise; + firstDpid(overrides?: CallOverrides): Promise; importLegacyDpid( dpid: BigNumberish, @@ -311,11 +308,11 @@ export interface DpidAliasRegistry extends BaseContract { callStatic: { __DpidAliasRegistry_init( - firstDpid: BigNumberish, + _firstDpid: BigNumberish, overrides?: CallOverrides ): Promise; - _firstDpid(overrides?: CallOverrides): Promise; + firstDpid(overrides?: CallOverrides): Promise; importLegacyDpid( dpid: BigNumberish, @@ -388,11 +385,11 @@ export interface DpidAliasRegistry extends BaseContract { estimateGas: { __DpidAliasRegistry_init( - firstDpid: BigNumberish, + _firstDpid: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; - _firstDpid(overrides?: CallOverrides): Promise; + firstDpid(overrides?: CallOverrides): Promise; importLegacyDpid( dpid: BigNumberish, @@ -438,11 +435,11 @@ export interface DpidAliasRegistry extends BaseContract { populateTransaction: { __DpidAliasRegistry_init( - firstDpid: BigNumberish, + _firstDpid: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; - _firstDpid(overrides?: CallOverrides): Promise; + firstDpid(overrides?: CallOverrides): Promise; importLegacyDpid( dpid: BigNumberish, diff --git a/desci-contracts/typechain-types/factories/DpidAliasRegistry__factory.ts b/desci-contracts/typechain-types/factories/DpidAliasRegistry__factory.ts index 122c5f107..e333bfee2 100644 --- a/desci-contracts/typechain-types/factories/DpidAliasRegistry__factory.ts +++ b/desci-contracts/typechain-types/factories/DpidAliasRegistry__factory.ts @@ -58,7 +58,7 @@ const _abi = [ }, { internalType: "uint256", - name: "timestamp", + name: "time", type: "uint256", }, ], @@ -131,7 +131,7 @@ const _abi = [ inputs: [ { internalType: "uint256", - name: "firstDpid", + name: "_firstDpid", type: "uint256", }, ], @@ -142,7 +142,7 @@ const _abi = [ }, { inputs: [], - name: "_firstDpid", + name: "firstDpid", outputs: [ { internalType: "uint256", @@ -176,7 +176,7 @@ const _abi = [ }, { internalType: "uint256", - name: "timestamp", + name: "time", type: "uint256", }, ], @@ -240,7 +240,7 @@ const _abi = [ }, { internalType: "uint256", - name: "timestamp", + name: "time", type: "uint256", }, ], @@ -381,7 +381,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b50620000226200002860201b60201c565b620001d3565b600060019054906101000a900460ff16156200007b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000729062000127565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff161015620000ed5760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff604051620000e4919062000149565b60405180910390a15b565b6000620000fe60278362000166565b91506200010b8262000184565b604082019050919050565b620001218162000177565b82525050565b600060208201905081810360008301526200014281620000ef565b9050919050565b600060208201905062000160600083018462000116565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b6122cb80620001e36000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063810a9afa1161008c578063b724de3a11610066578063b724de3a14610212578063dc5d7a2e14610242578063ded8896b14610260578063f2fde38b1461027c576100cf565b8063810a9afa146101a65780638da5cb5b146101d6578063afc26911146101f4576100cf565b80630a874df6146100d4578063144ae85514610104578063362b3e63146101205780635893253c1461013c578063715018a61461016c578063788243d514610176575b600080fd5b6100ee60048036038101906100e99190610dff565b610298565b6040516100fb919061131c565b60405180910390f35b61011e60048036038101906101199190610e80565b61033d565b005b61013a60048036038101906101359190610dff565b6103a5565b005b61015660048036038101906101519190610dff565b6104eb565b604051610163919061131c565b60405180910390f35b61017461058b565b005b610190600480360381019061018b9190610dff565b61059f565b60405161019d91906112e6565b60405180910390f35b6101c060048036038101906101bb9190610dff565b6105dd565b6040516101cd91906113fe565b60405180910390f35b6101de61075b565b6040516101eb91906112e6565b60405180910390f35b6101fc610785565b6040516102099190611420565b60405180910390f35b61022c60048036038101906102279190610dba565b61078b565b6040516102399190611420565b60405180910390f35b61024a610813565b6040516102579190611420565b60405180910390f35b61027a60048036038101906102759190610e28565b610819565b005b61029660048036038101906102919190610d91565b610982565b005b60606067600083815260200190815260200160002080546102b890611c27565b80601f01602080910402602001604051908101604052809291908181526020018280546102e490611c27565b80156103315780601f1061030657610100808354040283529160200191610331565b820191906000526020600020905b81548152906001019060200180831161031457829003601f168201915b50505050509050919050565b610345610a06565b8060686000848152602001908152602001600020818161036591906121ee565b9050507fa9c55ebaa1fada408bd72c2f0ea7c27f5444b105bcff12c5381baac912156ada828260405161039992919061146d565b60405180910390a15050565b60008060019054906101000a900460ff161590508080156103d65750600160008054906101000a900460ff1660ff16105b8061040357506103e530610a84565b1580156104025750600160008054906101000a900460ff1660ff16145b5b610442576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104399061137e565b60405180910390fd5b60016000806101000a81548160ff021916908360ff160217905550801561047f576001600060016101000a81548160ff0219169083151502179055505b610487610aa7565b8160668190555080156104e75760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516104de9190611301565b60405180910390a15b5050565b6067602052806000526040600020600091509050805461050a90611c27565b80601f016020809104026020016040519081016040528092919081815260200182805461053690611c27565b80156105835780601f1061055857610100808354040283529160200191610583565b820191906000526020600020905b81548152906001019060200180831161056657829003601f168201915b505050505081565b610593610a06565b61059d6000610b00565b565b60686020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081565b6105e5610c2f565b606860008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805480602002602001604051908101604052809291908181526020016000905b8282101561074c57838290600052602060002090600202016040518060400160405290816000820180546106b190611c27565b80601f01602080910402602001604051908101604052809291908181526020018280546106dd90611c27565b801561072a5780601f106106ff5761010080835404028352916020019161072a565b820191906000526020600020905b81548152906001019060200180831161070d57829003601f168201915b505050505081526020016001820154815250508152602001906001019061067e565b50505050815250509050919050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60665481565b600080606654905083836067600084815260200190815260200160002091906107b5929190610c5f565b507f96a65efbb6991f67fc8a4c7550fcfd08f1968737d2f5adcded5cd937b3cc0f3d8185856040516107e99392919061143b565b60405180910390a16066600081548092919061080490611c75565b91905055508091505092915050565b60655481565b600060676000858152602001908152602001600020805461083990611c27565b90501461087b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108729061133e565b60405180910390fd5b3273ffffffffffffffffffffffffffffffffffffffff166068600085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461091f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610916906113de565b60405180910390fd5b8181606760008681526020019081526020016000209190610941929190610c5f565b507f442b41840a10393534508176faee6f70b1870707dc24573b67d49f28cbac7f1c8383836040516109759392919061143b565b60405180910390a1505050565b61098a610a06565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156109fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f19061135e565b60405180910390fd5b610a0381610b00565b50565b610a0e610bc6565b73ffffffffffffffffffffffffffffffffffffffff16610a2c61075b565b73ffffffffffffffffffffffffffffffffffffffff1614610a82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a799061139e565b60405180910390fd5b565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16610af6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aed906113be565b60405180910390fd5b610afe610bce565b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b600060019054906101000a900460ff16610c1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c14906113be565b60405180910390fd5b610c2d610c28610bc6565b610b00565b565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b828054610c6b90611c27565b90600052602060002090601f016020900481019282610c8d5760008555610cd4565b82601f10610ca657803560ff1916838001178555610cd4565b82800160010185558215610cd4579182015b82811115610cd3578235825591602001919060010190610cb8565b5b509050610ce19190610ce5565b5090565b5b80821115610cfe576000816000905550600101610ce6565b5090565b600081359050610d1181612262565b92915050565b60008083601f840112610d2957600080fd5b8235905067ffffffffffffffff811115610d4257600080fd5b602083019150836001820283011115610d5a57600080fd5b9250929050565b600060408284031215610d7357600080fd5b81905092915050565b600081359050610d8b81612279565b92915050565b600060208284031215610da357600080fd5b6000610db184828501610d02565b91505092915050565b60008060208385031215610dcd57600080fd5b600083013567ffffffffffffffff811115610de757600080fd5b610df385828601610d17565b92509250509250929050565b600060208284031215610e1157600080fd5b6000610e1f84828501610d7c565b91505092915050565b600080600060408486031215610e3d57600080fd5b6000610e4b86828701610d7c565b935050602084013567ffffffffffffffff811115610e6857600080fd5b610e7486828701610d17565b92509250509250925092565b60008060408385031215610e9357600080fd5b6000610ea185828601610d7c565b925050602083013567ffffffffffffffff811115610ebe57600080fd5b610eca85828601610d61565b9150509250929050565b6000610ee0838361123c565b905092915050565b6000610ef4838361128b565b905092915050565b610f05816118ad565b82525050565b610f14816118ad565b82525050565b6000610f26838561161b565b935083602084028501610f3884611586565b8060005b87811015610f7c578484038952610f538284611818565b610f5d8582610ed4565b9450610f6883611601565b925060208a01995050600181019050610f3c565b50829750879450505050509392505050565b6000610f99826115d5565b610fa3818561161b565b935083602082028501610fb585611590565b8060005b85811015610ff15784840389528151610fd28582610ee8565b9450610fdd8361160e565b925060208a01995050600181019050610fb9565b50829750879550505050505092915050565b61100c8161199c565b82525050565b600061101e838561162c565b935061102b838584611b59565b61103483611ecc565b840190509392505050565b600061104b838561163d565b9350611058838584611b59565b61106183611ecc565b840190509392505050565b6000611077826115f6565b611081818561162c565b9350611091818560208601611b68565b61109a81611ecc565b840191505092915050565b60006110b0826115f6565b6110ba818561163d565b93506110ca818560208601611b68565b6110d381611ecc565b840191505092915050565b60006110eb60158361163d565b91506110f682611f58565b602082019050919050565b600061110e60268361163d565b915061111982611f81565b604082019050919050565b6000611131602e8361163d565b915061113c82611fd0565b604082019050919050565b600061115460208361163d565b915061115f8261201f565b602082019050919050565b6000611177602b8361163d565b915061118282612048565b604082019050919050565b600061119a60198361163d565b91506111a582612097565b602082019050919050565b6000604083016111c36000840184611753565b6111d06000860182610efc565b506111de602084018461176a565b85830360208701526111f1838284610f1a565b925050508091505092915050565b60006040830160008301516112176000860182610efc565b506020830151848203602086015261122f8282610f8e565b9150508091505092915050565b60006040830161124f60008401846117c1565b8583036000870152611262838284611012565b92505050611273602084018461183c565b61128060208601826112c8565b508091505092915050565b600060408301600083015184820360008601526112a8828261106c565b91505060208301516112bd60208601826112c8565b508091505092915050565b6112d1816118df565b82525050565b6112e0816118df565b82525050565b60006020820190506112fb6000830184610f0b565b92915050565b60006020820190506113166000830184611003565b92915050565b6000602082019050818103600083015261133681846110a5565b905092915050565b60006020820190508181036000830152611357816110de565b9050919050565b6000602082019050818103600083015261137781611101565b9050919050565b6000602082019050818103600083015261139781611124565b9050919050565b600060208201905081810360008301526113b781611147565b9050919050565b600060208201905081810360008301526113d78161116a565b9050919050565b600060208201905081810360008301526113f78161118d565b9050919050565b6000602082019050818103600083015261141881846111ff565b905092915050565b600060208201905061143560008301846112d7565b92915050565b600060408201905061145060008301866112d7565b818103602083015261146381848661103f565b9050949350505050565b600060408201905061148260008301856112d7565b818103602083015261149481846111b0565b90509392505050565b600080833560016020038436030381126114b657600080fd5b80840192508235915067ffffffffffffffff8211156114d457600080fd5b6020830192506020820236038313156114ec57600080fd5b509250929050565b6000808335600160200384360303811261150d57600080fd5b80840192508235915067ffffffffffffffff82111561152b57600080fd5b60208301925060018202360383131561154357600080fd5b509250929050565b60008235600160400383360303811261156357600080fd5b80830191505092915050565b600081905061157f826002611853565b9050919050565b6000819050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b600082905092915050565b600081519050919050565b600081549050919050565b600082905092915050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b60208410600081146116a757601f841160018114611677576116708685611c59565b83556116a1565b611680836115b5565b6116956020601f880104820160018301611904565b61169f87856120c0565b505b506116f0565b6116b0826115b5565b6020601f8701048101601f871680156116d1576116d08160018403611d98565b5b6116e36020601f890104840183611904565b6001886002021785555050505b5050505050565b6020831060008114611742576020851060008114611720576117198685611c59565b835561173c565b8360ff1916935083611731846115b5565b556001866002020183555b5061174c565b6001856002020182555b5050505050565b60006117626020840184610d02565b905092915050565b6000808335600160200384360303811261178357600080fd5b83810192508235915060208301925067ffffffffffffffff8211156117a757600080fd5b6020820236038413156117b957600080fd5b509250929050565b600080833560016020038436030381126117da57600080fd5b83810192508235915060208301925067ffffffffffffffff8211156117fe57600080fd5b60018202360384131561181057600080fd5b509250929050565b60008235600160400383360303811261183057600080fd5b82810191505092915050565b600061184b6020840184610d7c565b905092915050565b600061185e826118df565b9150611869836118df565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156118a2576118a1611d0b565b5b828202905092915050565b60006118b8826118bf565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b611901600082611e77565b50565b5b8181101561192357611918600082611f40565b600181019050611905565b5050565b5b818110156119465761193b600082611f22565b600281019050611928565b5050565b818110156119685761195d600082611f40565b60018101905061194a565b5050565b6119796000808301611f04565b611987600060018301611f40565b50565b6000611995826119ae565b9050919050565b60006119a7826118e9565b9050919050565b60006119b9826119c0565b9050919050565b60006119cb826118bf565b9050919050565b60006119dd826118df565b9050919050565b6119ee83836115ca565b6119f88183611e13565b611a0183611586565b611a0a836115a0565b6000805b84811015611a4357611a20848861154b565b611a2b81848661221f565b60208501945060028401935050600181019050611a0e565b5050505050505050565b611a5783836115eb565b67ffffffffffffffff811115611a7057611a6f611d69565b5b611a7a8254611c27565b600080601f8411601f84111715611a9757611a94856115b5565b90505b601f831115611aca576020601f85010481016020851015611ab6578190505b611ac86020601f860104830182611904565b505b601f841160018114611af75760008515611ae5578388013590505b611aef8682611c59565b875550611b4f565b601f1985168260005b82811015611b2557858a01358255600182019150602086019550602081019050611b00565b87831015611b4257858a0135611b3e601f8a1682611cbe565b8355505b6001600289020189555050505b5050505050505050565b82818337600083830152505050565b60005b83811015611b86578082015181840152602081019050611b6b565b83811115611b95576000848401525b50505050565b600081016000830180611bad81611de7565b9050611bb981846121ab565b5050506001810160208301611bce818561149d565b611bd98183866121ce565b505050505050565b6000810160008301611bf381856114f4565b611bfe8183866121de565b50505050600181016020830180611c1481611dfd565b9050611c2081846121fc565b5050505050565b60006002820490506001821680611c3f57607f821691505b60208210811415611c5357611c52611d3a565b5b50919050565b6000611c658383611cbe565b9150826002028217905092915050565b6000611c80826118df565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611cb357611cb2611d0b565b5b600182019050919050565b6000611ccf60001984600802611ef7565b1980831691505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611dc87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802611ef7565b815481168255505050565b6000819050919050565b6000819050919050565b60008135611df481612262565b80915050919050565b60008135611e0a81612279565b80915050919050565b68010000000000000000821115611e2d57611e2c611d69565b5b611e36816115e0565b82825580831015611e7257611e4a8161156f565b611e538461156f565b611e5c846115a0565b818101838201611e6c8183611927565b50505050505b505050565b68010000000000000000821115611e9157611e90611d69565b5b8054611e9c81611c27565b80841115611eb157611eb0848284866116f7565b5b80841015611ec657611ec58482848661164e565b5b50505050565b6000601f19601f8301169050919050565b60008160001b9050919050565b600082821b905092915050565b600082821c905092915050565b60008214611f1557611f14611cdc565b5b611f1e816118f6565b5050565b60008214611f3357611f32611cdc565b5b611f3c8161196c565b5050565b611f48612290565b611f5381848461223d565b505050565b7f6470696420616c72656164792075706772616465640000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f756e617574686f72697a65642064706964207570677261646500000000000000600082015250565b6120c9816115b5565b6120d4838254611c59565b8083556000825550505050565b600073ffffffffffffffffffffffffffffffffffffffff61210184611edd565b9350801983169250808416831791505092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61214384611edd565b9350801983169250808416831791505092915050565b6000600883026121897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611eea565b6121938683611eea565b95508019841693508086168417925050509392505050565b6121b48261198a565b6121c76121c082611dd3565b83546120e1565b8255505050565b6121d98383836119e4565b505050565b6121e9838383611a4d565b505050565b6121f88282611b9b565b5050565b612205826119d2565b61221861221182611ddd565b8354612117565b8255505050565b811561222e5761222d611cdc565b5b6122388382611be1565b505050565b612246836119d2565b61225a61225282611ddd565b848454612159565b825550505050565b61226b816118ad565b811461227657600080fd5b50565b612282816118df565b811461228d57600080fd5b50565b60009056fea26469706673582212209d15c5501273e10408c38b0c27c1d9008c55404af21e411dc9d13c190f83a2b364736f6c63430008040033"; + "0x60806040523480156200001157600080fd5b50620000226200002860201b60201c565b620001d3565b600060019054906101000a900460ff16156200007b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000729062000127565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff161015620000ed5760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff604051620000e4919062000149565b60405180910390a15b565b6000620000fe60278362000166565b91506200010b8262000184565b604082019050919050565b620001218162000177565b82525050565b600060208201905081810360008301526200014281620000ef565b9050919050565b600060208201905062000160600083018462000116565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b6122d280620001e36000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063810a9afa1161008c578063b724de3a11610066578063b724de3a14610212578063cfb452b514610242578063ded8896b14610260578063f2fde38b1461027c576100cf565b8063810a9afa146101a65780638da5cb5b146101d6578063afc26911146101f4576100cf565b80630a874df6146100d4578063144ae85514610104578063362b3e63146101205780635893253c1461013c578063715018a61461016c578063788243d514610176575b600080fd5b6100ee60048036038101906100e99190610e06565b610298565b6040516100fb9190611323565b60405180910390f35b61011e60048036038101906101199190610e87565b61033d565b005b61013a60048036038101906101359190610e06565b6103a5565b005b61015660048036038101906101519190610e06565b6104f2565b6040516101639190611323565b60405180910390f35b610174610592565b005b610190600480360381019061018b9190610e06565b6105a6565b60405161019d91906112ed565b60405180910390f35b6101c060048036038101906101bb9190610e06565b6105e4565b6040516101cd9190611405565b60405180910390f35b6101de610762565b6040516101eb91906112ed565b60405180910390f35b6101fc61078c565b6040516102099190611427565b60405180910390f35b61022c60048036038101906102279190610dc1565b610792565b6040516102399190611427565b60405180910390f35b61024a61081a565b6040516102579190611427565b60405180910390f35b61027a60048036038101906102759190610e2f565b610820565b005b61029660048036038101906102919190610d98565b610989565b005b60606067600083815260200190815260200160002080546102b890611c2e565b80601f01602080910402602001604051908101604052809291908181526020018280546102e490611c2e565b80156103315780601f1061030657610100808354040283529160200191610331565b820191906000526020600020905b81548152906001019060200180831161031457829003601f168201915b50505050509050919050565b610345610a0d565b8060686000848152602001908152602001600020818161036591906121f5565b9050507fa9c55ebaa1fada408bd72c2f0ea7c27f5444b105bcff12c5381baac912156ada8282604051610399929190611474565b60405180910390a15050565b60008060019054906101000a900460ff161590508080156103d65750600160008054906101000a900460ff1660ff16105b8061040357506103e530610a8b565b1580156104025750600160008054906101000a900460ff1660ff16145b5b610442576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043990611385565b60405180910390fd5b60016000806101000a81548160ff021916908360ff160217905550801561047f576001600060016101000a81548160ff0219169083151502179055505b610487610aae565b816065819055508160668190555080156104ee5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516104e59190611308565b60405180910390a15b5050565b6067602052806000526040600020600091509050805461051190611c2e565b80601f016020809104026020016040519081016040528092919081815260200182805461053d90611c2e565b801561058a5780601f1061055f5761010080835404028352916020019161058a565b820191906000526020600020905b81548152906001019060200180831161056d57829003601f168201915b505050505081565b61059a610a0d565b6105a46000610b07565b565b60686020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081565b6105ec610c36565b606860008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805480602002602001604051908101604052809291908181526020016000905b8282101561075357838290600052602060002090600202016040518060400160405290816000820180546106b890611c2e565b80601f01602080910402602001604051908101604052809291908181526020018280546106e490611c2e565b80156107315780601f1061070657610100808354040283529160200191610731565b820191906000526020600020905b81548152906001019060200180831161071457829003601f168201915b5050505050815260200160018201548152505081526020019060010190610685565b50505050815250509050919050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60665481565b600080606654905083836067600084815260200190815260200160002091906107bc929190610c66565b507f96a65efbb6991f67fc8a4c7550fcfd08f1968737d2f5adcded5cd937b3cc0f3d8185856040516107f093929190611442565b60405180910390a16066600081548092919061080b90611c7c565b91905055508091505092915050565b60655481565b600060676000858152602001908152602001600020805461084090611c2e565b905014610882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087990611345565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166068600085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610926576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091d906113e5565b60405180910390fd5b8181606760008681526020019081526020016000209190610948929190610c66565b507f442b41840a10393534508176faee6f70b1870707dc24573b67d49f28cbac7f1c83838360405161097c93929190611442565b60405180910390a1505050565b610991610a0d565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610a01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f890611365565b60405180910390fd5b610a0a81610b07565b50565b610a15610bcd565b73ffffffffffffffffffffffffffffffffffffffff16610a33610762565b73ffffffffffffffffffffffffffffffffffffffff1614610a89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a80906113a5565b60405180910390fd5b565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16610afd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af4906113c5565b60405180910390fd5b610b05610bd5565b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b600060019054906101000a900460ff16610c24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1b906113c5565b60405180910390fd5b610c34610c2f610bcd565b610b07565b565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b828054610c7290611c2e565b90600052602060002090601f016020900481019282610c945760008555610cdb565b82601f10610cad57803560ff1916838001178555610cdb565b82800160010185558215610cdb579182015b82811115610cda578235825591602001919060010190610cbf565b5b509050610ce89190610cec565b5090565b5b80821115610d05576000816000905550600101610ced565b5090565b600081359050610d1881612269565b92915050565b60008083601f840112610d3057600080fd5b8235905067ffffffffffffffff811115610d4957600080fd5b602083019150836001820283011115610d6157600080fd5b9250929050565b600060408284031215610d7a57600080fd5b81905092915050565b600081359050610d9281612280565b92915050565b600060208284031215610daa57600080fd5b6000610db884828501610d09565b91505092915050565b60008060208385031215610dd457600080fd5b600083013567ffffffffffffffff811115610dee57600080fd5b610dfa85828601610d1e565b92509250509250929050565b600060208284031215610e1857600080fd5b6000610e2684828501610d83565b91505092915050565b600080600060408486031215610e4457600080fd5b6000610e5286828701610d83565b935050602084013567ffffffffffffffff811115610e6f57600080fd5b610e7b86828701610d1e565b92509250509250925092565b60008060408385031215610e9a57600080fd5b6000610ea885828601610d83565b925050602083013567ffffffffffffffff811115610ec557600080fd5b610ed185828601610d68565b9150509250929050565b6000610ee78383611243565b905092915050565b6000610efb8383611292565b905092915050565b610f0c816118b4565b82525050565b610f1b816118b4565b82525050565b6000610f2d8385611622565b935083602084028501610f3f8461158d565b8060005b87811015610f83578484038952610f5a828461181f565b610f648582610edb565b9450610f6f83611608565b925060208a01995050600181019050610f43565b50829750879450505050509392505050565b6000610fa0826115dc565b610faa8185611622565b935083602082028501610fbc85611597565b8060005b85811015610ff85784840389528151610fd98582610eef565b9450610fe483611615565b925060208a01995050600181019050610fc0565b50829750879550505050505092915050565b611013816119a3565b82525050565b60006110258385611633565b9350611032838584611b60565b61103b83611ed3565b840190509392505050565b60006110528385611644565b935061105f838584611b60565b61106883611ed3565b840190509392505050565b600061107e826115fd565b6110888185611633565b9350611098818560208601611b6f565b6110a181611ed3565b840191505092915050565b60006110b7826115fd565b6110c18185611644565b93506110d1818560208601611b6f565b6110da81611ed3565b840191505092915050565b60006110f2601583611644565b91506110fd82611f5f565b602082019050919050565b6000611115602683611644565b915061112082611f88565b604082019050919050565b6000611138602e83611644565b915061114382611fd7565b604082019050919050565b600061115b602083611644565b915061116682612026565b602082019050919050565b600061117e602b83611644565b91506111898261204f565b604082019050919050565b60006111a1601983611644565b91506111ac8261209e565b602082019050919050565b6000604083016111ca600084018461175a565b6111d76000860182610f03565b506111e56020840184611771565b85830360208701526111f8838284610f21565b925050508091505092915050565b600060408301600083015161121e6000860182610f03565b50602083015184820360208601526112368282610f95565b9150508091505092915050565b60006040830161125660008401846117c8565b8583036000870152611269838284611019565b9250505061127a6020840184611843565b61128760208601826112cf565b508091505092915050565b600060408301600083015184820360008601526112af8282611073565b91505060208301516112c460208601826112cf565b508091505092915050565b6112d8816118e6565b82525050565b6112e7816118e6565b82525050565b60006020820190506113026000830184610f12565b92915050565b600060208201905061131d600083018461100a565b92915050565b6000602082019050818103600083015261133d81846110ac565b905092915050565b6000602082019050818103600083015261135e816110e5565b9050919050565b6000602082019050818103600083015261137e81611108565b9050919050565b6000602082019050818103600083015261139e8161112b565b9050919050565b600060208201905081810360008301526113be8161114e565b9050919050565b600060208201905081810360008301526113de81611171565b9050919050565b600060208201905081810360008301526113fe81611194565b9050919050565b6000602082019050818103600083015261141f8184611206565b905092915050565b600060208201905061143c60008301846112de565b92915050565b600060408201905061145760008301866112de565b818103602083015261146a818486611046565b9050949350505050565b600060408201905061148960008301856112de565b818103602083015261149b81846111b7565b90509392505050565b600080833560016020038436030381126114bd57600080fd5b80840192508235915067ffffffffffffffff8211156114db57600080fd5b6020830192506020820236038313156114f357600080fd5b509250929050565b6000808335600160200384360303811261151457600080fd5b80840192508235915067ffffffffffffffff82111561153257600080fd5b60208301925060018202360383131561154a57600080fd5b509250929050565b60008235600160400383360303811261156a57600080fd5b80830191505092915050565b600081905061158682600261185a565b9050919050565b6000819050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b600082905092915050565b600081519050919050565b600081549050919050565b600082905092915050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b60208410600081146116ae57601f84116001811461167e576116778685611c60565b83556116a8565b611687836115bc565b61169c6020601f88010482016001830161190b565b6116a687856120c7565b505b506116f7565b6116b7826115bc565b6020601f8701048101601f871680156116d8576116d78160018403611d9f565b5b6116ea6020601f89010484018361190b565b6001886002021785555050505b5050505050565b6020831060008114611749576020851060008114611727576117208685611c60565b8355611743565b8360ff1916935083611738846115bc565b556001866002020183555b50611753565b6001856002020182555b5050505050565b60006117696020840184610d09565b905092915050565b6000808335600160200384360303811261178a57600080fd5b83810192508235915060208301925067ffffffffffffffff8211156117ae57600080fd5b6020820236038413156117c057600080fd5b509250929050565b600080833560016020038436030381126117e157600080fd5b83810192508235915060208301925067ffffffffffffffff82111561180557600080fd5b60018202360384131561181757600080fd5b509250929050565b60008235600160400383360303811261183757600080fd5b82810191505092915050565b60006118526020840184610d83565b905092915050565b6000611865826118e6565b9150611870836118e6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156118a9576118a8611d12565b5b828202905092915050565b60006118bf826118c6565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b611908600082611e7e565b50565b5b8181101561192a5761191f600082611f47565b60018101905061190c565b5050565b5b8181101561194d57611942600082611f29565b60028101905061192f565b5050565b8181101561196f57611964600082611f47565b600181019050611951565b5050565b6119806000808301611f0b565b61198e600060018301611f47565b50565b600061199c826119b5565b9050919050565b60006119ae826118f0565b9050919050565b60006119c0826119c7565b9050919050565b60006119d2826118c6565b9050919050565b60006119e4826118e6565b9050919050565b6119f583836115d1565b6119ff8183611e1a565b611a088361158d565b611a11836115a7565b6000805b84811015611a4a57611a278488611552565b611a32818486612226565b60208501945060028401935050600181019050611a15565b5050505050505050565b611a5e83836115f2565b67ffffffffffffffff811115611a7757611a76611d70565b5b611a818254611c2e565b600080601f8411601f84111715611a9e57611a9b856115bc565b90505b601f831115611ad1576020601f85010481016020851015611abd578190505b611acf6020601f86010483018261190b565b505b601f841160018114611afe5760008515611aec578388013590505b611af68682611c60565b875550611b56565b601f1985168260005b82811015611b2c57858a01358255600182019150602086019550602081019050611b07565b87831015611b4957858a0135611b45601f8a1682611cc5565b8355505b6001600289020189555050505b5050505050505050565b82818337600083830152505050565b60005b83811015611b8d578082015181840152602081019050611b72565b83811115611b9c576000848401525b50505050565b600081016000830180611bb481611dee565b9050611bc081846121b2565b5050506001810160208301611bd581856114a4565b611be08183866121d5565b505050505050565b6000810160008301611bfa81856114fb565b611c058183866121e5565b50505050600181016020830180611c1b81611e04565b9050611c278184612203565b5050505050565b60006002820490506001821680611c4657607f821691505b60208210811415611c5a57611c59611d41565b5b50919050565b6000611c6c8383611cc5565b9150826002028217905092915050565b6000611c87826118e6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611cba57611cb9611d12565b5b600182019050919050565b6000611cd660001984600802611efe565b1980831691505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611dcf7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802611efe565b815481168255505050565b6000819050919050565b6000819050919050565b60008135611dfb81612269565b80915050919050565b60008135611e1181612280565b80915050919050565b68010000000000000000821115611e3457611e33611d70565b5b611e3d816115e7565b82825580831015611e7957611e5181611576565b611e5a84611576565b611e63846115a7565b818101838201611e73818361192e565b50505050505b505050565b68010000000000000000821115611e9857611e97611d70565b5b8054611ea381611c2e565b80841115611eb857611eb7848284866116fe565b5b80841015611ecd57611ecc84828486611655565b5b50505050565b6000601f19601f8301169050919050565b60008160001b9050919050565b600082821b905092915050565b600082821c905092915050565b60008214611f1c57611f1b611ce3565b5b611f25816118fd565b5050565b60008214611f3a57611f39611ce3565b5b611f4381611973565b5050565b611f4f612297565b611f5a818484612244565b505050565b7f6470696420616c72656164792075706772616465640000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f756e617574686f72697a65642064706964207570677261646500000000000000600082015250565b6120d0816115bc565b6120db838254611c60565b8083556000825550505050565b600073ffffffffffffffffffffffffffffffffffffffff61210884611ee4565b9350801983169250808416831791505092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61214a84611ee4565b9350801983169250808416831791505092915050565b6000600883026121907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611ef1565b61219a8683611ef1565b95508019841693508086168417925050509392505050565b6121bb82611991565b6121ce6121c782611dda565b83546120e8565b8255505050565b6121e08383836119eb565b505050565b6121f0838383611a54565b505050565b6121ff8282611ba2565b5050565b61220c826119d9565b61221f61221882611de4565b835461211e565b8255505050565b811561223557612234611ce3565b5b61223f8382611be8565b505050565b61224d836119d9565b61226161225982611de4565b848454612160565b825550505050565b612272816118b4565b811461227d57600080fd5b50565b612289816118e6565b811461229457600080fd5b50565b60009056fea264697066735822122084f5f1681ed8582b0b01a3c050af63e3bc886fc8eb1d7bfbad5710635ba9f00f64736f6c63430008040033"; type DpidAliasRegistryConstructorParams = | [signer?: Signer] From e4a5f6e885887c843baf3012df0616cfd18b596f Mon Sep 17 00:00:00 2001 From: m0ar Date: Mon, 27 May 2024 12:14:14 +0200 Subject: [PATCH 05/34] proxy: add optimism RPC endpoints --- reverse-proxy/kubernetes/deployment_dev.yaml | 3 ++- reverse-proxy/kubernetes/deployment_prod.yaml | 3 ++- reverse-proxy/kubernetes/deployment_staging.yaml | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/reverse-proxy/kubernetes/deployment_dev.yaml b/reverse-proxy/kubernetes/deployment_dev.yaml index 890996051..d47d069d8 100755 --- a/reverse-proxy/kubernetes/deployment_dev.yaml +++ b/reverse-proxy/kubernetes/deployment_dev.yaml @@ -62,7 +62,8 @@ spec: echo "sourcing"; export PROXY_MAPPING_RPC_SEPOLIA={{ .Data.PROXY_MAPPING_RPC_SEPOLIA }} export PROXY_MAPPING_RPC_MAINNET={{ .Data.PROXY_MAPPING_RPC_MAINNET }} - + export PROXY_MAPPING_RPC_OPT_SEPOLIA={{ .Data.PROXY_MAPPING_RPC_OPT_SEPOLIA }} + export PROXY_MAPPING_RPC_OPT_MAINNET={{ .Data.PROXY_MAPPING_RPC_OPT_MAINNET }} {{- end -}} labels: App: ReverseProxyDev diff --git a/reverse-proxy/kubernetes/deployment_prod.yaml b/reverse-proxy/kubernetes/deployment_prod.yaml index 92ae649e7..c095aa986 100755 --- a/reverse-proxy/kubernetes/deployment_prod.yaml +++ b/reverse-proxy/kubernetes/deployment_prod.yaml @@ -62,7 +62,8 @@ spec: echo "sourcing"; export PROXY_MAPPING_RPC_SEPOLIA={{ .Data.PROXY_MAPPING_RPC_SEPOLIA }} export PROXY_MAPPING_RPC_MAINNET={{ .Data.PROXY_MAPPING_RPC_MAINNET }} - + export PROXY_MAPPING_RPC_OPT_SEPOLIA={{ .Data.PROXY_MAPPING_RPC_OPT_SEPOLIA }} + export PROXY_MAPPING_RPC_OPT_MAINNET={{ .Data.PROXY_MAPPING_RPC_OPT_MAINNET }} {{- end -}} labels: App: ReverseProxyProd diff --git a/reverse-proxy/kubernetes/deployment_staging.yaml b/reverse-proxy/kubernetes/deployment_staging.yaml index b0f5cc79c..df9cb15a4 100755 --- a/reverse-proxy/kubernetes/deployment_staging.yaml +++ b/reverse-proxy/kubernetes/deployment_staging.yaml @@ -62,7 +62,8 @@ spec: echo "sourcing"; export PROXY_MAPPING_RPC_SEPOLIA={{ .Data.PROXY_MAPPING_RPC_SEPOLIA }} export PROXY_MAPPING_RPC_MAINNET={{ .Data.PROXY_MAPPING_RPC_MAINNET }} - + export PROXY_MAPPING_RPC_OPT_SEPOLIA={{ .Data.PROXY_MAPPING_RPC_OPT_SEPOLIA }} + export PROXY_MAPPING_RPC_OPT_MAINNET={{ .Data.PROXY_MAPPING_RPC_OPT_MAINNET }} {{- end -}} labels: App: ReverseProxyStaging From 41489c39050d9b38964d7a7f94c77f584ec230ff Mon Sep 17 00:00:00 2001 From: m0ar Date: Wed, 29 May 2024 13:47:23 +0200 Subject: [PATCH 06/34] contracts: add reverseRegistry and single alias limitation to alias registry --- .../DpidAliasRegistry.json | 80 ++++++++++++----- .../contracts/DpidAliasRegistry.sol | 53 +++++++++--- desci-contracts/index.ts | 3 + desci-contracts/package.json | 2 +- desci-contracts/test/DpidAliasRegistry.ts | 22 ++--- .../typechain-types/DpidAliasRegistry.ts | 85 ++++++++++++++----- .../factories/DpidAliasRegistry__factory.ts | 78 ++++++++++++----- 7 files changed, 237 insertions(+), 86 deletions(-) diff --git a/desci-contracts/artifacts/contracts/DpidAliasRegistry.sol/DpidAliasRegistry.json b/desci-contracts/artifacts/contracts/DpidAliasRegistry.sol/DpidAliasRegistry.json index 51effc33f..da4e58c77 100644 --- a/desci-contracts/artifacts/contracts/DpidAliasRegistry.sol/DpidAliasRegistry.json +++ b/desci-contracts/artifacts/contracts/DpidAliasRegistry.sol/DpidAliasRegistry.json @@ -134,6 +134,25 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "string", + "name": "streamId", + "type": "string" + } + ], + "name": "find", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "firstDpid", @@ -251,25 +270,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "dpid", - "type": "uint256" - } - ], - "name": "lookup", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [ { @@ -341,6 +341,44 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "dpid", + "type": "uint256" + } + ], + "name": "resolve", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "name": "reverseRegistry", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -373,8 +411,8 @@ "type": "function" } ], - "bytecode": "0x60806040523480156200001157600080fd5b50620000226200002860201b60201c565b620001d3565b600060019054906101000a900460ff16156200007b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000729062000127565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff161015620000ed5760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff604051620000e4919062000149565b60405180910390a15b565b6000620000fe60278362000166565b91506200010b8262000184565b604082019050919050565b620001218162000177565b82525050565b600060208201905081810360008301526200014281620000ef565b9050919050565b600060208201905062000160600083018462000116565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b6122d280620001e36000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063810a9afa1161008c578063b724de3a11610066578063b724de3a14610212578063cfb452b514610242578063ded8896b14610260578063f2fde38b1461027c576100cf565b8063810a9afa146101a65780638da5cb5b146101d6578063afc26911146101f4576100cf565b80630a874df6146100d4578063144ae85514610104578063362b3e63146101205780635893253c1461013c578063715018a61461016c578063788243d514610176575b600080fd5b6100ee60048036038101906100e99190610e06565b610298565b6040516100fb9190611323565b60405180910390f35b61011e60048036038101906101199190610e87565b61033d565b005b61013a60048036038101906101359190610e06565b6103a5565b005b61015660048036038101906101519190610e06565b6104f2565b6040516101639190611323565b60405180910390f35b610174610592565b005b610190600480360381019061018b9190610e06565b6105a6565b60405161019d91906112ed565b60405180910390f35b6101c060048036038101906101bb9190610e06565b6105e4565b6040516101cd9190611405565b60405180910390f35b6101de610762565b6040516101eb91906112ed565b60405180910390f35b6101fc61078c565b6040516102099190611427565b60405180910390f35b61022c60048036038101906102279190610dc1565b610792565b6040516102399190611427565b60405180910390f35b61024a61081a565b6040516102579190611427565b60405180910390f35b61027a60048036038101906102759190610e2f565b610820565b005b61029660048036038101906102919190610d98565b610989565b005b60606067600083815260200190815260200160002080546102b890611c2e565b80601f01602080910402602001604051908101604052809291908181526020018280546102e490611c2e565b80156103315780601f1061030657610100808354040283529160200191610331565b820191906000526020600020905b81548152906001019060200180831161031457829003601f168201915b50505050509050919050565b610345610a0d565b8060686000848152602001908152602001600020818161036591906121f5565b9050507fa9c55ebaa1fada408bd72c2f0ea7c27f5444b105bcff12c5381baac912156ada8282604051610399929190611474565b60405180910390a15050565b60008060019054906101000a900460ff161590508080156103d65750600160008054906101000a900460ff1660ff16105b8061040357506103e530610a8b565b1580156104025750600160008054906101000a900460ff1660ff16145b5b610442576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043990611385565b60405180910390fd5b60016000806101000a81548160ff021916908360ff160217905550801561047f576001600060016101000a81548160ff0219169083151502179055505b610487610aae565b816065819055508160668190555080156104ee5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516104e59190611308565b60405180910390a15b5050565b6067602052806000526040600020600091509050805461051190611c2e565b80601f016020809104026020016040519081016040528092919081815260200182805461053d90611c2e565b801561058a5780601f1061055f5761010080835404028352916020019161058a565b820191906000526020600020905b81548152906001019060200180831161056d57829003601f168201915b505050505081565b61059a610a0d565b6105a46000610b07565b565b60686020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081565b6105ec610c36565b606860008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805480602002602001604051908101604052809291908181526020016000905b8282101561075357838290600052602060002090600202016040518060400160405290816000820180546106b890611c2e565b80601f01602080910402602001604051908101604052809291908181526020018280546106e490611c2e565b80156107315780601f1061070657610100808354040283529160200191610731565b820191906000526020600020905b81548152906001019060200180831161071457829003601f168201915b5050505050815260200160018201548152505081526020019060010190610685565b50505050815250509050919050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60665481565b600080606654905083836067600084815260200190815260200160002091906107bc929190610c66565b507f96a65efbb6991f67fc8a4c7550fcfd08f1968737d2f5adcded5cd937b3cc0f3d8185856040516107f093929190611442565b60405180910390a16066600081548092919061080b90611c7c565b91905055508091505092915050565b60655481565b600060676000858152602001908152602001600020805461084090611c2e565b905014610882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087990611345565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166068600085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610926576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091d906113e5565b60405180910390fd5b8181606760008681526020019081526020016000209190610948929190610c66565b507f442b41840a10393534508176faee6f70b1870707dc24573b67d49f28cbac7f1c83838360405161097c93929190611442565b60405180910390a1505050565b610991610a0d565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610a01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f890611365565b60405180910390fd5b610a0a81610b07565b50565b610a15610bcd565b73ffffffffffffffffffffffffffffffffffffffff16610a33610762565b73ffffffffffffffffffffffffffffffffffffffff1614610a89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a80906113a5565b60405180910390fd5b565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16610afd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af4906113c5565b60405180910390fd5b610b05610bd5565b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b600060019054906101000a900460ff16610c24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1b906113c5565b60405180910390fd5b610c34610c2f610bcd565b610b07565b565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b828054610c7290611c2e565b90600052602060002090601f016020900481019282610c945760008555610cdb565b82601f10610cad57803560ff1916838001178555610cdb565b82800160010185558215610cdb579182015b82811115610cda578235825591602001919060010190610cbf565b5b509050610ce89190610cec565b5090565b5b80821115610d05576000816000905550600101610ced565b5090565b600081359050610d1881612269565b92915050565b60008083601f840112610d3057600080fd5b8235905067ffffffffffffffff811115610d4957600080fd5b602083019150836001820283011115610d6157600080fd5b9250929050565b600060408284031215610d7a57600080fd5b81905092915050565b600081359050610d9281612280565b92915050565b600060208284031215610daa57600080fd5b6000610db884828501610d09565b91505092915050565b60008060208385031215610dd457600080fd5b600083013567ffffffffffffffff811115610dee57600080fd5b610dfa85828601610d1e565b92509250509250929050565b600060208284031215610e1857600080fd5b6000610e2684828501610d83565b91505092915050565b600080600060408486031215610e4457600080fd5b6000610e5286828701610d83565b935050602084013567ffffffffffffffff811115610e6f57600080fd5b610e7b86828701610d1e565b92509250509250925092565b60008060408385031215610e9a57600080fd5b6000610ea885828601610d83565b925050602083013567ffffffffffffffff811115610ec557600080fd5b610ed185828601610d68565b9150509250929050565b6000610ee78383611243565b905092915050565b6000610efb8383611292565b905092915050565b610f0c816118b4565b82525050565b610f1b816118b4565b82525050565b6000610f2d8385611622565b935083602084028501610f3f8461158d565b8060005b87811015610f83578484038952610f5a828461181f565b610f648582610edb565b9450610f6f83611608565b925060208a01995050600181019050610f43565b50829750879450505050509392505050565b6000610fa0826115dc565b610faa8185611622565b935083602082028501610fbc85611597565b8060005b85811015610ff85784840389528151610fd98582610eef565b9450610fe483611615565b925060208a01995050600181019050610fc0565b50829750879550505050505092915050565b611013816119a3565b82525050565b60006110258385611633565b9350611032838584611b60565b61103b83611ed3565b840190509392505050565b60006110528385611644565b935061105f838584611b60565b61106883611ed3565b840190509392505050565b600061107e826115fd565b6110888185611633565b9350611098818560208601611b6f565b6110a181611ed3565b840191505092915050565b60006110b7826115fd565b6110c18185611644565b93506110d1818560208601611b6f565b6110da81611ed3565b840191505092915050565b60006110f2601583611644565b91506110fd82611f5f565b602082019050919050565b6000611115602683611644565b915061112082611f88565b604082019050919050565b6000611138602e83611644565b915061114382611fd7565b604082019050919050565b600061115b602083611644565b915061116682612026565b602082019050919050565b600061117e602b83611644565b91506111898261204f565b604082019050919050565b60006111a1601983611644565b91506111ac8261209e565b602082019050919050565b6000604083016111ca600084018461175a565b6111d76000860182610f03565b506111e56020840184611771565b85830360208701526111f8838284610f21565b925050508091505092915050565b600060408301600083015161121e6000860182610f03565b50602083015184820360208601526112368282610f95565b9150508091505092915050565b60006040830161125660008401846117c8565b8583036000870152611269838284611019565b9250505061127a6020840184611843565b61128760208601826112cf565b508091505092915050565b600060408301600083015184820360008601526112af8282611073565b91505060208301516112c460208601826112cf565b508091505092915050565b6112d8816118e6565b82525050565b6112e7816118e6565b82525050565b60006020820190506113026000830184610f12565b92915050565b600060208201905061131d600083018461100a565b92915050565b6000602082019050818103600083015261133d81846110ac565b905092915050565b6000602082019050818103600083015261135e816110e5565b9050919050565b6000602082019050818103600083015261137e81611108565b9050919050565b6000602082019050818103600083015261139e8161112b565b9050919050565b600060208201905081810360008301526113be8161114e565b9050919050565b600060208201905081810360008301526113de81611171565b9050919050565b600060208201905081810360008301526113fe81611194565b9050919050565b6000602082019050818103600083015261141f8184611206565b905092915050565b600060208201905061143c60008301846112de565b92915050565b600060408201905061145760008301866112de565b818103602083015261146a818486611046565b9050949350505050565b600060408201905061148960008301856112de565b818103602083015261149b81846111b7565b90509392505050565b600080833560016020038436030381126114bd57600080fd5b80840192508235915067ffffffffffffffff8211156114db57600080fd5b6020830192506020820236038313156114f357600080fd5b509250929050565b6000808335600160200384360303811261151457600080fd5b80840192508235915067ffffffffffffffff82111561153257600080fd5b60208301925060018202360383131561154a57600080fd5b509250929050565b60008235600160400383360303811261156a57600080fd5b80830191505092915050565b600081905061158682600261185a565b9050919050565b6000819050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b600082905092915050565b600081519050919050565b600081549050919050565b600082905092915050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b60208410600081146116ae57601f84116001811461167e576116778685611c60565b83556116a8565b611687836115bc565b61169c6020601f88010482016001830161190b565b6116a687856120c7565b505b506116f7565b6116b7826115bc565b6020601f8701048101601f871680156116d8576116d78160018403611d9f565b5b6116ea6020601f89010484018361190b565b6001886002021785555050505b5050505050565b6020831060008114611749576020851060008114611727576117208685611c60565b8355611743565b8360ff1916935083611738846115bc565b556001866002020183555b50611753565b6001856002020182555b5050505050565b60006117696020840184610d09565b905092915050565b6000808335600160200384360303811261178a57600080fd5b83810192508235915060208301925067ffffffffffffffff8211156117ae57600080fd5b6020820236038413156117c057600080fd5b509250929050565b600080833560016020038436030381126117e157600080fd5b83810192508235915060208301925067ffffffffffffffff82111561180557600080fd5b60018202360384131561181757600080fd5b509250929050565b60008235600160400383360303811261183757600080fd5b82810191505092915050565b60006118526020840184610d83565b905092915050565b6000611865826118e6565b9150611870836118e6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156118a9576118a8611d12565b5b828202905092915050565b60006118bf826118c6565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b611908600082611e7e565b50565b5b8181101561192a5761191f600082611f47565b60018101905061190c565b5050565b5b8181101561194d57611942600082611f29565b60028101905061192f565b5050565b8181101561196f57611964600082611f47565b600181019050611951565b5050565b6119806000808301611f0b565b61198e600060018301611f47565b50565b600061199c826119b5565b9050919050565b60006119ae826118f0565b9050919050565b60006119c0826119c7565b9050919050565b60006119d2826118c6565b9050919050565b60006119e4826118e6565b9050919050565b6119f583836115d1565b6119ff8183611e1a565b611a088361158d565b611a11836115a7565b6000805b84811015611a4a57611a278488611552565b611a32818486612226565b60208501945060028401935050600181019050611a15565b5050505050505050565b611a5e83836115f2565b67ffffffffffffffff811115611a7757611a76611d70565b5b611a818254611c2e565b600080601f8411601f84111715611a9e57611a9b856115bc565b90505b601f831115611ad1576020601f85010481016020851015611abd578190505b611acf6020601f86010483018261190b565b505b601f841160018114611afe5760008515611aec578388013590505b611af68682611c60565b875550611b56565b601f1985168260005b82811015611b2c57858a01358255600182019150602086019550602081019050611b07565b87831015611b4957858a0135611b45601f8a1682611cc5565b8355505b6001600289020189555050505b5050505050505050565b82818337600083830152505050565b60005b83811015611b8d578082015181840152602081019050611b72565b83811115611b9c576000848401525b50505050565b600081016000830180611bb481611dee565b9050611bc081846121b2565b5050506001810160208301611bd581856114a4565b611be08183866121d5565b505050505050565b6000810160008301611bfa81856114fb565b611c058183866121e5565b50505050600181016020830180611c1b81611e04565b9050611c278184612203565b5050505050565b60006002820490506001821680611c4657607f821691505b60208210811415611c5a57611c59611d41565b5b50919050565b6000611c6c8383611cc5565b9150826002028217905092915050565b6000611c87826118e6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611cba57611cb9611d12565b5b600182019050919050565b6000611cd660001984600802611efe565b1980831691505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611dcf7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802611efe565b815481168255505050565b6000819050919050565b6000819050919050565b60008135611dfb81612269565b80915050919050565b60008135611e1181612280565b80915050919050565b68010000000000000000821115611e3457611e33611d70565b5b611e3d816115e7565b82825580831015611e7957611e5181611576565b611e5a84611576565b611e63846115a7565b818101838201611e73818361192e565b50505050505b505050565b68010000000000000000821115611e9857611e97611d70565b5b8054611ea381611c2e565b80841115611eb857611eb7848284866116fe565b5b80841015611ecd57611ecc84828486611655565b5b50505050565b6000601f19601f8301169050919050565b60008160001b9050919050565b600082821b905092915050565b600082821c905092915050565b60008214611f1c57611f1b611ce3565b5b611f25816118fd565b5050565b60008214611f3a57611f39611ce3565b5b611f4381611973565b5050565b611f4f612297565b611f5a818484612244565b505050565b7f6470696420616c72656164792075706772616465640000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f756e617574686f72697a65642064706964207570677261646500000000000000600082015250565b6120d0816115bc565b6120db838254611c60565b8083556000825550505050565b600073ffffffffffffffffffffffffffffffffffffffff61210884611ee4565b9350801983169250808416831791505092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61214a84611ee4565b9350801983169250808416831791505092915050565b6000600883026121907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611ef1565b61219a8683611ef1565b95508019841693508086168417925050509392505050565b6121bb82611991565b6121ce6121c782611dda565b83546120e8565b8255505050565b6121e08383836119eb565b505050565b6121f0838383611a54565b505050565b6121ff8282611ba2565b5050565b61220c826119d9565b61221f61221882611de4565b835461211e565b8255505050565b811561223557612234611ce3565b5b61223f8382611be8565b505050565b61224d836119d9565b61226161225982611de4565b848454612160565b825550505050565b612272816118b4565b811461227d57600080fd5b50565b612289816118e6565b811461229457600080fd5b50565b60009056fea264697066735822122084f5f1681ed8582b0b01a3c050af63e3bc886fc8eb1d7bfbad5710635ba9f00f64736f6c63430008040033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063810a9afa1161008c578063b724de3a11610066578063b724de3a14610212578063cfb452b514610242578063ded8896b14610260578063f2fde38b1461027c576100cf565b8063810a9afa146101a65780638da5cb5b146101d6578063afc26911146101f4576100cf565b80630a874df6146100d4578063144ae85514610104578063362b3e63146101205780635893253c1461013c578063715018a61461016c578063788243d514610176575b600080fd5b6100ee60048036038101906100e99190610e06565b610298565b6040516100fb9190611323565b60405180910390f35b61011e60048036038101906101199190610e87565b61033d565b005b61013a60048036038101906101359190610e06565b6103a5565b005b61015660048036038101906101519190610e06565b6104f2565b6040516101639190611323565b60405180910390f35b610174610592565b005b610190600480360381019061018b9190610e06565b6105a6565b60405161019d91906112ed565b60405180910390f35b6101c060048036038101906101bb9190610e06565b6105e4565b6040516101cd9190611405565b60405180910390f35b6101de610762565b6040516101eb91906112ed565b60405180910390f35b6101fc61078c565b6040516102099190611427565b60405180910390f35b61022c60048036038101906102279190610dc1565b610792565b6040516102399190611427565b60405180910390f35b61024a61081a565b6040516102579190611427565b60405180910390f35b61027a60048036038101906102759190610e2f565b610820565b005b61029660048036038101906102919190610d98565b610989565b005b60606067600083815260200190815260200160002080546102b890611c2e565b80601f01602080910402602001604051908101604052809291908181526020018280546102e490611c2e565b80156103315780601f1061030657610100808354040283529160200191610331565b820191906000526020600020905b81548152906001019060200180831161031457829003601f168201915b50505050509050919050565b610345610a0d565b8060686000848152602001908152602001600020818161036591906121f5565b9050507fa9c55ebaa1fada408bd72c2f0ea7c27f5444b105bcff12c5381baac912156ada8282604051610399929190611474565b60405180910390a15050565b60008060019054906101000a900460ff161590508080156103d65750600160008054906101000a900460ff1660ff16105b8061040357506103e530610a8b565b1580156104025750600160008054906101000a900460ff1660ff16145b5b610442576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043990611385565b60405180910390fd5b60016000806101000a81548160ff021916908360ff160217905550801561047f576001600060016101000a81548160ff0219169083151502179055505b610487610aae565b816065819055508160668190555080156104ee5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516104e59190611308565b60405180910390a15b5050565b6067602052806000526040600020600091509050805461051190611c2e565b80601f016020809104026020016040519081016040528092919081815260200182805461053d90611c2e565b801561058a5780601f1061055f5761010080835404028352916020019161058a565b820191906000526020600020905b81548152906001019060200180831161056d57829003601f168201915b505050505081565b61059a610a0d565b6105a46000610b07565b565b60686020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081565b6105ec610c36565b606860008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805480602002602001604051908101604052809291908181526020016000905b8282101561075357838290600052602060002090600202016040518060400160405290816000820180546106b890611c2e565b80601f01602080910402602001604051908101604052809291908181526020018280546106e490611c2e565b80156107315780601f1061070657610100808354040283529160200191610731565b820191906000526020600020905b81548152906001019060200180831161071457829003601f168201915b5050505050815260200160018201548152505081526020019060010190610685565b50505050815250509050919050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60665481565b600080606654905083836067600084815260200190815260200160002091906107bc929190610c66565b507f96a65efbb6991f67fc8a4c7550fcfd08f1968737d2f5adcded5cd937b3cc0f3d8185856040516107f093929190611442565b60405180910390a16066600081548092919061080b90611c7c565b91905055508091505092915050565b60655481565b600060676000858152602001908152602001600020805461084090611c2e565b905014610882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087990611345565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166068600085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610926576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091d906113e5565b60405180910390fd5b8181606760008681526020019081526020016000209190610948929190610c66565b507f442b41840a10393534508176faee6f70b1870707dc24573b67d49f28cbac7f1c83838360405161097c93929190611442565b60405180910390a1505050565b610991610a0d565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610a01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f890611365565b60405180910390fd5b610a0a81610b07565b50565b610a15610bcd565b73ffffffffffffffffffffffffffffffffffffffff16610a33610762565b73ffffffffffffffffffffffffffffffffffffffff1614610a89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a80906113a5565b60405180910390fd5b565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16610afd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af4906113c5565b60405180910390fd5b610b05610bd5565b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b600060019054906101000a900460ff16610c24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1b906113c5565b60405180910390fd5b610c34610c2f610bcd565b610b07565b565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b828054610c7290611c2e565b90600052602060002090601f016020900481019282610c945760008555610cdb565b82601f10610cad57803560ff1916838001178555610cdb565b82800160010185558215610cdb579182015b82811115610cda578235825591602001919060010190610cbf565b5b509050610ce89190610cec565b5090565b5b80821115610d05576000816000905550600101610ced565b5090565b600081359050610d1881612269565b92915050565b60008083601f840112610d3057600080fd5b8235905067ffffffffffffffff811115610d4957600080fd5b602083019150836001820283011115610d6157600080fd5b9250929050565b600060408284031215610d7a57600080fd5b81905092915050565b600081359050610d9281612280565b92915050565b600060208284031215610daa57600080fd5b6000610db884828501610d09565b91505092915050565b60008060208385031215610dd457600080fd5b600083013567ffffffffffffffff811115610dee57600080fd5b610dfa85828601610d1e565b92509250509250929050565b600060208284031215610e1857600080fd5b6000610e2684828501610d83565b91505092915050565b600080600060408486031215610e4457600080fd5b6000610e5286828701610d83565b935050602084013567ffffffffffffffff811115610e6f57600080fd5b610e7b86828701610d1e565b92509250509250925092565b60008060408385031215610e9a57600080fd5b6000610ea885828601610d83565b925050602083013567ffffffffffffffff811115610ec557600080fd5b610ed185828601610d68565b9150509250929050565b6000610ee78383611243565b905092915050565b6000610efb8383611292565b905092915050565b610f0c816118b4565b82525050565b610f1b816118b4565b82525050565b6000610f2d8385611622565b935083602084028501610f3f8461158d565b8060005b87811015610f83578484038952610f5a828461181f565b610f648582610edb565b9450610f6f83611608565b925060208a01995050600181019050610f43565b50829750879450505050509392505050565b6000610fa0826115dc565b610faa8185611622565b935083602082028501610fbc85611597565b8060005b85811015610ff85784840389528151610fd98582610eef565b9450610fe483611615565b925060208a01995050600181019050610fc0565b50829750879550505050505092915050565b611013816119a3565b82525050565b60006110258385611633565b9350611032838584611b60565b61103b83611ed3565b840190509392505050565b60006110528385611644565b935061105f838584611b60565b61106883611ed3565b840190509392505050565b600061107e826115fd565b6110888185611633565b9350611098818560208601611b6f565b6110a181611ed3565b840191505092915050565b60006110b7826115fd565b6110c18185611644565b93506110d1818560208601611b6f565b6110da81611ed3565b840191505092915050565b60006110f2601583611644565b91506110fd82611f5f565b602082019050919050565b6000611115602683611644565b915061112082611f88565b604082019050919050565b6000611138602e83611644565b915061114382611fd7565b604082019050919050565b600061115b602083611644565b915061116682612026565b602082019050919050565b600061117e602b83611644565b91506111898261204f565b604082019050919050565b60006111a1601983611644565b91506111ac8261209e565b602082019050919050565b6000604083016111ca600084018461175a565b6111d76000860182610f03565b506111e56020840184611771565b85830360208701526111f8838284610f21565b925050508091505092915050565b600060408301600083015161121e6000860182610f03565b50602083015184820360208601526112368282610f95565b9150508091505092915050565b60006040830161125660008401846117c8565b8583036000870152611269838284611019565b9250505061127a6020840184611843565b61128760208601826112cf565b508091505092915050565b600060408301600083015184820360008601526112af8282611073565b91505060208301516112c460208601826112cf565b508091505092915050565b6112d8816118e6565b82525050565b6112e7816118e6565b82525050565b60006020820190506113026000830184610f12565b92915050565b600060208201905061131d600083018461100a565b92915050565b6000602082019050818103600083015261133d81846110ac565b905092915050565b6000602082019050818103600083015261135e816110e5565b9050919050565b6000602082019050818103600083015261137e81611108565b9050919050565b6000602082019050818103600083015261139e8161112b565b9050919050565b600060208201905081810360008301526113be8161114e565b9050919050565b600060208201905081810360008301526113de81611171565b9050919050565b600060208201905081810360008301526113fe81611194565b9050919050565b6000602082019050818103600083015261141f8184611206565b905092915050565b600060208201905061143c60008301846112de565b92915050565b600060408201905061145760008301866112de565b818103602083015261146a818486611046565b9050949350505050565b600060408201905061148960008301856112de565b818103602083015261149b81846111b7565b90509392505050565b600080833560016020038436030381126114bd57600080fd5b80840192508235915067ffffffffffffffff8211156114db57600080fd5b6020830192506020820236038313156114f357600080fd5b509250929050565b6000808335600160200384360303811261151457600080fd5b80840192508235915067ffffffffffffffff82111561153257600080fd5b60208301925060018202360383131561154a57600080fd5b509250929050565b60008235600160400383360303811261156a57600080fd5b80830191505092915050565b600081905061158682600261185a565b9050919050565b6000819050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b600082905092915050565b600081519050919050565b600081549050919050565b600082905092915050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b60208410600081146116ae57601f84116001811461167e576116778685611c60565b83556116a8565b611687836115bc565b61169c6020601f88010482016001830161190b565b6116a687856120c7565b505b506116f7565b6116b7826115bc565b6020601f8701048101601f871680156116d8576116d78160018403611d9f565b5b6116ea6020601f89010484018361190b565b6001886002021785555050505b5050505050565b6020831060008114611749576020851060008114611727576117208685611c60565b8355611743565b8360ff1916935083611738846115bc565b556001866002020183555b50611753565b6001856002020182555b5050505050565b60006117696020840184610d09565b905092915050565b6000808335600160200384360303811261178a57600080fd5b83810192508235915060208301925067ffffffffffffffff8211156117ae57600080fd5b6020820236038413156117c057600080fd5b509250929050565b600080833560016020038436030381126117e157600080fd5b83810192508235915060208301925067ffffffffffffffff82111561180557600080fd5b60018202360384131561181757600080fd5b509250929050565b60008235600160400383360303811261183757600080fd5b82810191505092915050565b60006118526020840184610d83565b905092915050565b6000611865826118e6565b9150611870836118e6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156118a9576118a8611d12565b5b828202905092915050565b60006118bf826118c6565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b611908600082611e7e565b50565b5b8181101561192a5761191f600082611f47565b60018101905061190c565b5050565b5b8181101561194d57611942600082611f29565b60028101905061192f565b5050565b8181101561196f57611964600082611f47565b600181019050611951565b5050565b6119806000808301611f0b565b61198e600060018301611f47565b50565b600061199c826119b5565b9050919050565b60006119ae826118f0565b9050919050565b60006119c0826119c7565b9050919050565b60006119d2826118c6565b9050919050565b60006119e4826118e6565b9050919050565b6119f583836115d1565b6119ff8183611e1a565b611a088361158d565b611a11836115a7565b6000805b84811015611a4a57611a278488611552565b611a32818486612226565b60208501945060028401935050600181019050611a15565b5050505050505050565b611a5e83836115f2565b67ffffffffffffffff811115611a7757611a76611d70565b5b611a818254611c2e565b600080601f8411601f84111715611a9e57611a9b856115bc565b90505b601f831115611ad1576020601f85010481016020851015611abd578190505b611acf6020601f86010483018261190b565b505b601f841160018114611afe5760008515611aec578388013590505b611af68682611c60565b875550611b56565b601f1985168260005b82811015611b2c57858a01358255600182019150602086019550602081019050611b07565b87831015611b4957858a0135611b45601f8a1682611cc5565b8355505b6001600289020189555050505b5050505050505050565b82818337600083830152505050565b60005b83811015611b8d578082015181840152602081019050611b72565b83811115611b9c576000848401525b50505050565b600081016000830180611bb481611dee565b9050611bc081846121b2565b5050506001810160208301611bd581856114a4565b611be08183866121d5565b505050505050565b6000810160008301611bfa81856114fb565b611c058183866121e5565b50505050600181016020830180611c1b81611e04565b9050611c278184612203565b5050505050565b60006002820490506001821680611c4657607f821691505b60208210811415611c5a57611c59611d41565b5b50919050565b6000611c6c8383611cc5565b9150826002028217905092915050565b6000611c87826118e6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611cba57611cb9611d12565b5b600182019050919050565b6000611cd660001984600802611efe565b1980831691505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611dcf7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802611efe565b815481168255505050565b6000819050919050565b6000819050919050565b60008135611dfb81612269565b80915050919050565b60008135611e1181612280565b80915050919050565b68010000000000000000821115611e3457611e33611d70565b5b611e3d816115e7565b82825580831015611e7957611e5181611576565b611e5a84611576565b611e63846115a7565b818101838201611e73818361192e565b50505050505b505050565b68010000000000000000821115611e9857611e97611d70565b5b8054611ea381611c2e565b80841115611eb857611eb7848284866116fe565b5b80841015611ecd57611ecc84828486611655565b5b50505050565b6000601f19601f8301169050919050565b60008160001b9050919050565b600082821b905092915050565b600082821c905092915050565b60008214611f1c57611f1b611ce3565b5b611f25816118fd565b5050565b60008214611f3a57611f39611ce3565b5b611f4381611973565b5050565b611f4f612297565b611f5a818484612244565b505050565b7f6470696420616c72656164792075706772616465640000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f756e617574686f72697a65642064706964207570677261646500000000000000600082015250565b6120d0816115bc565b6120db838254611c60565b8083556000825550505050565b600073ffffffffffffffffffffffffffffffffffffffff61210884611ee4565b9350801983169250808416831791505092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61214a84611ee4565b9350801983169250808416831791505092915050565b6000600883026121907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611ef1565b61219a8683611ef1565b95508019841693508086168417925050509392505050565b6121bb82611991565b6121ce6121c782611dda565b83546120e8565b8255505050565b6121e08383836119eb565b505050565b6121f0838383611a54565b505050565b6121ff8282611ba2565b5050565b61220c826119d9565b61221f61221882611de4565b835461211e565b8255505050565b811561223557612234611ce3565b5b61223f8382611be8565b505050565b61224d836119d9565b61226161225982611de4565b848454612160565b825550505050565b612272816118b4565b811461227d57600080fd5b50565b612289816118e6565b811461229457600080fd5b50565b60009056fea264697066735822122084f5f1681ed8582b0b01a3c050af63e3bc886fc8eb1d7bfbad5710635ba9f00f64736f6c63430008040033", + "bytecode": "0x60806040523480156200001157600080fd5b50620000226200002860201b60201c565b620001d3565b600060019054906101000a900460ff16156200007b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000729062000127565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff161015620000ed5760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff604051620000e4919062000149565b60405180910390a15b565b6000620000fe60278362000166565b91506200010b8262000184565b604082019050919050565b620001218162000177565b82525050565b600060208201905081810360008301526200014281620000ef565b9050919050565b600060208201905062000160600083018462000116565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b6126a680620001e36000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c8063810a9afa11610097578063b724de3a11610066578063b724de3a14610298578063cfb452b5146102c8578063ded8896b146102e6578063f2fde38b14610302576100f5565b8063810a9afa146101fc57806382b7b5001461022c5780638da5cb5b1461025c578063afc269111461027a576100f5565b8063587a8cbf116100d3578063587a8cbf146101625780635893253c14610192578063715018a6146101c2578063788243d5146101cc576100f5565b8063144ae855146100fa578063362b3e63146101165780634f896d4f14610132575b600080fd5b610114600480360381019061010f919061111f565b61031e565b005b610130600480360381019061012b919061109e565b610386565b005b61014c6004803603810190610147919061109e565b6104d3565b604051610159919061161c565b60405180910390f35b61017c6004803603810190610177919061105d565b610578565b6040516101899190611740565b60405180910390f35b6101ac60048036038101906101a7919061109e565b6105a6565b6040516101b9919061161c565b60405180910390f35b6101ca610646565b005b6101e660048036038101906101e1919061109e565b61065a565b6040516101f391906115e6565b60405180910390f35b6102166004803603810190610211919061109e565b610698565b604051610223919061171e565b60405180910390f35b61024660048036038101906102419190611018565b610816565b6040516102539190611740565b60405180910390f35b610264610841565b60405161027191906115e6565b60405180910390f35b61028261086b565b60405161028f9190611740565b60405180910390f35b6102b260048036038101906102ad9190611018565b610871565b6040516102bf9190611740565b60405180910390f35b6102d0610981565b6040516102dd9190611740565b60405180910390f35b61030060048036038101906102fb91906110c7565b610987565b005b61031c60048036038101906103179190610fef565b610b78565b005b610326610bfc565b8060696000848152602001908152602001600020818161034691906125c9565b9050507fa9c55ebaa1fada408bd72c2f0ea7c27f5444b105bcff12c5381baac912156ada828260405161037a92919061178d565b60405180910390a15050565b60008060019054906101000a900460ff161590508080156103b75750600160008054906101000a900460ff1660ff16105b806103e457506103c630610c7a565b1580156103e35750600160008054906101000a900460ff1660ff16145b5b610423576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161041a9061169e565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610460576001600060016101000a81548160ff0219169083151502179055505b610468610c9d565b816065819055508160668190555080156104cf5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516104c69190611601565b60405180910390a15b5050565b60606067600083815260200190815260200160002080546104f390611fa8565b80601f016020809104026020016040519081016040528092919081815260200182805461051f90611fa8565b801561056c5780601f106105415761010080835404028352916020019161056c565b820191906000526020600020905b81548152906001019060200180831161054f57829003601f168201915b50505050509050919050565b6068818051602081018201805184825260208301602085012081835280955050505050506000915090505481565b606760205280600052604060002060009150905080546105c590611fa8565b80601f01602080910402602001604051908101604052809291908181526020018280546105f190611fa8565b801561063e5780601f106106135761010080835404028352916020019161063e565b820191906000526020600020905b81548152906001019060200180831161062157829003601f168201915b505050505081565b61064e610bfc565b6106586000610cf6565b565b60696020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081565b6106a0610e25565b606960008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805480602002602001604051908101604052809291908181526020016000905b82821015610807578382906000526020600020906002020160405180604001604052908160008201805461076c90611fa8565b80601f016020809104026020016040519081016040528092919081815260200182805461079890611fa8565b80156107e55780601f106107ba576101008083540402835291602001916107e5565b820191906000526020600020905b8154815290600101906020018083116107c857829003601f168201915b5050505050815260200160018201548152505081526020019060010190610739565b50505050815250509050919050565b60006068838360405161082a9291906115cd565b908152602001604051809103902054905092915050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60665481565b600080606884846040516108869291906115cd565b908152602001604051809103902054146108d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108cc9061167e565b60405180910390fd5b6000606654905083836067600084815260200190815260200160002091906108fe929190610e55565b5080606885856040516109129291906115cd565b9081526020016040518091039020819055507f96a65efbb6991f67fc8a4c7550fcfd08f1968737d2f5adcded5cd937b3cc0f3d8185856040516109579392919061175b565b60405180910390a16066600081548092919061097290612027565b91905055508091505092915050565b60655481565b60006067600085815260200190815260200160002080546109a790611fa8565b9050146109e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e09061163e565b60405180910390fd5b6000606883836040516109fd9291906115cd565b90815260200160405180910390205414610a4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a439061167e565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166069600085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610af0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae7906116fe565b60405180910390fd5b8181606760008681526020019081526020016000209190610b12929190610e55565b508260688383604051610b269291906115cd565b9081526020016040518091039020819055507f442b41840a10393534508176faee6f70b1870707dc24573b67d49f28cbac7f1c838383604051610b6b9392919061175b565b60405180910390a1505050565b610b80610bfc565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610bf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be79061165e565b60405180910390fd5b610bf981610cf6565b50565b610c04610dbc565b73ffffffffffffffffffffffffffffffffffffffff16610c22610841565b73ffffffffffffffffffffffffffffffffffffffff1614610c78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6f906116be565b60405180910390fd5b565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16610cec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce3906116de565b60405180910390fd5b610cf4610dc4565b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b600060019054906101000a900460ff16610e13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0a906116de565b60405180910390fd5b610e23610e1e610dbc565b610cf6565b565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b828054610e6190611fa8565b90600052602060002090601f016020900481019282610e835760008555610eca565b82601f10610e9c57803560ff1916838001178555610eca565b82800160010185558215610eca579182015b82811115610ec9578235825591602001919060010190610eae565b5b509050610ed79190610edb565b5090565b5b80821115610ef4576000816000905550600101610edc565b5090565b6000610f0b610f06846118b4565b61188f565b905082815260208101848484011115610f2357600080fd5b610f2e848285611eda565b509392505050565b600081359050610f458161263d565b92915050565b60008083601f840112610f5d57600080fd5b8235905067ffffffffffffffff811115610f7657600080fd5b602083019150836001820283011115610f8e57600080fd5b9250929050565b600082601f830112610fa657600080fd5b8135610fb6848260208601610ef8565b91505092915050565b600060408284031215610fd157600080fd5b81905092915050565b600081359050610fe981612654565b92915050565b60006020828403121561100157600080fd5b600061100f84828501610f36565b91505092915050565b6000806020838503121561102b57600080fd5b600083013567ffffffffffffffff81111561104557600080fd5b61105185828601610f4b565b92509250509250929050565b60006020828403121561106f57600080fd5b600082013567ffffffffffffffff81111561108957600080fd5b61109584828501610f95565b91505092915050565b6000602082840312156110b057600080fd5b60006110be84828501610fda565b91505092915050565b6000806000604084860312156110dc57600080fd5b60006110ea86828701610fda565b935050602084013567ffffffffffffffff81111561110757600080fd5b61111386828701610f4b565b92509250509250925092565b6000806040838503121561113257600080fd5b600061114085828601610fda565b925050602083013567ffffffffffffffff81111561115d57600080fd5b61116985828601610fbf565b9150509250929050565b600061117f8383611523565b905092915050565b60006111938383611572565b905092915050565b6111a481611c2e565b82525050565b6111b381611c2e565b82525050565b60006111c58385611991565b9350836020840285016111d7846118fc565b8060005b8781101561121b5784840389526111f28284611b99565b6111fc8582611173565b945061120783611977565b925060208a019950506001810190506111db565b50829750879450505050509392505050565b60006112388261194b565b6112428185611991565b93508360208202850161125485611906565b8060005b8581101561129057848403895281516112718582611187565b945061127c83611984565b925060208a01995050600181019050611258565b50829750879550505050505092915050565b6112ab81611d1d565b82525050565b60006112bd83856119a2565b93506112ca838584611eda565b6112d38361227e565b840190509392505050565b60006112ea83856119b3565b93506112f7838584611eda565b6113008361227e565b840190509392505050565b600061131783856119c4565b9350611324838584611eda565b82840190509392505050565b600061133b8261196c565b61134581856119a2565b9350611355818560208601611ee9565b61135e8161227e565b840191505092915050565b60006113748261196c565b61137e81856119b3565b935061138e818560208601611ee9565b6113978161227e565b840191505092915050565b60006113af6015836119b3565b91506113ba8261230a565b602082019050919050565b60006113d26026836119b3565b91506113dd82612333565b604082019050919050565b60006113f56019836119b3565b915061140082612382565b602082019050919050565b6000611418602e836119b3565b9150611423826123ab565b604082019050919050565b600061143b6020836119b3565b9150611446826123fa565b602082019050919050565b600061145e602b836119b3565b915061146982612423565b604082019050919050565b60006114816019836119b3565b915061148c82612472565b602082019050919050565b6000604083016114aa6000840184611ad4565b6114b7600086018261119b565b506114c56020840184611aeb565b85830360208701526114d88382846111b9565b925050508091505092915050565b60006040830160008301516114fe600086018261119b565b5060208301518482036020860152611516828261122d565b9150508091505092915050565b6000604083016115366000840184611b42565b85830360008701526115498382846112b1565b9250505061155a6020840184611bbd565b61156760208601826115af565b508091505092915050565b6000604083016000830151848203600086015261158f8282611330565b91505060208301516115a460208601826115af565b508091505092915050565b6115b881611c60565b82525050565b6115c781611c60565b82525050565b60006115da82848661130b565b91508190509392505050565b60006020820190506115fb60008301846111aa565b92915050565b600060208201905061161660008301846112a2565b92915050565b600060208201905081810360008301526116368184611369565b905092915050565b60006020820190508181036000830152611657816113a2565b9050919050565b60006020820190508181036000830152611677816113c5565b9050919050565b60006020820190508181036000830152611697816113e8565b9050919050565b600060208201905081810360008301526116b78161140b565b9050919050565b600060208201905081810360008301526116d78161142e565b9050919050565b600060208201905081810360008301526116f781611451565b9050919050565b6000602082019050818103600083015261171781611474565b9050919050565b6000602082019050818103600083015261173881846114e6565b905092915050565b600060208201905061175560008301846115be565b92915050565b600060408201905061177060008301866115be565b81810360208301526117838184866112de565b9050949350505050565b60006040820190506117a260008301856115be565b81810360208301526117b48184611497565b90509392505050565b600080833560016020038436030381126117d657600080fd5b80840192508235915067ffffffffffffffff8211156117f457600080fd5b60208301925060208202360383131561180c57600080fd5b509250929050565b6000808335600160200384360303811261182d57600080fd5b80840192508235915067ffffffffffffffff82111561184b57600080fd5b60208301925060018202360383131561186357600080fd5b509250929050565b60008235600160400383360303811261188357600080fd5b80830191505092915050565b60006118996118aa565b90506118a58282611ff6565b919050565b6000604051905090565b600067ffffffffffffffff8211156118cf576118ce61211b565b5b6118d88261227e565b9050602081019050919050565b60008190506118f5826002611bd4565b9050919050565b6000819050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b600082905092915050565b600081519050919050565b600081549050919050565b600082905092915050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6020841060008114611a2857601f8411600181146119f8576119f18685611fda565b8355611a22565b611a018361192b565b611a166020601f880104820160018301611c85565b611a20878561249b565b505b50611a71565b611a318261192b565b6020601f8701048101601f87168015611a5257611a51816001840361214a565b5b611a646020601f890104840183611c85565b6001886002021785555050505b5050505050565b6020831060008114611ac3576020851060008114611aa157611a9a8685611fda565b8355611abd565b8360ff1916935083611ab28461192b565b556001866002020183555b50611acd565b6001856002020182555b5050505050565b6000611ae36020840184610f36565b905092915050565b60008083356001602003843603038112611b0457600080fd5b83810192508235915060208301925067ffffffffffffffff821115611b2857600080fd5b602082023603841315611b3a57600080fd5b509250929050565b60008083356001602003843603038112611b5b57600080fd5b83810192508235915060208301925067ffffffffffffffff821115611b7f57600080fd5b600182023603841315611b9157600080fd5b509250929050565b600082356001604003833603038112611bb157600080fd5b82810191505092915050565b6000611bcc6020840184610fda565b905092915050565b6000611bdf82611c60565b9150611bea83611c60565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611c2357611c226120bd565b5b828202905092915050565b6000611c3982611c40565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b611c82600082612229565b50565b5b81811015611ca457611c996000826122f2565b600181019050611c86565b5050565b5b81811015611cc757611cbc6000826122d4565b600281019050611ca9565b5050565b81811015611ce957611cde6000826122f2565b600181019050611ccb565b5050565b611cfa60008083016122b6565b611d086000600183016122f2565b50565b6000611d1682611d2f565b9050919050565b6000611d2882611c6a565b9050919050565b6000611d3a82611d41565b9050919050565b6000611d4c82611c40565b9050919050565b6000611d5e82611c60565b9050919050565b611d6f8383611940565b611d7981836121c5565b611d82836118fc565b611d8b83611916565b6000805b84811015611dc457611da1848861186b565b611dac8184866125fa565b60208501945060028401935050600181019050611d8f565b5050505050505050565b611dd88383611961565b67ffffffffffffffff811115611df157611df061211b565b5b611dfb8254611fa8565b600080601f8411601f84111715611e1857611e158561192b565b90505b601f831115611e4b576020601f85010481016020851015611e37578190505b611e496020601f860104830182611c85565b505b601f841160018114611e785760008515611e66578388013590505b611e708682611fda565b875550611ed0565b601f1985168260005b82811015611ea657858a01358255600182019150602086019550602081019050611e81565b87831015611ec357858a0135611ebf601f8a1682612070565b8355505b6001600289020189555050505b5050505050505050565b82818337600083830152505050565b60005b83811015611f07578082015181840152602081019050611eec565b83811115611f16576000848401525b50505050565b600081016000830180611f2e81612199565b9050611f3a8184612586565b5050506001810160208301611f4f81856117bd565b611f5a8183866125a9565b505050505050565b6000810160008301611f748185611814565b611f7f8183866125b9565b50505050600181016020830180611f95816121af565b9050611fa181846125d7565b5050505050565b60006002820490506001821680611fc057607f821691505b60208210811415611fd457611fd36120ec565b5b50919050565b6000611fe68383612070565b9150826002028217905092915050565b611fff8261227e565b810181811067ffffffffffffffff8211171561201e5761201d61211b565b5b80604052505050565b600061203282611c60565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612065576120646120bd565b5b600182019050919050565b6000612081600019846008026122a9565b1980831691505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61217a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff836020036008026122a9565b815481168255505050565b6000819050919050565b6000819050919050565b600081356121a68161263d565b80915050919050565b600081356121bc81612654565b80915050919050565b680100000000000000008211156121df576121de61211b565b5b6121e881611956565b82825580831015612224576121fc816118e5565b612205846118e5565b61220e84611916565b81810183820161221e8183611ca8565b50505050505b505050565b680100000000000000008211156122435761224261211b565b5b805461224e81611fa8565b808411156122635761226284828486611a78565b5b8084101561227857612277848284866119cf565b5b50505050565b6000601f19601f8301169050919050565b60008160001b9050919050565b600082821b905092915050565b600082821c905092915050565b600082146122c7576122c661208e565b5b6122d081611c77565b5050565b600082146122e5576122e461208e565b5b6122ee81611ced565b5050565b6122fa61266b565b612305818484612618565b505050565b7f6470696420616c72656164792075706772616465640000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f73747265616d20616c7265616479206861732061206450494400000000000000600082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f756e617574686f72697a65642064706964207570677261646500000000000000600082015250565b6124a48161192b565b6124af838254611fda565b8083556000825550505050565b600073ffffffffffffffffffffffffffffffffffffffff6124dc8461228f565b9350801983169250808416831791505092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61251e8461228f565b9350801983169250808416831791505092915050565b6000600883026125647fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261229c565b61256e868361229c565b95508019841693508086168417925050509392505050565b61258f82611d0b565b6125a261259b82612185565b83546124bc565b8255505050565b6125b4838383611d65565b505050565b6125c4838383611dce565b505050565b6125d38282611f1c565b5050565b6125e082611d53565b6125f36125ec8261218f565b83546124f2565b8255505050565b81156126095761260861208e565b5b6126138382611f62565b505050565b61262183611d53565b61263561262d8261218f565b848454612534565b825550505050565b61264681611c2e565b811461265157600080fd5b50565b61265d81611c60565b811461266857600080fd5b50565b60009056fea2646970667358221220cb403f7adc2fb139c3c9359219d93f9c0d9a168b2bc26c7936cfd7429f94f50064736f6c63430008040033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100f55760003560e01c8063810a9afa11610097578063b724de3a11610066578063b724de3a14610298578063cfb452b5146102c8578063ded8896b146102e6578063f2fde38b14610302576100f5565b8063810a9afa146101fc57806382b7b5001461022c5780638da5cb5b1461025c578063afc269111461027a576100f5565b8063587a8cbf116100d3578063587a8cbf146101625780635893253c14610192578063715018a6146101c2578063788243d5146101cc576100f5565b8063144ae855146100fa578063362b3e63146101165780634f896d4f14610132575b600080fd5b610114600480360381019061010f919061111f565b61031e565b005b610130600480360381019061012b919061109e565b610386565b005b61014c6004803603810190610147919061109e565b6104d3565b604051610159919061161c565b60405180910390f35b61017c6004803603810190610177919061105d565b610578565b6040516101899190611740565b60405180910390f35b6101ac60048036038101906101a7919061109e565b6105a6565b6040516101b9919061161c565b60405180910390f35b6101ca610646565b005b6101e660048036038101906101e1919061109e565b61065a565b6040516101f391906115e6565b60405180910390f35b6102166004803603810190610211919061109e565b610698565b604051610223919061171e565b60405180910390f35b61024660048036038101906102419190611018565b610816565b6040516102539190611740565b60405180910390f35b610264610841565b60405161027191906115e6565b60405180910390f35b61028261086b565b60405161028f9190611740565b60405180910390f35b6102b260048036038101906102ad9190611018565b610871565b6040516102bf9190611740565b60405180910390f35b6102d0610981565b6040516102dd9190611740565b60405180910390f35b61030060048036038101906102fb91906110c7565b610987565b005b61031c60048036038101906103179190610fef565b610b78565b005b610326610bfc565b8060696000848152602001908152602001600020818161034691906125c9565b9050507fa9c55ebaa1fada408bd72c2f0ea7c27f5444b105bcff12c5381baac912156ada828260405161037a92919061178d565b60405180910390a15050565b60008060019054906101000a900460ff161590508080156103b75750600160008054906101000a900460ff1660ff16105b806103e457506103c630610c7a565b1580156103e35750600160008054906101000a900460ff1660ff16145b5b610423576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161041a9061169e565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610460576001600060016101000a81548160ff0219169083151502179055505b610468610c9d565b816065819055508160668190555080156104cf5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516104c69190611601565b60405180910390a15b5050565b60606067600083815260200190815260200160002080546104f390611fa8565b80601f016020809104026020016040519081016040528092919081815260200182805461051f90611fa8565b801561056c5780601f106105415761010080835404028352916020019161056c565b820191906000526020600020905b81548152906001019060200180831161054f57829003601f168201915b50505050509050919050565b6068818051602081018201805184825260208301602085012081835280955050505050506000915090505481565b606760205280600052604060002060009150905080546105c590611fa8565b80601f01602080910402602001604051908101604052809291908181526020018280546105f190611fa8565b801561063e5780601f106106135761010080835404028352916020019161063e565b820191906000526020600020905b81548152906001019060200180831161062157829003601f168201915b505050505081565b61064e610bfc565b6106586000610cf6565b565b60696020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081565b6106a0610e25565b606960008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805480602002602001604051908101604052809291908181526020016000905b82821015610807578382906000526020600020906002020160405180604001604052908160008201805461076c90611fa8565b80601f016020809104026020016040519081016040528092919081815260200182805461079890611fa8565b80156107e55780601f106107ba576101008083540402835291602001916107e5565b820191906000526020600020905b8154815290600101906020018083116107c857829003601f168201915b5050505050815260200160018201548152505081526020019060010190610739565b50505050815250509050919050565b60006068838360405161082a9291906115cd565b908152602001604051809103902054905092915050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60665481565b600080606884846040516108869291906115cd565b908152602001604051809103902054146108d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108cc9061167e565b60405180910390fd5b6000606654905083836067600084815260200190815260200160002091906108fe929190610e55565b5080606885856040516109129291906115cd565b9081526020016040518091039020819055507f96a65efbb6991f67fc8a4c7550fcfd08f1968737d2f5adcded5cd937b3cc0f3d8185856040516109579392919061175b565b60405180910390a16066600081548092919061097290612027565b91905055508091505092915050565b60655481565b60006067600085815260200190815260200160002080546109a790611fa8565b9050146109e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e09061163e565b60405180910390fd5b6000606883836040516109fd9291906115cd565b90815260200160405180910390205414610a4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a439061167e565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166069600085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610af0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae7906116fe565b60405180910390fd5b8181606760008681526020019081526020016000209190610b12929190610e55565b508260688383604051610b269291906115cd565b9081526020016040518091039020819055507f442b41840a10393534508176faee6f70b1870707dc24573b67d49f28cbac7f1c838383604051610b6b9392919061175b565b60405180910390a1505050565b610b80610bfc565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610bf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be79061165e565b60405180910390fd5b610bf981610cf6565b50565b610c04610dbc565b73ffffffffffffffffffffffffffffffffffffffff16610c22610841565b73ffffffffffffffffffffffffffffffffffffffff1614610c78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6f906116be565b60405180910390fd5b565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16610cec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce3906116de565b60405180910390fd5b610cf4610dc4565b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b600060019054906101000a900460ff16610e13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0a906116de565b60405180910390fd5b610e23610e1e610dbc565b610cf6565b565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b828054610e6190611fa8565b90600052602060002090601f016020900481019282610e835760008555610eca565b82601f10610e9c57803560ff1916838001178555610eca565b82800160010185558215610eca579182015b82811115610ec9578235825591602001919060010190610eae565b5b509050610ed79190610edb565b5090565b5b80821115610ef4576000816000905550600101610edc565b5090565b6000610f0b610f06846118b4565b61188f565b905082815260208101848484011115610f2357600080fd5b610f2e848285611eda565b509392505050565b600081359050610f458161263d565b92915050565b60008083601f840112610f5d57600080fd5b8235905067ffffffffffffffff811115610f7657600080fd5b602083019150836001820283011115610f8e57600080fd5b9250929050565b600082601f830112610fa657600080fd5b8135610fb6848260208601610ef8565b91505092915050565b600060408284031215610fd157600080fd5b81905092915050565b600081359050610fe981612654565b92915050565b60006020828403121561100157600080fd5b600061100f84828501610f36565b91505092915050565b6000806020838503121561102b57600080fd5b600083013567ffffffffffffffff81111561104557600080fd5b61105185828601610f4b565b92509250509250929050565b60006020828403121561106f57600080fd5b600082013567ffffffffffffffff81111561108957600080fd5b61109584828501610f95565b91505092915050565b6000602082840312156110b057600080fd5b60006110be84828501610fda565b91505092915050565b6000806000604084860312156110dc57600080fd5b60006110ea86828701610fda565b935050602084013567ffffffffffffffff81111561110757600080fd5b61111386828701610f4b565b92509250509250925092565b6000806040838503121561113257600080fd5b600061114085828601610fda565b925050602083013567ffffffffffffffff81111561115d57600080fd5b61116985828601610fbf565b9150509250929050565b600061117f8383611523565b905092915050565b60006111938383611572565b905092915050565b6111a481611c2e565b82525050565b6111b381611c2e565b82525050565b60006111c58385611991565b9350836020840285016111d7846118fc565b8060005b8781101561121b5784840389526111f28284611b99565b6111fc8582611173565b945061120783611977565b925060208a019950506001810190506111db565b50829750879450505050509392505050565b60006112388261194b565b6112428185611991565b93508360208202850161125485611906565b8060005b8581101561129057848403895281516112718582611187565b945061127c83611984565b925060208a01995050600181019050611258565b50829750879550505050505092915050565b6112ab81611d1d565b82525050565b60006112bd83856119a2565b93506112ca838584611eda565b6112d38361227e565b840190509392505050565b60006112ea83856119b3565b93506112f7838584611eda565b6113008361227e565b840190509392505050565b600061131783856119c4565b9350611324838584611eda565b82840190509392505050565b600061133b8261196c565b61134581856119a2565b9350611355818560208601611ee9565b61135e8161227e565b840191505092915050565b60006113748261196c565b61137e81856119b3565b935061138e818560208601611ee9565b6113978161227e565b840191505092915050565b60006113af6015836119b3565b91506113ba8261230a565b602082019050919050565b60006113d26026836119b3565b91506113dd82612333565b604082019050919050565b60006113f56019836119b3565b915061140082612382565b602082019050919050565b6000611418602e836119b3565b9150611423826123ab565b604082019050919050565b600061143b6020836119b3565b9150611446826123fa565b602082019050919050565b600061145e602b836119b3565b915061146982612423565b604082019050919050565b60006114816019836119b3565b915061148c82612472565b602082019050919050565b6000604083016114aa6000840184611ad4565b6114b7600086018261119b565b506114c56020840184611aeb565b85830360208701526114d88382846111b9565b925050508091505092915050565b60006040830160008301516114fe600086018261119b565b5060208301518482036020860152611516828261122d565b9150508091505092915050565b6000604083016115366000840184611b42565b85830360008701526115498382846112b1565b9250505061155a6020840184611bbd565b61156760208601826115af565b508091505092915050565b6000604083016000830151848203600086015261158f8282611330565b91505060208301516115a460208601826115af565b508091505092915050565b6115b881611c60565b82525050565b6115c781611c60565b82525050565b60006115da82848661130b565b91508190509392505050565b60006020820190506115fb60008301846111aa565b92915050565b600060208201905061161660008301846112a2565b92915050565b600060208201905081810360008301526116368184611369565b905092915050565b60006020820190508181036000830152611657816113a2565b9050919050565b60006020820190508181036000830152611677816113c5565b9050919050565b60006020820190508181036000830152611697816113e8565b9050919050565b600060208201905081810360008301526116b78161140b565b9050919050565b600060208201905081810360008301526116d78161142e565b9050919050565b600060208201905081810360008301526116f781611451565b9050919050565b6000602082019050818103600083015261171781611474565b9050919050565b6000602082019050818103600083015261173881846114e6565b905092915050565b600060208201905061175560008301846115be565b92915050565b600060408201905061177060008301866115be565b81810360208301526117838184866112de565b9050949350505050565b60006040820190506117a260008301856115be565b81810360208301526117b48184611497565b90509392505050565b600080833560016020038436030381126117d657600080fd5b80840192508235915067ffffffffffffffff8211156117f457600080fd5b60208301925060208202360383131561180c57600080fd5b509250929050565b6000808335600160200384360303811261182d57600080fd5b80840192508235915067ffffffffffffffff82111561184b57600080fd5b60208301925060018202360383131561186357600080fd5b509250929050565b60008235600160400383360303811261188357600080fd5b80830191505092915050565b60006118996118aa565b90506118a58282611ff6565b919050565b6000604051905090565b600067ffffffffffffffff8211156118cf576118ce61211b565b5b6118d88261227e565b9050602081019050919050565b60008190506118f5826002611bd4565b9050919050565b6000819050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b600082905092915050565b600081519050919050565b600081549050919050565b600082905092915050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6020841060008114611a2857601f8411600181146119f8576119f18685611fda565b8355611a22565b611a018361192b565b611a166020601f880104820160018301611c85565b611a20878561249b565b505b50611a71565b611a318261192b565b6020601f8701048101601f87168015611a5257611a51816001840361214a565b5b611a646020601f890104840183611c85565b6001886002021785555050505b5050505050565b6020831060008114611ac3576020851060008114611aa157611a9a8685611fda565b8355611abd565b8360ff1916935083611ab28461192b565b556001866002020183555b50611acd565b6001856002020182555b5050505050565b6000611ae36020840184610f36565b905092915050565b60008083356001602003843603038112611b0457600080fd5b83810192508235915060208301925067ffffffffffffffff821115611b2857600080fd5b602082023603841315611b3a57600080fd5b509250929050565b60008083356001602003843603038112611b5b57600080fd5b83810192508235915060208301925067ffffffffffffffff821115611b7f57600080fd5b600182023603841315611b9157600080fd5b509250929050565b600082356001604003833603038112611bb157600080fd5b82810191505092915050565b6000611bcc6020840184610fda565b905092915050565b6000611bdf82611c60565b9150611bea83611c60565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611c2357611c226120bd565b5b828202905092915050565b6000611c3982611c40565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b611c82600082612229565b50565b5b81811015611ca457611c996000826122f2565b600181019050611c86565b5050565b5b81811015611cc757611cbc6000826122d4565b600281019050611ca9565b5050565b81811015611ce957611cde6000826122f2565b600181019050611ccb565b5050565b611cfa60008083016122b6565b611d086000600183016122f2565b50565b6000611d1682611d2f565b9050919050565b6000611d2882611c6a565b9050919050565b6000611d3a82611d41565b9050919050565b6000611d4c82611c40565b9050919050565b6000611d5e82611c60565b9050919050565b611d6f8383611940565b611d7981836121c5565b611d82836118fc565b611d8b83611916565b6000805b84811015611dc457611da1848861186b565b611dac8184866125fa565b60208501945060028401935050600181019050611d8f565b5050505050505050565b611dd88383611961565b67ffffffffffffffff811115611df157611df061211b565b5b611dfb8254611fa8565b600080601f8411601f84111715611e1857611e158561192b565b90505b601f831115611e4b576020601f85010481016020851015611e37578190505b611e496020601f860104830182611c85565b505b601f841160018114611e785760008515611e66578388013590505b611e708682611fda565b875550611ed0565b601f1985168260005b82811015611ea657858a01358255600182019150602086019550602081019050611e81565b87831015611ec357858a0135611ebf601f8a1682612070565b8355505b6001600289020189555050505b5050505050505050565b82818337600083830152505050565b60005b83811015611f07578082015181840152602081019050611eec565b83811115611f16576000848401525b50505050565b600081016000830180611f2e81612199565b9050611f3a8184612586565b5050506001810160208301611f4f81856117bd565b611f5a8183866125a9565b505050505050565b6000810160008301611f748185611814565b611f7f8183866125b9565b50505050600181016020830180611f95816121af565b9050611fa181846125d7565b5050505050565b60006002820490506001821680611fc057607f821691505b60208210811415611fd457611fd36120ec565b5b50919050565b6000611fe68383612070565b9150826002028217905092915050565b611fff8261227e565b810181811067ffffffffffffffff8211171561201e5761201d61211b565b5b80604052505050565b600061203282611c60565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612065576120646120bd565b5b600182019050919050565b6000612081600019846008026122a9565b1980831691505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61217a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff836020036008026122a9565b815481168255505050565b6000819050919050565b6000819050919050565b600081356121a68161263d565b80915050919050565b600081356121bc81612654565b80915050919050565b680100000000000000008211156121df576121de61211b565b5b6121e881611956565b82825580831015612224576121fc816118e5565b612205846118e5565b61220e84611916565b81810183820161221e8183611ca8565b50505050505b505050565b680100000000000000008211156122435761224261211b565b5b805461224e81611fa8565b808411156122635761226284828486611a78565b5b8084101561227857612277848284866119cf565b5b50505050565b6000601f19601f8301169050919050565b60008160001b9050919050565b600082821b905092915050565b600082821c905092915050565b600082146122c7576122c661208e565b5b6122d081611c77565b5050565b600082146122e5576122e461208e565b5b6122ee81611ced565b5050565b6122fa61266b565b612305818484612618565b505050565b7f6470696420616c72656164792075706772616465640000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f73747265616d20616c7265616479206861732061206450494400000000000000600082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f756e617574686f72697a65642064706964207570677261646500000000000000600082015250565b6124a48161192b565b6124af838254611fda565b8083556000825550505050565b600073ffffffffffffffffffffffffffffffffffffffff6124dc8461228f565b9350801983169250808416831791505092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61251e8461228f565b9350801983169250808416831791505092915050565b6000600883026125647fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261229c565b61256e868361229c565b95508019841693508086168417925050509392505050565b61258f82611d0b565b6125a261259b82612185565b83546124bc565b8255505050565b6125b4838383611d65565b505050565b6125c4838383611dce565b505050565b6125d38282611f1c565b5050565b6125e082611d53565b6125f36125ec8261218f565b83546124f2565b8255505050565b81156126095761260861208e565b5b6126138382611f62565b505050565b61262183611d53565b61263561262d8261218f565b848454612534565b825550505050565b61264681611c2e565b811461265157600080fd5b50565b61265d81611c60565b811461266857600080fd5b50565b60009056fea2646970667358221220cb403f7adc2fb139c3c9359219d93f9c0d9a168b2bc26c7936cfd7429f94f50064736f6c63430008040033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/desci-contracts/contracts/DpidAliasRegistry.sol b/desci-contracts/contracts/DpidAliasRegistry.sol index f7b2010d5..960df556a 100644 --- a/desci-contracts/contracts/DpidAliasRegistry.sol +++ b/desci-contracts/contracts/DpidAliasRegistry.sol @@ -10,9 +10,11 @@ contract DpidAliasRegistry is OwnableUpgradeable { // Incremented on each dPID mint uint256 public nextDpid; - // dpid => codex streamID + // dpid => codex streamID (resolve dPID) mapping(uint256 => string) public registry; + // codex streamID => dpid (check for existing aliases) + mapping(string => uint256) public reverseRegistry; /// @custom:oz-upgrades-unsafe-allow constructor constructor() { @@ -26,13 +28,21 @@ contract DpidAliasRegistry is OwnableUpgradeable { } /** - * Lookup the codex stream ID of a given dPID - * @param dpid the alias to lookup + * Resolve the codex stream ID of a given dPID + * @param dpid the alias to resolve */ - function lookup(uint256 dpid) public view returns(string memory) { + function resolve(uint256 dpid) public view returns(string memory) { return registry[dpid]; } + /** + * Find the dPID of a given codex stream ID, if it exists + * @param streamId the codex stream ID to search for + */ + function find(string calldata streamId) public view returns(uint256) { + return reverseRegistry[streamId]; + } + event DpidMinted ( uint256 dpid, string streamID @@ -40,15 +50,23 @@ contract DpidAliasRegistry is OwnableUpgradeable { /** * Claim the next free dPID by pointing it to a codex stream ID - * + * * @param streamId the codex stream ID to alias */ - function mintDpid(string calldata streamId) public returns(uint256) { + function mintDpid(string calldata streamId) public returns(uint256) { + require(reverseRegistry[streamId] == 0, "stream already has a dPID"); + uint256 thisDpid = nextDpid; + + // map this dPID to the passed stream ID registry[thisDpid] = streamId; + // map the passed stream ID to this dPID + reverseRegistry[streamId] = thisDpid; + emit DpidMinted(thisDpid, streamId); - + + // Move counter to next free dPID nextDpid++; return thisDpid; } @@ -71,13 +89,14 @@ contract DpidAliasRegistry is OwnableUpgradeable { * Maps dPIDs before _firstDpid to it's complete history. * This allows resolving every old state of a legacy dPID * using only this contract. If the author wants to update - * this history, they need to call migrateDpid. - */ + * this history, they need to call upgradeDpid. + */ mapping(uint256 => LegacyDpidEntry) public legacy; /** - * Lookup the token ID of an unmigrated, legacy dPID. - * Use this to + * Lookup the state of an unmigrated, legacy dPID. + * Use this to resolve the history of a dPID that hasn't been updated + * since the protocol upgrade, or to check the timestamps of old versions. * @param dpid the alias to lookup */ function legacyLookup(uint256 dpid) public view returns(LegacyDpidEntry memory) { @@ -93,24 +112,30 @@ contract DpidAliasRegistry is OwnableUpgradeable { * The owner of a migrated ResearchObject token can call this function * to claim the same dPID in this alias registry by pointing it to a codex * streamID representing the same research object. - * + * * This is an at-most-once operation, as the registry is immutable. * The caller must make sure the stream represents the same history, * and that it controls the stream. - * + * * The legacy entry is deleted when migrated. - * + * * @param dpid the dPID to migrate * @param streamId the codex stream ID that shall supersede the legacy history */ function upgradeDpid(uint256 dpid, string calldata streamId) public { // Assert that this dPID has not been set in the main registry require(bytes(registry[dpid]).length == 0, "dpid already upgraded"); + + // ??????????????????????????????????????????????????? + // Assert that this stream hasn't already got an alias + require(reverseRegistry[streamId] == 0, "stream already has a dPID"); + // Assert that the tx was made by the owner of the imported entry require(legacy[dpid].owner == msg.sender, "unauthorized dpid upgrade"); // Reclaim old dpid registry[dpid] = streamId; + reverseRegistry[streamId] = dpid; emit UpgradedDpid(dpid, streamId); diff --git a/desci-contracts/index.ts b/desci-contracts/index.ts index 7ded7bf67..624df4a5f 100644 --- a/desci-contracts/index.ts +++ b/desci-contracts/index.ts @@ -15,4 +15,7 @@ export const contracts = { prodRoInfo, prodDpidInfo, localDpidAliasInfo, + // TODO update as soon as deployment is done + devDpidAliasInfo: localDpidAliasInfo, + prodDpidAliasInfo: localDpidAliasInfo, }; diff --git a/desci-contracts/package.json b/desci-contracts/package.json index ba1f4829f..7ae725f22 100644 --- a/desci-contracts/package.json +++ b/desci-contracts/package.json @@ -1,7 +1,7 @@ { "name": "@desci-labs/desci-contracts", "description": "Smart contracts implementing DeSci Nodes on-chain state and logic", - "version": "0.2.5-rc2", + "version": "0.2.5-rc4", "license": "MIT", "scripts": { "test": "hardhat clean && hardhat test", diff --git a/desci-contracts/test/DpidAliasRegistry.ts b/desci-contracts/test/DpidAliasRegistry.ts index fb4825a1c..99643cb25 100644 --- a/desci-contracts/test/DpidAliasRegistry.ts +++ b/desci-contracts/test/DpidAliasRegistry.ts @@ -89,11 +89,11 @@ describe("dPID", () => { describe("alias registry", () => { const STREAM_A = "kjzl6kcym7w8y7i5ugaq9a3vlm7hhuaf4bpl5o5qykeh4qtsa12c6rb5ekw6aaa"; - + describe("entry", () => { let tx: ContractTransaction; let res: ContractReceipt; - + before(async () => { tx = await dpidAliasRegistry.mintDpid(STREAM_A); res = await tx.wait(); @@ -129,7 +129,7 @@ describe("dPID", () => { describe("legacy entry", () => { let migrationEntry: DpidAliasRegistry.LegacyDpidEntryStruct; - + before(async () => { migrationEntry = { owner: user1.address, // of dpid owner @@ -141,7 +141,7 @@ describe("dPID", () => { ], }; }); - + describe("import", () => { let successReceipt: ContractReceipt; @@ -154,7 +154,7 @@ describe("dPID", () => { it("can be resolved", async () => { const legacyEntry = await dpidAliasRegistry.legacyLookup(0); - + expect(legacyEntry.owner).to.equal(migrationEntry.owner); expect(legacyEntry.versions.length).to.equal(1); expect(legacyEntry.versions[0].cid).to.equal("bafybeihdwdcefgh4dqkjv67uzcmw7ojee6xedzdetojuzjevtenxquvyku"); @@ -170,15 +170,15 @@ describe("dPID", () => { expect(dpid).to.equal(0); expect(owner).to.equal(user1.address); }); - + it("can NOT be done by others", async () => { const doImport = async () => await dpidAliasRegistry .importLegacyDpid(1, migrationEntry); - + await expect(doImport()).to.be.rejectedWith("caller is not the owner"); }); }); - + describe("upgrade", () => { let successReceipt: ContractReceipt; @@ -186,7 +186,7 @@ describe("dPID", () => { const doUpgrade = async () => await dpidAliasRegistry .connect(user2) .upgradeDpid(0, STREAM_A); - + await expect(doUpgrade()).to.be.rejectedWith("unauthorized dpid upgrade"); }); @@ -202,14 +202,14 @@ describe("dPID", () => { const tx = await dpidAliasRegistry.upgradeDpid(0, STREAM_A); successReceipt = await tx.wait(); - const upgradedEntry = await dpidAliasRegistry.lookup(0); + const upgradedEntry = await dpidAliasRegistry.resolve(0); expect(upgradedEntry).to.equal(STREAM_A); }); it("cannot be done twice", async () => { const doSecondUpgrade = async () => await dpidAliasRegistry.upgradeDpid(0, STREAM_A); - + await expect(doSecondUpgrade()).to.be.rejectedWith("dpid already upgraded"); }); diff --git a/desci-contracts/typechain-types/DpidAliasRegistry.ts b/desci-contracts/typechain-types/DpidAliasRegistry.ts index 9e8188926..7e8aa99ce 100644 --- a/desci-contracts/typechain-types/DpidAliasRegistry.ts +++ b/desci-contracts/typechain-types/DpidAliasRegistry.ts @@ -43,16 +43,18 @@ export interface DpidAliasRegistryInterface extends utils.Interface { contractName: "DpidAliasRegistry"; functions: { "__DpidAliasRegistry_init(uint256)": FunctionFragment; + "find(string)": FunctionFragment; "firstDpid()": FunctionFragment; "importLegacyDpid(uint256,(address,(string,uint256)[]))": FunctionFragment; "legacy(uint256)": FunctionFragment; "legacyLookup(uint256)": FunctionFragment; - "lookup(uint256)": FunctionFragment; "mintDpid(string)": FunctionFragment; "nextDpid()": FunctionFragment; "owner()": FunctionFragment; "registry(uint256)": FunctionFragment; "renounceOwnership()": FunctionFragment; + "resolve(uint256)": FunctionFragment; + "reverseRegistry(string)": FunctionFragment; "transferOwnership(address)": FunctionFragment; "upgradeDpid(uint256,string)": FunctionFragment; }; @@ -61,6 +63,7 @@ export interface DpidAliasRegistryInterface extends utils.Interface { functionFragment: "__DpidAliasRegistry_init", values: [BigNumberish] ): string; + encodeFunctionData(functionFragment: "find", values: [string]): string; encodeFunctionData(functionFragment: "firstDpid", values?: undefined): string; encodeFunctionData( functionFragment: "importLegacyDpid", @@ -74,10 +77,6 @@ export interface DpidAliasRegistryInterface extends utils.Interface { functionFragment: "legacyLookup", values: [BigNumberish] ): string; - encodeFunctionData( - functionFragment: "lookup", - values: [BigNumberish] - ): string; encodeFunctionData(functionFragment: "mintDpid", values: [string]): string; encodeFunctionData(functionFragment: "nextDpid", values?: undefined): string; encodeFunctionData(functionFragment: "owner", values?: undefined): string; @@ -89,6 +88,14 @@ export interface DpidAliasRegistryInterface extends utils.Interface { functionFragment: "renounceOwnership", values?: undefined ): string; + encodeFunctionData( + functionFragment: "resolve", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "reverseRegistry", + values: [string] + ): string; encodeFunctionData( functionFragment: "transferOwnership", values: [string] @@ -102,6 +109,7 @@ export interface DpidAliasRegistryInterface extends utils.Interface { functionFragment: "__DpidAliasRegistry_init", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "find", data: BytesLike): Result; decodeFunctionResult(functionFragment: "firstDpid", data: BytesLike): Result; decodeFunctionResult( functionFragment: "importLegacyDpid", @@ -112,7 +120,6 @@ export interface DpidAliasRegistryInterface extends utils.Interface { functionFragment: "legacyLookup", data: BytesLike ): Result; - decodeFunctionResult(functionFragment: "lookup", data: BytesLike): Result; decodeFunctionResult(functionFragment: "mintDpid", data: BytesLike): Result; decodeFunctionResult(functionFragment: "nextDpid", data: BytesLike): Result; decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; @@ -121,6 +128,11 @@ export interface DpidAliasRegistryInterface extends utils.Interface { functionFragment: "renounceOwnership", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "resolve", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "reverseRegistry", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "transferOwnership", data: BytesLike @@ -211,6 +223,8 @@ export interface DpidAliasRegistry extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; + find(streamId: string, overrides?: CallOverrides): Promise<[BigNumber]>; + firstDpid(overrides?: CallOverrides): Promise<[BigNumber]>; importLegacyDpid( @@ -229,8 +243,6 @@ export interface DpidAliasRegistry extends BaseContract { overrides?: CallOverrides ): Promise<[DpidAliasRegistry.LegacyDpidEntryStructOutput]>; - lookup(dpid: BigNumberish, overrides?: CallOverrides): Promise<[string]>; - mintDpid( streamId: string, overrides?: Overrides & { from?: string | Promise } @@ -246,6 +258,13 @@ export interface DpidAliasRegistry extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; + resolve(dpid: BigNumberish, overrides?: CallOverrides): Promise<[string]>; + + reverseRegistry( + arg0: string, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + transferOwnership( newOwner: string, overrides?: Overrides & { from?: string | Promise } @@ -263,6 +282,8 @@ export interface DpidAliasRegistry extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; + find(streamId: string, overrides?: CallOverrides): Promise; + firstDpid(overrides?: CallOverrides): Promise; importLegacyDpid( @@ -278,8 +299,6 @@ export interface DpidAliasRegistry extends BaseContract { overrides?: CallOverrides ): Promise; - lookup(dpid: BigNumberish, overrides?: CallOverrides): Promise; - mintDpid( streamId: string, overrides?: Overrides & { from?: string | Promise } @@ -295,6 +314,10 @@ export interface DpidAliasRegistry extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; + resolve(dpid: BigNumberish, overrides?: CallOverrides): Promise; + + reverseRegistry(arg0: string, overrides?: CallOverrides): Promise; + transferOwnership( newOwner: string, overrides?: Overrides & { from?: string | Promise } @@ -312,6 +335,8 @@ export interface DpidAliasRegistry extends BaseContract { overrides?: CallOverrides ): Promise; + find(streamId: string, overrides?: CallOverrides): Promise; + firstDpid(overrides?: CallOverrides): Promise; importLegacyDpid( @@ -327,8 +352,6 @@ export interface DpidAliasRegistry extends BaseContract { overrides?: CallOverrides ): Promise; - lookup(dpid: BigNumberish, overrides?: CallOverrides): Promise; - mintDpid(streamId: string, overrides?: CallOverrides): Promise; nextDpid(overrides?: CallOverrides): Promise; @@ -339,6 +362,13 @@ export interface DpidAliasRegistry extends BaseContract { renounceOwnership(overrides?: CallOverrides): Promise; + resolve(dpid: BigNumberish, overrides?: CallOverrides): Promise; + + reverseRegistry( + arg0: string, + overrides?: CallOverrides + ): Promise; + transferOwnership( newOwner: string, overrides?: CallOverrides @@ -389,6 +419,8 @@ export interface DpidAliasRegistry extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; + find(streamId: string, overrides?: CallOverrides): Promise; + firstDpid(overrides?: CallOverrides): Promise; importLegacyDpid( @@ -404,8 +436,6 @@ export interface DpidAliasRegistry extends BaseContract { overrides?: CallOverrides ): Promise; - lookup(dpid: BigNumberish, overrides?: CallOverrides): Promise; - mintDpid( streamId: string, overrides?: Overrides & { from?: string | Promise } @@ -421,6 +451,13 @@ export interface DpidAliasRegistry extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; + resolve(dpid: BigNumberish, overrides?: CallOverrides): Promise; + + reverseRegistry( + arg0: string, + overrides?: CallOverrides + ): Promise; + transferOwnership( newOwner: string, overrides?: Overrides & { from?: string | Promise } @@ -439,6 +476,11 @@ export interface DpidAliasRegistry extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; + find( + streamId: string, + overrides?: CallOverrides + ): Promise; + firstDpid(overrides?: CallOverrides): Promise; importLegacyDpid( @@ -457,11 +499,6 @@ export interface DpidAliasRegistry extends BaseContract { overrides?: CallOverrides ): Promise; - lookup( - dpid: BigNumberish, - overrides?: CallOverrides - ): Promise; - mintDpid( streamId: string, overrides?: Overrides & { from?: string | Promise } @@ -480,6 +517,16 @@ export interface DpidAliasRegistry extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; + resolve( + dpid: BigNumberish, + overrides?: CallOverrides + ): Promise; + + reverseRegistry( + arg0: string, + overrides?: CallOverrides + ): Promise; + transferOwnership( newOwner: string, overrides?: Overrides & { from?: string | Promise } diff --git a/desci-contracts/typechain-types/factories/DpidAliasRegistry__factory.ts b/desci-contracts/typechain-types/factories/DpidAliasRegistry__factory.ts index e333bfee2..4598e9f98 100644 --- a/desci-contracts/typechain-types/factories/DpidAliasRegistry__factory.ts +++ b/desci-contracts/typechain-types/factories/DpidAliasRegistry__factory.ts @@ -140,6 +140,25 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, + { + inputs: [ + { + internalType: "string", + name: "streamId", + type: "string", + }, + ], + name: "find", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [], name: "firstDpid", @@ -257,25 +276,6 @@ const _abi = [ stateMutability: "view", type: "function", }, - { - inputs: [ - { - internalType: "uint256", - name: "dpid", - type: "uint256", - }, - ], - name: "lookup", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, { inputs: [ { @@ -347,6 +347,44 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, + { + inputs: [ + { + internalType: "uint256", + name: "dpid", + type: "uint256", + }, + ], + name: "resolve", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + name: "reverseRegistry", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [ { @@ -381,7 +419,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b50620000226200002860201b60201c565b620001d3565b600060019054906101000a900460ff16156200007b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000729062000127565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff161015620000ed5760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff604051620000e4919062000149565b60405180910390a15b565b6000620000fe60278362000166565b91506200010b8262000184565b604082019050919050565b620001218162000177565b82525050565b600060208201905081810360008301526200014281620000ef565b9050919050565b600060208201905062000160600083018462000116565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b6122d280620001e36000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063810a9afa1161008c578063b724de3a11610066578063b724de3a14610212578063cfb452b514610242578063ded8896b14610260578063f2fde38b1461027c576100cf565b8063810a9afa146101a65780638da5cb5b146101d6578063afc26911146101f4576100cf565b80630a874df6146100d4578063144ae85514610104578063362b3e63146101205780635893253c1461013c578063715018a61461016c578063788243d514610176575b600080fd5b6100ee60048036038101906100e99190610e06565b610298565b6040516100fb9190611323565b60405180910390f35b61011e60048036038101906101199190610e87565b61033d565b005b61013a60048036038101906101359190610e06565b6103a5565b005b61015660048036038101906101519190610e06565b6104f2565b6040516101639190611323565b60405180910390f35b610174610592565b005b610190600480360381019061018b9190610e06565b6105a6565b60405161019d91906112ed565b60405180910390f35b6101c060048036038101906101bb9190610e06565b6105e4565b6040516101cd9190611405565b60405180910390f35b6101de610762565b6040516101eb91906112ed565b60405180910390f35b6101fc61078c565b6040516102099190611427565b60405180910390f35b61022c60048036038101906102279190610dc1565b610792565b6040516102399190611427565b60405180910390f35b61024a61081a565b6040516102579190611427565b60405180910390f35b61027a60048036038101906102759190610e2f565b610820565b005b61029660048036038101906102919190610d98565b610989565b005b60606067600083815260200190815260200160002080546102b890611c2e565b80601f01602080910402602001604051908101604052809291908181526020018280546102e490611c2e565b80156103315780601f1061030657610100808354040283529160200191610331565b820191906000526020600020905b81548152906001019060200180831161031457829003601f168201915b50505050509050919050565b610345610a0d565b8060686000848152602001908152602001600020818161036591906121f5565b9050507fa9c55ebaa1fada408bd72c2f0ea7c27f5444b105bcff12c5381baac912156ada8282604051610399929190611474565b60405180910390a15050565b60008060019054906101000a900460ff161590508080156103d65750600160008054906101000a900460ff1660ff16105b8061040357506103e530610a8b565b1580156104025750600160008054906101000a900460ff1660ff16145b5b610442576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043990611385565b60405180910390fd5b60016000806101000a81548160ff021916908360ff160217905550801561047f576001600060016101000a81548160ff0219169083151502179055505b610487610aae565b816065819055508160668190555080156104ee5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516104e59190611308565b60405180910390a15b5050565b6067602052806000526040600020600091509050805461051190611c2e565b80601f016020809104026020016040519081016040528092919081815260200182805461053d90611c2e565b801561058a5780601f1061055f5761010080835404028352916020019161058a565b820191906000526020600020905b81548152906001019060200180831161056d57829003601f168201915b505050505081565b61059a610a0d565b6105a46000610b07565b565b60686020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081565b6105ec610c36565b606860008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805480602002602001604051908101604052809291908181526020016000905b8282101561075357838290600052602060002090600202016040518060400160405290816000820180546106b890611c2e565b80601f01602080910402602001604051908101604052809291908181526020018280546106e490611c2e565b80156107315780601f1061070657610100808354040283529160200191610731565b820191906000526020600020905b81548152906001019060200180831161071457829003601f168201915b5050505050815260200160018201548152505081526020019060010190610685565b50505050815250509050919050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60665481565b600080606654905083836067600084815260200190815260200160002091906107bc929190610c66565b507f96a65efbb6991f67fc8a4c7550fcfd08f1968737d2f5adcded5cd937b3cc0f3d8185856040516107f093929190611442565b60405180910390a16066600081548092919061080b90611c7c565b91905055508091505092915050565b60655481565b600060676000858152602001908152602001600020805461084090611c2e565b905014610882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087990611345565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166068600085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610926576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091d906113e5565b60405180910390fd5b8181606760008681526020019081526020016000209190610948929190610c66565b507f442b41840a10393534508176faee6f70b1870707dc24573b67d49f28cbac7f1c83838360405161097c93929190611442565b60405180910390a1505050565b610991610a0d565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610a01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f890611365565b60405180910390fd5b610a0a81610b07565b50565b610a15610bcd565b73ffffffffffffffffffffffffffffffffffffffff16610a33610762565b73ffffffffffffffffffffffffffffffffffffffff1614610a89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a80906113a5565b60405180910390fd5b565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16610afd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af4906113c5565b60405180910390fd5b610b05610bd5565b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b600060019054906101000a900460ff16610c24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1b906113c5565b60405180910390fd5b610c34610c2f610bcd565b610b07565b565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b828054610c7290611c2e565b90600052602060002090601f016020900481019282610c945760008555610cdb565b82601f10610cad57803560ff1916838001178555610cdb565b82800160010185558215610cdb579182015b82811115610cda578235825591602001919060010190610cbf565b5b509050610ce89190610cec565b5090565b5b80821115610d05576000816000905550600101610ced565b5090565b600081359050610d1881612269565b92915050565b60008083601f840112610d3057600080fd5b8235905067ffffffffffffffff811115610d4957600080fd5b602083019150836001820283011115610d6157600080fd5b9250929050565b600060408284031215610d7a57600080fd5b81905092915050565b600081359050610d9281612280565b92915050565b600060208284031215610daa57600080fd5b6000610db884828501610d09565b91505092915050565b60008060208385031215610dd457600080fd5b600083013567ffffffffffffffff811115610dee57600080fd5b610dfa85828601610d1e565b92509250509250929050565b600060208284031215610e1857600080fd5b6000610e2684828501610d83565b91505092915050565b600080600060408486031215610e4457600080fd5b6000610e5286828701610d83565b935050602084013567ffffffffffffffff811115610e6f57600080fd5b610e7b86828701610d1e565b92509250509250925092565b60008060408385031215610e9a57600080fd5b6000610ea885828601610d83565b925050602083013567ffffffffffffffff811115610ec557600080fd5b610ed185828601610d68565b9150509250929050565b6000610ee78383611243565b905092915050565b6000610efb8383611292565b905092915050565b610f0c816118b4565b82525050565b610f1b816118b4565b82525050565b6000610f2d8385611622565b935083602084028501610f3f8461158d565b8060005b87811015610f83578484038952610f5a828461181f565b610f648582610edb565b9450610f6f83611608565b925060208a01995050600181019050610f43565b50829750879450505050509392505050565b6000610fa0826115dc565b610faa8185611622565b935083602082028501610fbc85611597565b8060005b85811015610ff85784840389528151610fd98582610eef565b9450610fe483611615565b925060208a01995050600181019050610fc0565b50829750879550505050505092915050565b611013816119a3565b82525050565b60006110258385611633565b9350611032838584611b60565b61103b83611ed3565b840190509392505050565b60006110528385611644565b935061105f838584611b60565b61106883611ed3565b840190509392505050565b600061107e826115fd565b6110888185611633565b9350611098818560208601611b6f565b6110a181611ed3565b840191505092915050565b60006110b7826115fd565b6110c18185611644565b93506110d1818560208601611b6f565b6110da81611ed3565b840191505092915050565b60006110f2601583611644565b91506110fd82611f5f565b602082019050919050565b6000611115602683611644565b915061112082611f88565b604082019050919050565b6000611138602e83611644565b915061114382611fd7565b604082019050919050565b600061115b602083611644565b915061116682612026565b602082019050919050565b600061117e602b83611644565b91506111898261204f565b604082019050919050565b60006111a1601983611644565b91506111ac8261209e565b602082019050919050565b6000604083016111ca600084018461175a565b6111d76000860182610f03565b506111e56020840184611771565b85830360208701526111f8838284610f21565b925050508091505092915050565b600060408301600083015161121e6000860182610f03565b50602083015184820360208601526112368282610f95565b9150508091505092915050565b60006040830161125660008401846117c8565b8583036000870152611269838284611019565b9250505061127a6020840184611843565b61128760208601826112cf565b508091505092915050565b600060408301600083015184820360008601526112af8282611073565b91505060208301516112c460208601826112cf565b508091505092915050565b6112d8816118e6565b82525050565b6112e7816118e6565b82525050565b60006020820190506113026000830184610f12565b92915050565b600060208201905061131d600083018461100a565b92915050565b6000602082019050818103600083015261133d81846110ac565b905092915050565b6000602082019050818103600083015261135e816110e5565b9050919050565b6000602082019050818103600083015261137e81611108565b9050919050565b6000602082019050818103600083015261139e8161112b565b9050919050565b600060208201905081810360008301526113be8161114e565b9050919050565b600060208201905081810360008301526113de81611171565b9050919050565b600060208201905081810360008301526113fe81611194565b9050919050565b6000602082019050818103600083015261141f8184611206565b905092915050565b600060208201905061143c60008301846112de565b92915050565b600060408201905061145760008301866112de565b818103602083015261146a818486611046565b9050949350505050565b600060408201905061148960008301856112de565b818103602083015261149b81846111b7565b90509392505050565b600080833560016020038436030381126114bd57600080fd5b80840192508235915067ffffffffffffffff8211156114db57600080fd5b6020830192506020820236038313156114f357600080fd5b509250929050565b6000808335600160200384360303811261151457600080fd5b80840192508235915067ffffffffffffffff82111561153257600080fd5b60208301925060018202360383131561154a57600080fd5b509250929050565b60008235600160400383360303811261156a57600080fd5b80830191505092915050565b600081905061158682600261185a565b9050919050565b6000819050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b600082905092915050565b600081519050919050565b600081549050919050565b600082905092915050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b60208410600081146116ae57601f84116001811461167e576116778685611c60565b83556116a8565b611687836115bc565b61169c6020601f88010482016001830161190b565b6116a687856120c7565b505b506116f7565b6116b7826115bc565b6020601f8701048101601f871680156116d8576116d78160018403611d9f565b5b6116ea6020601f89010484018361190b565b6001886002021785555050505b5050505050565b6020831060008114611749576020851060008114611727576117208685611c60565b8355611743565b8360ff1916935083611738846115bc565b556001866002020183555b50611753565b6001856002020182555b5050505050565b60006117696020840184610d09565b905092915050565b6000808335600160200384360303811261178a57600080fd5b83810192508235915060208301925067ffffffffffffffff8211156117ae57600080fd5b6020820236038413156117c057600080fd5b509250929050565b600080833560016020038436030381126117e157600080fd5b83810192508235915060208301925067ffffffffffffffff82111561180557600080fd5b60018202360384131561181757600080fd5b509250929050565b60008235600160400383360303811261183757600080fd5b82810191505092915050565b60006118526020840184610d83565b905092915050565b6000611865826118e6565b9150611870836118e6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156118a9576118a8611d12565b5b828202905092915050565b60006118bf826118c6565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b611908600082611e7e565b50565b5b8181101561192a5761191f600082611f47565b60018101905061190c565b5050565b5b8181101561194d57611942600082611f29565b60028101905061192f565b5050565b8181101561196f57611964600082611f47565b600181019050611951565b5050565b6119806000808301611f0b565b61198e600060018301611f47565b50565b600061199c826119b5565b9050919050565b60006119ae826118f0565b9050919050565b60006119c0826119c7565b9050919050565b60006119d2826118c6565b9050919050565b60006119e4826118e6565b9050919050565b6119f583836115d1565b6119ff8183611e1a565b611a088361158d565b611a11836115a7565b6000805b84811015611a4a57611a278488611552565b611a32818486612226565b60208501945060028401935050600181019050611a15565b5050505050505050565b611a5e83836115f2565b67ffffffffffffffff811115611a7757611a76611d70565b5b611a818254611c2e565b600080601f8411601f84111715611a9e57611a9b856115bc565b90505b601f831115611ad1576020601f85010481016020851015611abd578190505b611acf6020601f86010483018261190b565b505b601f841160018114611afe5760008515611aec578388013590505b611af68682611c60565b875550611b56565b601f1985168260005b82811015611b2c57858a01358255600182019150602086019550602081019050611b07565b87831015611b4957858a0135611b45601f8a1682611cc5565b8355505b6001600289020189555050505b5050505050505050565b82818337600083830152505050565b60005b83811015611b8d578082015181840152602081019050611b72565b83811115611b9c576000848401525b50505050565b600081016000830180611bb481611dee565b9050611bc081846121b2565b5050506001810160208301611bd581856114a4565b611be08183866121d5565b505050505050565b6000810160008301611bfa81856114fb565b611c058183866121e5565b50505050600181016020830180611c1b81611e04565b9050611c278184612203565b5050505050565b60006002820490506001821680611c4657607f821691505b60208210811415611c5a57611c59611d41565b5b50919050565b6000611c6c8383611cc5565b9150826002028217905092915050565b6000611c87826118e6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611cba57611cb9611d12565b5b600182019050919050565b6000611cd660001984600802611efe565b1980831691505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611dcf7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802611efe565b815481168255505050565b6000819050919050565b6000819050919050565b60008135611dfb81612269565b80915050919050565b60008135611e1181612280565b80915050919050565b68010000000000000000821115611e3457611e33611d70565b5b611e3d816115e7565b82825580831015611e7957611e5181611576565b611e5a84611576565b611e63846115a7565b818101838201611e73818361192e565b50505050505b505050565b68010000000000000000821115611e9857611e97611d70565b5b8054611ea381611c2e565b80841115611eb857611eb7848284866116fe565b5b80841015611ecd57611ecc84828486611655565b5b50505050565b6000601f19601f8301169050919050565b60008160001b9050919050565b600082821b905092915050565b600082821c905092915050565b60008214611f1c57611f1b611ce3565b5b611f25816118fd565b5050565b60008214611f3a57611f39611ce3565b5b611f4381611973565b5050565b611f4f612297565b611f5a818484612244565b505050565b7f6470696420616c72656164792075706772616465640000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f756e617574686f72697a65642064706964207570677261646500000000000000600082015250565b6120d0816115bc565b6120db838254611c60565b8083556000825550505050565b600073ffffffffffffffffffffffffffffffffffffffff61210884611ee4565b9350801983169250808416831791505092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61214a84611ee4565b9350801983169250808416831791505092915050565b6000600883026121907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611ef1565b61219a8683611ef1565b95508019841693508086168417925050509392505050565b6121bb82611991565b6121ce6121c782611dda565b83546120e8565b8255505050565b6121e08383836119eb565b505050565b6121f0838383611a54565b505050565b6121ff8282611ba2565b5050565b61220c826119d9565b61221f61221882611de4565b835461211e565b8255505050565b811561223557612234611ce3565b5b61223f8382611be8565b505050565b61224d836119d9565b61226161225982611de4565b848454612160565b825550505050565b612272816118b4565b811461227d57600080fd5b50565b612289816118e6565b811461229457600080fd5b50565b60009056fea264697066735822122084f5f1681ed8582b0b01a3c050af63e3bc886fc8eb1d7bfbad5710635ba9f00f64736f6c63430008040033"; + "0x60806040523480156200001157600080fd5b50620000226200002860201b60201c565b620001d3565b600060019054906101000a900460ff16156200007b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000729062000127565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff161015620000ed5760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff604051620000e4919062000149565b60405180910390a15b565b6000620000fe60278362000166565b91506200010b8262000184565b604082019050919050565b620001218162000177565b82525050565b600060208201905081810360008301526200014281620000ef565b9050919050565b600060208201905062000160600083018462000116565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b6126a680620001e36000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c8063810a9afa11610097578063b724de3a11610066578063b724de3a14610298578063cfb452b5146102c8578063ded8896b146102e6578063f2fde38b14610302576100f5565b8063810a9afa146101fc57806382b7b5001461022c5780638da5cb5b1461025c578063afc269111461027a576100f5565b8063587a8cbf116100d3578063587a8cbf146101625780635893253c14610192578063715018a6146101c2578063788243d5146101cc576100f5565b8063144ae855146100fa578063362b3e63146101165780634f896d4f14610132575b600080fd5b610114600480360381019061010f919061111f565b61031e565b005b610130600480360381019061012b919061109e565b610386565b005b61014c6004803603810190610147919061109e565b6104d3565b604051610159919061161c565b60405180910390f35b61017c6004803603810190610177919061105d565b610578565b6040516101899190611740565b60405180910390f35b6101ac60048036038101906101a7919061109e565b6105a6565b6040516101b9919061161c565b60405180910390f35b6101ca610646565b005b6101e660048036038101906101e1919061109e565b61065a565b6040516101f391906115e6565b60405180910390f35b6102166004803603810190610211919061109e565b610698565b604051610223919061171e565b60405180910390f35b61024660048036038101906102419190611018565b610816565b6040516102539190611740565b60405180910390f35b610264610841565b60405161027191906115e6565b60405180910390f35b61028261086b565b60405161028f9190611740565b60405180910390f35b6102b260048036038101906102ad9190611018565b610871565b6040516102bf9190611740565b60405180910390f35b6102d0610981565b6040516102dd9190611740565b60405180910390f35b61030060048036038101906102fb91906110c7565b610987565b005b61031c60048036038101906103179190610fef565b610b78565b005b610326610bfc565b8060696000848152602001908152602001600020818161034691906125c9565b9050507fa9c55ebaa1fada408bd72c2f0ea7c27f5444b105bcff12c5381baac912156ada828260405161037a92919061178d565b60405180910390a15050565b60008060019054906101000a900460ff161590508080156103b75750600160008054906101000a900460ff1660ff16105b806103e457506103c630610c7a565b1580156103e35750600160008054906101000a900460ff1660ff16145b5b610423576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161041a9061169e565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610460576001600060016101000a81548160ff0219169083151502179055505b610468610c9d565b816065819055508160668190555080156104cf5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516104c69190611601565b60405180910390a15b5050565b60606067600083815260200190815260200160002080546104f390611fa8565b80601f016020809104026020016040519081016040528092919081815260200182805461051f90611fa8565b801561056c5780601f106105415761010080835404028352916020019161056c565b820191906000526020600020905b81548152906001019060200180831161054f57829003601f168201915b50505050509050919050565b6068818051602081018201805184825260208301602085012081835280955050505050506000915090505481565b606760205280600052604060002060009150905080546105c590611fa8565b80601f01602080910402602001604051908101604052809291908181526020018280546105f190611fa8565b801561063e5780601f106106135761010080835404028352916020019161063e565b820191906000526020600020905b81548152906001019060200180831161062157829003601f168201915b505050505081565b61064e610bfc565b6106586000610cf6565b565b60696020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081565b6106a0610e25565b606960008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805480602002602001604051908101604052809291908181526020016000905b82821015610807578382906000526020600020906002020160405180604001604052908160008201805461076c90611fa8565b80601f016020809104026020016040519081016040528092919081815260200182805461079890611fa8565b80156107e55780601f106107ba576101008083540402835291602001916107e5565b820191906000526020600020905b8154815290600101906020018083116107c857829003601f168201915b5050505050815260200160018201548152505081526020019060010190610739565b50505050815250509050919050565b60006068838360405161082a9291906115cd565b908152602001604051809103902054905092915050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60665481565b600080606884846040516108869291906115cd565b908152602001604051809103902054146108d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108cc9061167e565b60405180910390fd5b6000606654905083836067600084815260200190815260200160002091906108fe929190610e55565b5080606885856040516109129291906115cd565b9081526020016040518091039020819055507f96a65efbb6991f67fc8a4c7550fcfd08f1968737d2f5adcded5cd937b3cc0f3d8185856040516109579392919061175b565b60405180910390a16066600081548092919061097290612027565b91905055508091505092915050565b60655481565b60006067600085815260200190815260200160002080546109a790611fa8565b9050146109e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e09061163e565b60405180910390fd5b6000606883836040516109fd9291906115cd565b90815260200160405180910390205414610a4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a439061167e565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166069600085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610af0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae7906116fe565b60405180910390fd5b8181606760008681526020019081526020016000209190610b12929190610e55565b508260688383604051610b269291906115cd565b9081526020016040518091039020819055507f442b41840a10393534508176faee6f70b1870707dc24573b67d49f28cbac7f1c838383604051610b6b9392919061175b565b60405180910390a1505050565b610b80610bfc565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610bf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be79061165e565b60405180910390fd5b610bf981610cf6565b50565b610c04610dbc565b73ffffffffffffffffffffffffffffffffffffffff16610c22610841565b73ffffffffffffffffffffffffffffffffffffffff1614610c78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6f906116be565b60405180910390fd5b565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16610cec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce3906116de565b60405180910390fd5b610cf4610dc4565b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b600060019054906101000a900460ff16610e13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0a906116de565b60405180910390fd5b610e23610e1e610dbc565b610cf6565b565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b828054610e6190611fa8565b90600052602060002090601f016020900481019282610e835760008555610eca565b82601f10610e9c57803560ff1916838001178555610eca565b82800160010185558215610eca579182015b82811115610ec9578235825591602001919060010190610eae565b5b509050610ed79190610edb565b5090565b5b80821115610ef4576000816000905550600101610edc565b5090565b6000610f0b610f06846118b4565b61188f565b905082815260208101848484011115610f2357600080fd5b610f2e848285611eda565b509392505050565b600081359050610f458161263d565b92915050565b60008083601f840112610f5d57600080fd5b8235905067ffffffffffffffff811115610f7657600080fd5b602083019150836001820283011115610f8e57600080fd5b9250929050565b600082601f830112610fa657600080fd5b8135610fb6848260208601610ef8565b91505092915050565b600060408284031215610fd157600080fd5b81905092915050565b600081359050610fe981612654565b92915050565b60006020828403121561100157600080fd5b600061100f84828501610f36565b91505092915050565b6000806020838503121561102b57600080fd5b600083013567ffffffffffffffff81111561104557600080fd5b61105185828601610f4b565b92509250509250929050565b60006020828403121561106f57600080fd5b600082013567ffffffffffffffff81111561108957600080fd5b61109584828501610f95565b91505092915050565b6000602082840312156110b057600080fd5b60006110be84828501610fda565b91505092915050565b6000806000604084860312156110dc57600080fd5b60006110ea86828701610fda565b935050602084013567ffffffffffffffff81111561110757600080fd5b61111386828701610f4b565b92509250509250925092565b6000806040838503121561113257600080fd5b600061114085828601610fda565b925050602083013567ffffffffffffffff81111561115d57600080fd5b61116985828601610fbf565b9150509250929050565b600061117f8383611523565b905092915050565b60006111938383611572565b905092915050565b6111a481611c2e565b82525050565b6111b381611c2e565b82525050565b60006111c58385611991565b9350836020840285016111d7846118fc565b8060005b8781101561121b5784840389526111f28284611b99565b6111fc8582611173565b945061120783611977565b925060208a019950506001810190506111db565b50829750879450505050509392505050565b60006112388261194b565b6112428185611991565b93508360208202850161125485611906565b8060005b8581101561129057848403895281516112718582611187565b945061127c83611984565b925060208a01995050600181019050611258565b50829750879550505050505092915050565b6112ab81611d1d565b82525050565b60006112bd83856119a2565b93506112ca838584611eda565b6112d38361227e565b840190509392505050565b60006112ea83856119b3565b93506112f7838584611eda565b6113008361227e565b840190509392505050565b600061131783856119c4565b9350611324838584611eda565b82840190509392505050565b600061133b8261196c565b61134581856119a2565b9350611355818560208601611ee9565b61135e8161227e565b840191505092915050565b60006113748261196c565b61137e81856119b3565b935061138e818560208601611ee9565b6113978161227e565b840191505092915050565b60006113af6015836119b3565b91506113ba8261230a565b602082019050919050565b60006113d26026836119b3565b91506113dd82612333565b604082019050919050565b60006113f56019836119b3565b915061140082612382565b602082019050919050565b6000611418602e836119b3565b9150611423826123ab565b604082019050919050565b600061143b6020836119b3565b9150611446826123fa565b602082019050919050565b600061145e602b836119b3565b915061146982612423565b604082019050919050565b60006114816019836119b3565b915061148c82612472565b602082019050919050565b6000604083016114aa6000840184611ad4565b6114b7600086018261119b565b506114c56020840184611aeb565b85830360208701526114d88382846111b9565b925050508091505092915050565b60006040830160008301516114fe600086018261119b565b5060208301518482036020860152611516828261122d565b9150508091505092915050565b6000604083016115366000840184611b42565b85830360008701526115498382846112b1565b9250505061155a6020840184611bbd565b61156760208601826115af565b508091505092915050565b6000604083016000830151848203600086015261158f8282611330565b91505060208301516115a460208601826115af565b508091505092915050565b6115b881611c60565b82525050565b6115c781611c60565b82525050565b60006115da82848661130b565b91508190509392505050565b60006020820190506115fb60008301846111aa565b92915050565b600060208201905061161660008301846112a2565b92915050565b600060208201905081810360008301526116368184611369565b905092915050565b60006020820190508181036000830152611657816113a2565b9050919050565b60006020820190508181036000830152611677816113c5565b9050919050565b60006020820190508181036000830152611697816113e8565b9050919050565b600060208201905081810360008301526116b78161140b565b9050919050565b600060208201905081810360008301526116d78161142e565b9050919050565b600060208201905081810360008301526116f781611451565b9050919050565b6000602082019050818103600083015261171781611474565b9050919050565b6000602082019050818103600083015261173881846114e6565b905092915050565b600060208201905061175560008301846115be565b92915050565b600060408201905061177060008301866115be565b81810360208301526117838184866112de565b9050949350505050565b60006040820190506117a260008301856115be565b81810360208301526117b48184611497565b90509392505050565b600080833560016020038436030381126117d657600080fd5b80840192508235915067ffffffffffffffff8211156117f457600080fd5b60208301925060208202360383131561180c57600080fd5b509250929050565b6000808335600160200384360303811261182d57600080fd5b80840192508235915067ffffffffffffffff82111561184b57600080fd5b60208301925060018202360383131561186357600080fd5b509250929050565b60008235600160400383360303811261188357600080fd5b80830191505092915050565b60006118996118aa565b90506118a58282611ff6565b919050565b6000604051905090565b600067ffffffffffffffff8211156118cf576118ce61211b565b5b6118d88261227e565b9050602081019050919050565b60008190506118f5826002611bd4565b9050919050565b6000819050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b600082905092915050565b600081519050919050565b600081549050919050565b600082905092915050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6020841060008114611a2857601f8411600181146119f8576119f18685611fda565b8355611a22565b611a018361192b565b611a166020601f880104820160018301611c85565b611a20878561249b565b505b50611a71565b611a318261192b565b6020601f8701048101601f87168015611a5257611a51816001840361214a565b5b611a646020601f890104840183611c85565b6001886002021785555050505b5050505050565b6020831060008114611ac3576020851060008114611aa157611a9a8685611fda565b8355611abd565b8360ff1916935083611ab28461192b565b556001866002020183555b50611acd565b6001856002020182555b5050505050565b6000611ae36020840184610f36565b905092915050565b60008083356001602003843603038112611b0457600080fd5b83810192508235915060208301925067ffffffffffffffff821115611b2857600080fd5b602082023603841315611b3a57600080fd5b509250929050565b60008083356001602003843603038112611b5b57600080fd5b83810192508235915060208301925067ffffffffffffffff821115611b7f57600080fd5b600182023603841315611b9157600080fd5b509250929050565b600082356001604003833603038112611bb157600080fd5b82810191505092915050565b6000611bcc6020840184610fda565b905092915050565b6000611bdf82611c60565b9150611bea83611c60565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611c2357611c226120bd565b5b828202905092915050565b6000611c3982611c40565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b611c82600082612229565b50565b5b81811015611ca457611c996000826122f2565b600181019050611c86565b5050565b5b81811015611cc757611cbc6000826122d4565b600281019050611ca9565b5050565b81811015611ce957611cde6000826122f2565b600181019050611ccb565b5050565b611cfa60008083016122b6565b611d086000600183016122f2565b50565b6000611d1682611d2f565b9050919050565b6000611d2882611c6a565b9050919050565b6000611d3a82611d41565b9050919050565b6000611d4c82611c40565b9050919050565b6000611d5e82611c60565b9050919050565b611d6f8383611940565b611d7981836121c5565b611d82836118fc565b611d8b83611916565b6000805b84811015611dc457611da1848861186b565b611dac8184866125fa565b60208501945060028401935050600181019050611d8f565b5050505050505050565b611dd88383611961565b67ffffffffffffffff811115611df157611df061211b565b5b611dfb8254611fa8565b600080601f8411601f84111715611e1857611e158561192b565b90505b601f831115611e4b576020601f85010481016020851015611e37578190505b611e496020601f860104830182611c85565b505b601f841160018114611e785760008515611e66578388013590505b611e708682611fda565b875550611ed0565b601f1985168260005b82811015611ea657858a01358255600182019150602086019550602081019050611e81565b87831015611ec357858a0135611ebf601f8a1682612070565b8355505b6001600289020189555050505b5050505050505050565b82818337600083830152505050565b60005b83811015611f07578082015181840152602081019050611eec565b83811115611f16576000848401525b50505050565b600081016000830180611f2e81612199565b9050611f3a8184612586565b5050506001810160208301611f4f81856117bd565b611f5a8183866125a9565b505050505050565b6000810160008301611f748185611814565b611f7f8183866125b9565b50505050600181016020830180611f95816121af565b9050611fa181846125d7565b5050505050565b60006002820490506001821680611fc057607f821691505b60208210811415611fd457611fd36120ec565b5b50919050565b6000611fe68383612070565b9150826002028217905092915050565b611fff8261227e565b810181811067ffffffffffffffff8211171561201e5761201d61211b565b5b80604052505050565b600061203282611c60565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612065576120646120bd565b5b600182019050919050565b6000612081600019846008026122a9565b1980831691505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61217a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff836020036008026122a9565b815481168255505050565b6000819050919050565b6000819050919050565b600081356121a68161263d565b80915050919050565b600081356121bc81612654565b80915050919050565b680100000000000000008211156121df576121de61211b565b5b6121e881611956565b82825580831015612224576121fc816118e5565b612205846118e5565b61220e84611916565b81810183820161221e8183611ca8565b50505050505b505050565b680100000000000000008211156122435761224261211b565b5b805461224e81611fa8565b808411156122635761226284828486611a78565b5b8084101561227857612277848284866119cf565b5b50505050565b6000601f19601f8301169050919050565b60008160001b9050919050565b600082821b905092915050565b600082821c905092915050565b600082146122c7576122c661208e565b5b6122d081611c77565b5050565b600082146122e5576122e461208e565b5b6122ee81611ced565b5050565b6122fa61266b565b612305818484612618565b505050565b7f6470696420616c72656164792075706772616465640000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f73747265616d20616c7265616479206861732061206450494400000000000000600082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f756e617574686f72697a65642064706964207570677261646500000000000000600082015250565b6124a48161192b565b6124af838254611fda565b8083556000825550505050565b600073ffffffffffffffffffffffffffffffffffffffff6124dc8461228f565b9350801983169250808416831791505092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61251e8461228f565b9350801983169250808416831791505092915050565b6000600883026125647fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261229c565b61256e868361229c565b95508019841693508086168417925050509392505050565b61258f82611d0b565b6125a261259b82612185565b83546124bc565b8255505050565b6125b4838383611d65565b505050565b6125c4838383611dce565b505050565b6125d38282611f1c565b5050565b6125e082611d53565b6125f36125ec8261218f565b83546124f2565b8255505050565b81156126095761260861208e565b5b6126138382611f62565b505050565b61262183611d53565b61263561262d8261218f565b848454612534565b825550505050565b61264681611c2e565b811461265157600080fd5b50565b61265d81611c60565b811461266857600080fd5b50565b60009056fea2646970667358221220cb403f7adc2fb139c3c9359219d93f9c0d9a168b2bc26c7936cfd7429f94f50064736f6c63430008040033"; type DpidAliasRegistryConstructorParams = | [signer?: Signer] From 231ac58c2daf308932965a6008d4691f00bf20b1 Mon Sep 17 00:00:00 2001 From: m0ar Date: Thu, 30 May 2024 11:59:04 +0200 Subject: [PATCH 07/34] contracts: improve migration/sync scripts, add mig freeze method --- .../DpidAliasRegistry.json | 50 +++++--- .../contracts/DpidAliasRegistry.sol | 112 ++++++++++++++---- desci-contracts/package.json | 2 +- .../scripts/deployDpidAliasRegistry.js | 8 +- .../scripts/migrateToAliasRegistry.mjs | 100 +++++++++++++--- .../scripts/syncAliasRegistryMigration.mjs | 97 +++++++++++++++ desci-contracts/test/DpidAliasRegistry.ts | 23 ++-- .../typechain-types/DpidAliasRegistry.ts | 109 +++++++++++------ .../factories/DpidAliasRegistry__factory.ts | 48 +++++--- 9 files changed, 431 insertions(+), 118 deletions(-) create mode 100644 desci-contracts/scripts/syncAliasRegistryMigration.mjs diff --git a/desci-contracts/artifacts/contracts/DpidAliasRegistry.sol/DpidAliasRegistry.json b/desci-contracts/artifacts/contracts/DpidAliasRegistry.sol/DpidAliasRegistry.json index da4e58c77..9aed92323 100644 --- a/desci-contracts/artifacts/contracts/DpidAliasRegistry.sol/DpidAliasRegistry.json +++ b/desci-contracts/artifacts/contracts/DpidAliasRegistry.sol/DpidAliasRegistry.json @@ -121,19 +121,6 @@ "name": "UpgradedDpid", "type": "event" }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_firstDpid", - "type": "uint256" - } - ], - "name": "__DpidAliasRegistry_init", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [ { @@ -166,6 +153,13 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "freezeMigration", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -208,6 +202,19 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_firstDpid", + "type": "uint256" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -270,6 +277,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "migrationFrozen", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -411,8 +431,8 @@ "type": "function" } ], - "bytecode": "0x60806040523480156200001157600080fd5b50620000226200002860201b60201c565b620001d3565b600060019054906101000a900460ff16156200007b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000729062000127565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff161015620000ed5760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff604051620000e4919062000149565b60405180910390a15b565b6000620000fe60278362000166565b91506200010b8262000184565b604082019050919050565b620001218162000177565b82525050565b600060208201905081810360008301526200014281620000ef565b9050919050565b600060208201905062000160600083018462000116565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b6126a680620001e36000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c8063810a9afa11610097578063b724de3a11610066578063b724de3a14610298578063cfb452b5146102c8578063ded8896b146102e6578063f2fde38b14610302576100f5565b8063810a9afa146101fc57806382b7b5001461022c5780638da5cb5b1461025c578063afc269111461027a576100f5565b8063587a8cbf116100d3578063587a8cbf146101625780635893253c14610192578063715018a6146101c2578063788243d5146101cc576100f5565b8063144ae855146100fa578063362b3e63146101165780634f896d4f14610132575b600080fd5b610114600480360381019061010f919061111f565b61031e565b005b610130600480360381019061012b919061109e565b610386565b005b61014c6004803603810190610147919061109e565b6104d3565b604051610159919061161c565b60405180910390f35b61017c6004803603810190610177919061105d565b610578565b6040516101899190611740565b60405180910390f35b6101ac60048036038101906101a7919061109e565b6105a6565b6040516101b9919061161c565b60405180910390f35b6101ca610646565b005b6101e660048036038101906101e1919061109e565b61065a565b6040516101f391906115e6565b60405180910390f35b6102166004803603810190610211919061109e565b610698565b604051610223919061171e565b60405180910390f35b61024660048036038101906102419190611018565b610816565b6040516102539190611740565b60405180910390f35b610264610841565b60405161027191906115e6565b60405180910390f35b61028261086b565b60405161028f9190611740565b60405180910390f35b6102b260048036038101906102ad9190611018565b610871565b6040516102bf9190611740565b60405180910390f35b6102d0610981565b6040516102dd9190611740565b60405180910390f35b61030060048036038101906102fb91906110c7565b610987565b005b61031c60048036038101906103179190610fef565b610b78565b005b610326610bfc565b8060696000848152602001908152602001600020818161034691906125c9565b9050507fa9c55ebaa1fada408bd72c2f0ea7c27f5444b105bcff12c5381baac912156ada828260405161037a92919061178d565b60405180910390a15050565b60008060019054906101000a900460ff161590508080156103b75750600160008054906101000a900460ff1660ff16105b806103e457506103c630610c7a565b1580156103e35750600160008054906101000a900460ff1660ff16145b5b610423576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161041a9061169e565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610460576001600060016101000a81548160ff0219169083151502179055505b610468610c9d565b816065819055508160668190555080156104cf5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516104c69190611601565b60405180910390a15b5050565b60606067600083815260200190815260200160002080546104f390611fa8565b80601f016020809104026020016040519081016040528092919081815260200182805461051f90611fa8565b801561056c5780601f106105415761010080835404028352916020019161056c565b820191906000526020600020905b81548152906001019060200180831161054f57829003601f168201915b50505050509050919050565b6068818051602081018201805184825260208301602085012081835280955050505050506000915090505481565b606760205280600052604060002060009150905080546105c590611fa8565b80601f01602080910402602001604051908101604052809291908181526020018280546105f190611fa8565b801561063e5780601f106106135761010080835404028352916020019161063e565b820191906000526020600020905b81548152906001019060200180831161062157829003601f168201915b505050505081565b61064e610bfc565b6106586000610cf6565b565b60696020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081565b6106a0610e25565b606960008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805480602002602001604051908101604052809291908181526020016000905b82821015610807578382906000526020600020906002020160405180604001604052908160008201805461076c90611fa8565b80601f016020809104026020016040519081016040528092919081815260200182805461079890611fa8565b80156107e55780601f106107ba576101008083540402835291602001916107e5565b820191906000526020600020905b8154815290600101906020018083116107c857829003601f168201915b5050505050815260200160018201548152505081526020019060010190610739565b50505050815250509050919050565b60006068838360405161082a9291906115cd565b908152602001604051809103902054905092915050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60665481565b600080606884846040516108869291906115cd565b908152602001604051809103902054146108d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108cc9061167e565b60405180910390fd5b6000606654905083836067600084815260200190815260200160002091906108fe929190610e55565b5080606885856040516109129291906115cd565b9081526020016040518091039020819055507f96a65efbb6991f67fc8a4c7550fcfd08f1968737d2f5adcded5cd937b3cc0f3d8185856040516109579392919061175b565b60405180910390a16066600081548092919061097290612027565b91905055508091505092915050565b60655481565b60006067600085815260200190815260200160002080546109a790611fa8565b9050146109e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e09061163e565b60405180910390fd5b6000606883836040516109fd9291906115cd565b90815260200160405180910390205414610a4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a439061167e565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166069600085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610af0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae7906116fe565b60405180910390fd5b8181606760008681526020019081526020016000209190610b12929190610e55565b508260688383604051610b269291906115cd565b9081526020016040518091039020819055507f442b41840a10393534508176faee6f70b1870707dc24573b67d49f28cbac7f1c838383604051610b6b9392919061175b565b60405180910390a1505050565b610b80610bfc565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610bf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be79061165e565b60405180910390fd5b610bf981610cf6565b50565b610c04610dbc565b73ffffffffffffffffffffffffffffffffffffffff16610c22610841565b73ffffffffffffffffffffffffffffffffffffffff1614610c78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6f906116be565b60405180910390fd5b565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16610cec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce3906116de565b60405180910390fd5b610cf4610dc4565b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b600060019054906101000a900460ff16610e13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0a906116de565b60405180910390fd5b610e23610e1e610dbc565b610cf6565b565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b828054610e6190611fa8565b90600052602060002090601f016020900481019282610e835760008555610eca565b82601f10610e9c57803560ff1916838001178555610eca565b82800160010185558215610eca579182015b82811115610ec9578235825591602001919060010190610eae565b5b509050610ed79190610edb565b5090565b5b80821115610ef4576000816000905550600101610edc565b5090565b6000610f0b610f06846118b4565b61188f565b905082815260208101848484011115610f2357600080fd5b610f2e848285611eda565b509392505050565b600081359050610f458161263d565b92915050565b60008083601f840112610f5d57600080fd5b8235905067ffffffffffffffff811115610f7657600080fd5b602083019150836001820283011115610f8e57600080fd5b9250929050565b600082601f830112610fa657600080fd5b8135610fb6848260208601610ef8565b91505092915050565b600060408284031215610fd157600080fd5b81905092915050565b600081359050610fe981612654565b92915050565b60006020828403121561100157600080fd5b600061100f84828501610f36565b91505092915050565b6000806020838503121561102b57600080fd5b600083013567ffffffffffffffff81111561104557600080fd5b61105185828601610f4b565b92509250509250929050565b60006020828403121561106f57600080fd5b600082013567ffffffffffffffff81111561108957600080fd5b61109584828501610f95565b91505092915050565b6000602082840312156110b057600080fd5b60006110be84828501610fda565b91505092915050565b6000806000604084860312156110dc57600080fd5b60006110ea86828701610fda565b935050602084013567ffffffffffffffff81111561110757600080fd5b61111386828701610f4b565b92509250509250925092565b6000806040838503121561113257600080fd5b600061114085828601610fda565b925050602083013567ffffffffffffffff81111561115d57600080fd5b61116985828601610fbf565b9150509250929050565b600061117f8383611523565b905092915050565b60006111938383611572565b905092915050565b6111a481611c2e565b82525050565b6111b381611c2e565b82525050565b60006111c58385611991565b9350836020840285016111d7846118fc565b8060005b8781101561121b5784840389526111f28284611b99565b6111fc8582611173565b945061120783611977565b925060208a019950506001810190506111db565b50829750879450505050509392505050565b60006112388261194b565b6112428185611991565b93508360208202850161125485611906565b8060005b8581101561129057848403895281516112718582611187565b945061127c83611984565b925060208a01995050600181019050611258565b50829750879550505050505092915050565b6112ab81611d1d565b82525050565b60006112bd83856119a2565b93506112ca838584611eda565b6112d38361227e565b840190509392505050565b60006112ea83856119b3565b93506112f7838584611eda565b6113008361227e565b840190509392505050565b600061131783856119c4565b9350611324838584611eda565b82840190509392505050565b600061133b8261196c565b61134581856119a2565b9350611355818560208601611ee9565b61135e8161227e565b840191505092915050565b60006113748261196c565b61137e81856119b3565b935061138e818560208601611ee9565b6113978161227e565b840191505092915050565b60006113af6015836119b3565b91506113ba8261230a565b602082019050919050565b60006113d26026836119b3565b91506113dd82612333565b604082019050919050565b60006113f56019836119b3565b915061140082612382565b602082019050919050565b6000611418602e836119b3565b9150611423826123ab565b604082019050919050565b600061143b6020836119b3565b9150611446826123fa565b602082019050919050565b600061145e602b836119b3565b915061146982612423565b604082019050919050565b60006114816019836119b3565b915061148c82612472565b602082019050919050565b6000604083016114aa6000840184611ad4565b6114b7600086018261119b565b506114c56020840184611aeb565b85830360208701526114d88382846111b9565b925050508091505092915050565b60006040830160008301516114fe600086018261119b565b5060208301518482036020860152611516828261122d565b9150508091505092915050565b6000604083016115366000840184611b42565b85830360008701526115498382846112b1565b9250505061155a6020840184611bbd565b61156760208601826115af565b508091505092915050565b6000604083016000830151848203600086015261158f8282611330565b91505060208301516115a460208601826115af565b508091505092915050565b6115b881611c60565b82525050565b6115c781611c60565b82525050565b60006115da82848661130b565b91508190509392505050565b60006020820190506115fb60008301846111aa565b92915050565b600060208201905061161660008301846112a2565b92915050565b600060208201905081810360008301526116368184611369565b905092915050565b60006020820190508181036000830152611657816113a2565b9050919050565b60006020820190508181036000830152611677816113c5565b9050919050565b60006020820190508181036000830152611697816113e8565b9050919050565b600060208201905081810360008301526116b78161140b565b9050919050565b600060208201905081810360008301526116d78161142e565b9050919050565b600060208201905081810360008301526116f781611451565b9050919050565b6000602082019050818103600083015261171781611474565b9050919050565b6000602082019050818103600083015261173881846114e6565b905092915050565b600060208201905061175560008301846115be565b92915050565b600060408201905061177060008301866115be565b81810360208301526117838184866112de565b9050949350505050565b60006040820190506117a260008301856115be565b81810360208301526117b48184611497565b90509392505050565b600080833560016020038436030381126117d657600080fd5b80840192508235915067ffffffffffffffff8211156117f457600080fd5b60208301925060208202360383131561180c57600080fd5b509250929050565b6000808335600160200384360303811261182d57600080fd5b80840192508235915067ffffffffffffffff82111561184b57600080fd5b60208301925060018202360383131561186357600080fd5b509250929050565b60008235600160400383360303811261188357600080fd5b80830191505092915050565b60006118996118aa565b90506118a58282611ff6565b919050565b6000604051905090565b600067ffffffffffffffff8211156118cf576118ce61211b565b5b6118d88261227e565b9050602081019050919050565b60008190506118f5826002611bd4565b9050919050565b6000819050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b600082905092915050565b600081519050919050565b600081549050919050565b600082905092915050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6020841060008114611a2857601f8411600181146119f8576119f18685611fda565b8355611a22565b611a018361192b565b611a166020601f880104820160018301611c85565b611a20878561249b565b505b50611a71565b611a318261192b565b6020601f8701048101601f87168015611a5257611a51816001840361214a565b5b611a646020601f890104840183611c85565b6001886002021785555050505b5050505050565b6020831060008114611ac3576020851060008114611aa157611a9a8685611fda565b8355611abd565b8360ff1916935083611ab28461192b565b556001866002020183555b50611acd565b6001856002020182555b5050505050565b6000611ae36020840184610f36565b905092915050565b60008083356001602003843603038112611b0457600080fd5b83810192508235915060208301925067ffffffffffffffff821115611b2857600080fd5b602082023603841315611b3a57600080fd5b509250929050565b60008083356001602003843603038112611b5b57600080fd5b83810192508235915060208301925067ffffffffffffffff821115611b7f57600080fd5b600182023603841315611b9157600080fd5b509250929050565b600082356001604003833603038112611bb157600080fd5b82810191505092915050565b6000611bcc6020840184610fda565b905092915050565b6000611bdf82611c60565b9150611bea83611c60565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611c2357611c226120bd565b5b828202905092915050565b6000611c3982611c40565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b611c82600082612229565b50565b5b81811015611ca457611c996000826122f2565b600181019050611c86565b5050565b5b81811015611cc757611cbc6000826122d4565b600281019050611ca9565b5050565b81811015611ce957611cde6000826122f2565b600181019050611ccb565b5050565b611cfa60008083016122b6565b611d086000600183016122f2565b50565b6000611d1682611d2f565b9050919050565b6000611d2882611c6a565b9050919050565b6000611d3a82611d41565b9050919050565b6000611d4c82611c40565b9050919050565b6000611d5e82611c60565b9050919050565b611d6f8383611940565b611d7981836121c5565b611d82836118fc565b611d8b83611916565b6000805b84811015611dc457611da1848861186b565b611dac8184866125fa565b60208501945060028401935050600181019050611d8f565b5050505050505050565b611dd88383611961565b67ffffffffffffffff811115611df157611df061211b565b5b611dfb8254611fa8565b600080601f8411601f84111715611e1857611e158561192b565b90505b601f831115611e4b576020601f85010481016020851015611e37578190505b611e496020601f860104830182611c85565b505b601f841160018114611e785760008515611e66578388013590505b611e708682611fda565b875550611ed0565b601f1985168260005b82811015611ea657858a01358255600182019150602086019550602081019050611e81565b87831015611ec357858a0135611ebf601f8a1682612070565b8355505b6001600289020189555050505b5050505050505050565b82818337600083830152505050565b60005b83811015611f07578082015181840152602081019050611eec565b83811115611f16576000848401525b50505050565b600081016000830180611f2e81612199565b9050611f3a8184612586565b5050506001810160208301611f4f81856117bd565b611f5a8183866125a9565b505050505050565b6000810160008301611f748185611814565b611f7f8183866125b9565b50505050600181016020830180611f95816121af565b9050611fa181846125d7565b5050505050565b60006002820490506001821680611fc057607f821691505b60208210811415611fd457611fd36120ec565b5b50919050565b6000611fe68383612070565b9150826002028217905092915050565b611fff8261227e565b810181811067ffffffffffffffff8211171561201e5761201d61211b565b5b80604052505050565b600061203282611c60565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612065576120646120bd565b5b600182019050919050565b6000612081600019846008026122a9565b1980831691505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61217a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff836020036008026122a9565b815481168255505050565b6000819050919050565b6000819050919050565b600081356121a68161263d565b80915050919050565b600081356121bc81612654565b80915050919050565b680100000000000000008211156121df576121de61211b565b5b6121e881611956565b82825580831015612224576121fc816118e5565b612205846118e5565b61220e84611916565b81810183820161221e8183611ca8565b50505050505b505050565b680100000000000000008211156122435761224261211b565b5b805461224e81611fa8565b808411156122635761226284828486611a78565b5b8084101561227857612277848284866119cf565b5b50505050565b6000601f19601f8301169050919050565b60008160001b9050919050565b600082821b905092915050565b600082821c905092915050565b600082146122c7576122c661208e565b5b6122d081611c77565b5050565b600082146122e5576122e461208e565b5b6122ee81611ced565b5050565b6122fa61266b565b612305818484612618565b505050565b7f6470696420616c72656164792075706772616465640000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f73747265616d20616c7265616479206861732061206450494400000000000000600082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f756e617574686f72697a65642064706964207570677261646500000000000000600082015250565b6124a48161192b565b6124af838254611fda565b8083556000825550505050565b600073ffffffffffffffffffffffffffffffffffffffff6124dc8461228f565b9350801983169250808416831791505092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61251e8461228f565b9350801983169250808416831791505092915050565b6000600883026125647fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261229c565b61256e868361229c565b95508019841693508086168417925050509392505050565b61258f82611d0b565b6125a261259b82612185565b83546124bc565b8255505050565b6125b4838383611d65565b505050565b6125c4838383611dce565b505050565b6125d38282611f1c565b5050565b6125e082611d53565b6125f36125ec8261218f565b83546124f2565b8255505050565b81156126095761260861208e565b5b6126138382611f62565b505050565b61262183611d53565b61263561262d8261218f565b848454612534565b825550505050565b61264681611c2e565b811461265157600080fd5b50565b61265d81611c60565b811461266857600080fd5b50565b60009056fea2646970667358221220cb403f7adc2fb139c3c9359219d93f9c0d9a168b2bc26c7936cfd7429f94f50064736f6c63430008040033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100f55760003560e01c8063810a9afa11610097578063b724de3a11610066578063b724de3a14610298578063cfb452b5146102c8578063ded8896b146102e6578063f2fde38b14610302576100f5565b8063810a9afa146101fc57806382b7b5001461022c5780638da5cb5b1461025c578063afc269111461027a576100f5565b8063587a8cbf116100d3578063587a8cbf146101625780635893253c14610192578063715018a6146101c2578063788243d5146101cc576100f5565b8063144ae855146100fa578063362b3e63146101165780634f896d4f14610132575b600080fd5b610114600480360381019061010f919061111f565b61031e565b005b610130600480360381019061012b919061109e565b610386565b005b61014c6004803603810190610147919061109e565b6104d3565b604051610159919061161c565b60405180910390f35b61017c6004803603810190610177919061105d565b610578565b6040516101899190611740565b60405180910390f35b6101ac60048036038101906101a7919061109e565b6105a6565b6040516101b9919061161c565b60405180910390f35b6101ca610646565b005b6101e660048036038101906101e1919061109e565b61065a565b6040516101f391906115e6565b60405180910390f35b6102166004803603810190610211919061109e565b610698565b604051610223919061171e565b60405180910390f35b61024660048036038101906102419190611018565b610816565b6040516102539190611740565b60405180910390f35b610264610841565b60405161027191906115e6565b60405180910390f35b61028261086b565b60405161028f9190611740565b60405180910390f35b6102b260048036038101906102ad9190611018565b610871565b6040516102bf9190611740565b60405180910390f35b6102d0610981565b6040516102dd9190611740565b60405180910390f35b61030060048036038101906102fb91906110c7565b610987565b005b61031c60048036038101906103179190610fef565b610b78565b005b610326610bfc565b8060696000848152602001908152602001600020818161034691906125c9565b9050507fa9c55ebaa1fada408bd72c2f0ea7c27f5444b105bcff12c5381baac912156ada828260405161037a92919061178d565b60405180910390a15050565b60008060019054906101000a900460ff161590508080156103b75750600160008054906101000a900460ff1660ff16105b806103e457506103c630610c7a565b1580156103e35750600160008054906101000a900460ff1660ff16145b5b610423576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161041a9061169e565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610460576001600060016101000a81548160ff0219169083151502179055505b610468610c9d565b816065819055508160668190555080156104cf5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516104c69190611601565b60405180910390a15b5050565b60606067600083815260200190815260200160002080546104f390611fa8565b80601f016020809104026020016040519081016040528092919081815260200182805461051f90611fa8565b801561056c5780601f106105415761010080835404028352916020019161056c565b820191906000526020600020905b81548152906001019060200180831161054f57829003601f168201915b50505050509050919050565b6068818051602081018201805184825260208301602085012081835280955050505050506000915090505481565b606760205280600052604060002060009150905080546105c590611fa8565b80601f01602080910402602001604051908101604052809291908181526020018280546105f190611fa8565b801561063e5780601f106106135761010080835404028352916020019161063e565b820191906000526020600020905b81548152906001019060200180831161062157829003601f168201915b505050505081565b61064e610bfc565b6106586000610cf6565b565b60696020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081565b6106a0610e25565b606960008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805480602002602001604051908101604052809291908181526020016000905b82821015610807578382906000526020600020906002020160405180604001604052908160008201805461076c90611fa8565b80601f016020809104026020016040519081016040528092919081815260200182805461079890611fa8565b80156107e55780601f106107ba576101008083540402835291602001916107e5565b820191906000526020600020905b8154815290600101906020018083116107c857829003601f168201915b5050505050815260200160018201548152505081526020019060010190610739565b50505050815250509050919050565b60006068838360405161082a9291906115cd565b908152602001604051809103902054905092915050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60665481565b600080606884846040516108869291906115cd565b908152602001604051809103902054146108d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108cc9061167e565b60405180910390fd5b6000606654905083836067600084815260200190815260200160002091906108fe929190610e55565b5080606885856040516109129291906115cd565b9081526020016040518091039020819055507f96a65efbb6991f67fc8a4c7550fcfd08f1968737d2f5adcded5cd937b3cc0f3d8185856040516109579392919061175b565b60405180910390a16066600081548092919061097290612027565b91905055508091505092915050565b60655481565b60006067600085815260200190815260200160002080546109a790611fa8565b9050146109e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e09061163e565b60405180910390fd5b6000606883836040516109fd9291906115cd565b90815260200160405180910390205414610a4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a439061167e565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166069600085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610af0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae7906116fe565b60405180910390fd5b8181606760008681526020019081526020016000209190610b12929190610e55565b508260688383604051610b269291906115cd565b9081526020016040518091039020819055507f442b41840a10393534508176faee6f70b1870707dc24573b67d49f28cbac7f1c838383604051610b6b9392919061175b565b60405180910390a1505050565b610b80610bfc565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610bf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be79061165e565b60405180910390fd5b610bf981610cf6565b50565b610c04610dbc565b73ffffffffffffffffffffffffffffffffffffffff16610c22610841565b73ffffffffffffffffffffffffffffffffffffffff1614610c78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6f906116be565b60405180910390fd5b565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16610cec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce3906116de565b60405180910390fd5b610cf4610dc4565b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b600060019054906101000a900460ff16610e13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0a906116de565b60405180910390fd5b610e23610e1e610dbc565b610cf6565b565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b828054610e6190611fa8565b90600052602060002090601f016020900481019282610e835760008555610eca565b82601f10610e9c57803560ff1916838001178555610eca565b82800160010185558215610eca579182015b82811115610ec9578235825591602001919060010190610eae565b5b509050610ed79190610edb565b5090565b5b80821115610ef4576000816000905550600101610edc565b5090565b6000610f0b610f06846118b4565b61188f565b905082815260208101848484011115610f2357600080fd5b610f2e848285611eda565b509392505050565b600081359050610f458161263d565b92915050565b60008083601f840112610f5d57600080fd5b8235905067ffffffffffffffff811115610f7657600080fd5b602083019150836001820283011115610f8e57600080fd5b9250929050565b600082601f830112610fa657600080fd5b8135610fb6848260208601610ef8565b91505092915050565b600060408284031215610fd157600080fd5b81905092915050565b600081359050610fe981612654565b92915050565b60006020828403121561100157600080fd5b600061100f84828501610f36565b91505092915050565b6000806020838503121561102b57600080fd5b600083013567ffffffffffffffff81111561104557600080fd5b61105185828601610f4b565b92509250509250929050565b60006020828403121561106f57600080fd5b600082013567ffffffffffffffff81111561108957600080fd5b61109584828501610f95565b91505092915050565b6000602082840312156110b057600080fd5b60006110be84828501610fda565b91505092915050565b6000806000604084860312156110dc57600080fd5b60006110ea86828701610fda565b935050602084013567ffffffffffffffff81111561110757600080fd5b61111386828701610f4b565b92509250509250925092565b6000806040838503121561113257600080fd5b600061114085828601610fda565b925050602083013567ffffffffffffffff81111561115d57600080fd5b61116985828601610fbf565b9150509250929050565b600061117f8383611523565b905092915050565b60006111938383611572565b905092915050565b6111a481611c2e565b82525050565b6111b381611c2e565b82525050565b60006111c58385611991565b9350836020840285016111d7846118fc565b8060005b8781101561121b5784840389526111f28284611b99565b6111fc8582611173565b945061120783611977565b925060208a019950506001810190506111db565b50829750879450505050509392505050565b60006112388261194b565b6112428185611991565b93508360208202850161125485611906565b8060005b8581101561129057848403895281516112718582611187565b945061127c83611984565b925060208a01995050600181019050611258565b50829750879550505050505092915050565b6112ab81611d1d565b82525050565b60006112bd83856119a2565b93506112ca838584611eda565b6112d38361227e565b840190509392505050565b60006112ea83856119b3565b93506112f7838584611eda565b6113008361227e565b840190509392505050565b600061131783856119c4565b9350611324838584611eda565b82840190509392505050565b600061133b8261196c565b61134581856119a2565b9350611355818560208601611ee9565b61135e8161227e565b840191505092915050565b60006113748261196c565b61137e81856119b3565b935061138e818560208601611ee9565b6113978161227e565b840191505092915050565b60006113af6015836119b3565b91506113ba8261230a565b602082019050919050565b60006113d26026836119b3565b91506113dd82612333565b604082019050919050565b60006113f56019836119b3565b915061140082612382565b602082019050919050565b6000611418602e836119b3565b9150611423826123ab565b604082019050919050565b600061143b6020836119b3565b9150611446826123fa565b602082019050919050565b600061145e602b836119b3565b915061146982612423565b604082019050919050565b60006114816019836119b3565b915061148c82612472565b602082019050919050565b6000604083016114aa6000840184611ad4565b6114b7600086018261119b565b506114c56020840184611aeb565b85830360208701526114d88382846111b9565b925050508091505092915050565b60006040830160008301516114fe600086018261119b565b5060208301518482036020860152611516828261122d565b9150508091505092915050565b6000604083016115366000840184611b42565b85830360008701526115498382846112b1565b9250505061155a6020840184611bbd565b61156760208601826115af565b508091505092915050565b6000604083016000830151848203600086015261158f8282611330565b91505060208301516115a460208601826115af565b508091505092915050565b6115b881611c60565b82525050565b6115c781611c60565b82525050565b60006115da82848661130b565b91508190509392505050565b60006020820190506115fb60008301846111aa565b92915050565b600060208201905061161660008301846112a2565b92915050565b600060208201905081810360008301526116368184611369565b905092915050565b60006020820190508181036000830152611657816113a2565b9050919050565b60006020820190508181036000830152611677816113c5565b9050919050565b60006020820190508181036000830152611697816113e8565b9050919050565b600060208201905081810360008301526116b78161140b565b9050919050565b600060208201905081810360008301526116d78161142e565b9050919050565b600060208201905081810360008301526116f781611451565b9050919050565b6000602082019050818103600083015261171781611474565b9050919050565b6000602082019050818103600083015261173881846114e6565b905092915050565b600060208201905061175560008301846115be565b92915050565b600060408201905061177060008301866115be565b81810360208301526117838184866112de565b9050949350505050565b60006040820190506117a260008301856115be565b81810360208301526117b48184611497565b90509392505050565b600080833560016020038436030381126117d657600080fd5b80840192508235915067ffffffffffffffff8211156117f457600080fd5b60208301925060208202360383131561180c57600080fd5b509250929050565b6000808335600160200384360303811261182d57600080fd5b80840192508235915067ffffffffffffffff82111561184b57600080fd5b60208301925060018202360383131561186357600080fd5b509250929050565b60008235600160400383360303811261188357600080fd5b80830191505092915050565b60006118996118aa565b90506118a58282611ff6565b919050565b6000604051905090565b600067ffffffffffffffff8211156118cf576118ce61211b565b5b6118d88261227e565b9050602081019050919050565b60008190506118f5826002611bd4565b9050919050565b6000819050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b600082905092915050565b600081519050919050565b600081549050919050565b600082905092915050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6020841060008114611a2857601f8411600181146119f8576119f18685611fda565b8355611a22565b611a018361192b565b611a166020601f880104820160018301611c85565b611a20878561249b565b505b50611a71565b611a318261192b565b6020601f8701048101601f87168015611a5257611a51816001840361214a565b5b611a646020601f890104840183611c85565b6001886002021785555050505b5050505050565b6020831060008114611ac3576020851060008114611aa157611a9a8685611fda565b8355611abd565b8360ff1916935083611ab28461192b565b556001866002020183555b50611acd565b6001856002020182555b5050505050565b6000611ae36020840184610f36565b905092915050565b60008083356001602003843603038112611b0457600080fd5b83810192508235915060208301925067ffffffffffffffff821115611b2857600080fd5b602082023603841315611b3a57600080fd5b509250929050565b60008083356001602003843603038112611b5b57600080fd5b83810192508235915060208301925067ffffffffffffffff821115611b7f57600080fd5b600182023603841315611b9157600080fd5b509250929050565b600082356001604003833603038112611bb157600080fd5b82810191505092915050565b6000611bcc6020840184610fda565b905092915050565b6000611bdf82611c60565b9150611bea83611c60565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611c2357611c226120bd565b5b828202905092915050565b6000611c3982611c40565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b611c82600082612229565b50565b5b81811015611ca457611c996000826122f2565b600181019050611c86565b5050565b5b81811015611cc757611cbc6000826122d4565b600281019050611ca9565b5050565b81811015611ce957611cde6000826122f2565b600181019050611ccb565b5050565b611cfa60008083016122b6565b611d086000600183016122f2565b50565b6000611d1682611d2f565b9050919050565b6000611d2882611c6a565b9050919050565b6000611d3a82611d41565b9050919050565b6000611d4c82611c40565b9050919050565b6000611d5e82611c60565b9050919050565b611d6f8383611940565b611d7981836121c5565b611d82836118fc565b611d8b83611916565b6000805b84811015611dc457611da1848861186b565b611dac8184866125fa565b60208501945060028401935050600181019050611d8f565b5050505050505050565b611dd88383611961565b67ffffffffffffffff811115611df157611df061211b565b5b611dfb8254611fa8565b600080601f8411601f84111715611e1857611e158561192b565b90505b601f831115611e4b576020601f85010481016020851015611e37578190505b611e496020601f860104830182611c85565b505b601f841160018114611e785760008515611e66578388013590505b611e708682611fda565b875550611ed0565b601f1985168260005b82811015611ea657858a01358255600182019150602086019550602081019050611e81565b87831015611ec357858a0135611ebf601f8a1682612070565b8355505b6001600289020189555050505b5050505050505050565b82818337600083830152505050565b60005b83811015611f07578082015181840152602081019050611eec565b83811115611f16576000848401525b50505050565b600081016000830180611f2e81612199565b9050611f3a8184612586565b5050506001810160208301611f4f81856117bd565b611f5a8183866125a9565b505050505050565b6000810160008301611f748185611814565b611f7f8183866125b9565b50505050600181016020830180611f95816121af565b9050611fa181846125d7565b5050505050565b60006002820490506001821680611fc057607f821691505b60208210811415611fd457611fd36120ec565b5b50919050565b6000611fe68383612070565b9150826002028217905092915050565b611fff8261227e565b810181811067ffffffffffffffff8211171561201e5761201d61211b565b5b80604052505050565b600061203282611c60565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612065576120646120bd565b5b600182019050919050565b6000612081600019846008026122a9565b1980831691505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61217a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff836020036008026122a9565b815481168255505050565b6000819050919050565b6000819050919050565b600081356121a68161263d565b80915050919050565b600081356121bc81612654565b80915050919050565b680100000000000000008211156121df576121de61211b565b5b6121e881611956565b82825580831015612224576121fc816118e5565b612205846118e5565b61220e84611916565b81810183820161221e8183611ca8565b50505050505b505050565b680100000000000000008211156122435761224261211b565b5b805461224e81611fa8565b808411156122635761226284828486611a78565b5b8084101561227857612277848284866119cf565b5b50505050565b6000601f19601f8301169050919050565b60008160001b9050919050565b600082821b905092915050565b600082821c905092915050565b600082146122c7576122c661208e565b5b6122d081611c77565b5050565b600082146122e5576122e461208e565b5b6122ee81611ced565b5050565b6122fa61266b565b612305818484612618565b505050565b7f6470696420616c72656164792075706772616465640000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f73747265616d20616c7265616479206861732061206450494400000000000000600082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f756e617574686f72697a65642064706964207570677261646500000000000000600082015250565b6124a48161192b565b6124af838254611fda565b8083556000825550505050565b600073ffffffffffffffffffffffffffffffffffffffff6124dc8461228f565b9350801983169250808416831791505092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61251e8461228f565b9350801983169250808416831791505092915050565b6000600883026125647fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261229c565b61256e868361229c565b95508019841693508086168417925050509392505050565b61258f82611d0b565b6125a261259b82612185565b83546124bc565b8255505050565b6125b4838383611d65565b505050565b6125c4838383611dce565b505050565b6125d38282611f1c565b5050565b6125e082611d53565b6125f36125ec8261218f565b83546124f2565b8255505050565b81156126095761260861208e565b5b6126138382611f62565b505050565b61262183611d53565b61263561262d8261218f565b848454612534565b825550505050565b61264681611c2e565b811461265157600080fd5b50565b61265d81611c60565b811461266857600080fd5b50565b60009056fea2646970667358221220cb403f7adc2fb139c3c9359219d93f9c0d9a168b2bc26c7936cfd7429f94f50064736f6c63430008040033", + "bytecode": "0x60806040523480156200001157600080fd5b50620000226200002860201b60201c565b620001d3565b600060019054906101000a900460ff16156200007b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000729062000127565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff161015620000ed5760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff604051620000e4919062000149565b60405180910390a15b565b6000620000fe60278362000166565b91506200010b8262000184565b604082019050919050565b620001218162000177565b82525050565b600060208201905081810360008301526200014281620000ef565b9050919050565b600060208201905062000160600083018462000116565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b61281d80620001e36000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806382b7b500116100a2578063b9e2924111610071578063b9e29241146102cc578063cfb452b5146102ea578063ded8896b14610308578063f2fde38b14610324578063fe4b84df146103405761010b565b806382b7b500146102305780638da5cb5b14610260578063afc269111461027e578063b724de3a1461029c5761010b565b80635893253c116100de5780635893253c14610196578063715018a6146101c6578063788243d5146101d0578063810a9afa146102005761010b565b80630d70b3aa14610110578063144ae8551461011a5780634f896d4f14610136578063587a8cbf14610166575b600080fd5b61011861035c565b005b610134600480360381019061012f91906111f4565b610381565b005b610150600480360381019061014b9190611173565b61043f565b60405161015d919061173e565b60405180910390f35b610180600480360381019061017b9190611132565b6104e4565b60405161018d9190611882565b60405180910390f35b6101b060048036038101906101ab9190611173565b610512565b6040516101bd919061173e565b60405180910390f35b6101ce6105b2565b005b6101ea60048036038101906101e59190611173565b6105c6565b6040516101f791906116ed565b60405180910390f35b61021a60048036038101906102159190611173565b610604565b6040516102279190611860565b60405180910390f35b61024a600480360381019061024591906110ed565b610782565b6040516102579190611882565b60405180910390f35b6102686107ad565b60405161027591906116ed565b60405180910390f35b6102866107d7565b6040516102939190611882565b60405180910390f35b6102b660048036038101906102b191906110ed565b6107dd565b6040516102c39190611882565b60405180910390f35b6102d46108f2565b6040516102e19190611708565b60405180910390f35b6102f2610905565b6040516102ff9190611882565b60405180910390f35b610322600480360381019061031d919061119c565b61090b565b005b61033e600480360381019061033991906110c4565b610b00565b005b61035a60048036038101906103559190611173565b610b84565b005b610364610cd1565b6001606760006101000a81548160ff021916908315150217905550565b610389610cd1565b60001515606760009054906101000a900460ff161515146103df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d6906117a0565b60405180910390fd5b80606a600084815260200190815260200160002081816103ff9190612740565b9050507fa9c55ebaa1fada408bd72c2f0ea7c27f5444b105bcff12c5381baac912156ada82826040516104339291906118cf565b60405180910390a15050565b606060686000838152602001908152602001600020805461045f906120f6565b80601f016020809104026020016040519081016040528092919081815260200182805461048b906120f6565b80156104d85780601f106104ad576101008083540402835291602001916104d8565b820191906000526020600020905b8154815290600101906020018083116104bb57829003601f168201915b50505050509050919050565b6069818051602081018201805184825260208301602085012081835280955050505050506000915090505481565b60686020528060005260406000206000915090508054610531906120f6565b80601f016020809104026020016040519081016040528092919081815260200182805461055d906120f6565b80156105aa5780601f1061057f576101008083540402835291602001916105aa565b820191906000526020600020905b81548152906001019060200180831161058d57829003601f168201915b505050505081565b6105ba610cd1565b6105c46000610d4f565b565b606a6020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081565b61060c610efa565b606a60008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805480602002602001604051908101604052809291908181526020016000905b8282101561077357838290600052602060002090600202016040518060400160405290816000820180546106d8906120f6565b80601f0160208091040260200160405190810160405280929190818152602001828054610704906120f6565b80156107515780601f1061072657610100808354040283529160200191610751565b820191906000526020600020905b81548152906001019060200180831161073457829003601f168201915b50505050508152602001600182015481525050815260200190600101906106a5565b50505050815250509050919050565b6000606983836040516107969291906116d4565b908152602001604051809103902054905092915050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60665481565b600082826000606983836040516107f59291906116d4565b90815260200160405180910390205414610844576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083b906117c0565b60405180910390fd5b60006066549050858560686000848152602001908152602001600020919061086d929190610f2a565b5080606987876040516108819291906116d4565b9081526020016040518091039020819055507f96a65efbb6991f67fc8a4c7550fcfd08f1968737d2f5adcded5cd937b3cc0f3d8187876040516108c69392919061189d565b60405180910390a1606660008154809291906108e190612175565b919050555080935050505092915050565b606760009054906101000a900460ff1681565b60655481565b81816000606983836040516109219291906116d4565b90815260200160405180910390205414610970576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610967906117c0565b60405180910390fd5b6000606860008781526020019081526020016000208054610990906120f6565b9050146109d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c990611760565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16606a600087815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6d90611840565b60405180910390fd5b8383606860008881526020019081526020016000209190610a98929190610f2a565b508460698585604051610aac9291906116d4565b9081526020016040518091039020819055507f442b41840a10393534508176faee6f70b1870707dc24573b67d49f28cbac7f1c858585604051610af19392919061189d565b60405180910390a15050505050565b610b08610cd1565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6f90611780565b60405180910390fd5b610b8181610d4f565b50565b60008060019054906101000a900460ff16159050808015610bb55750600160008054906101000a900460ff1660ff16105b80610be25750610bc430610e15565b158015610be15750600160008054906101000a900460ff1660ff16145b5b610c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c18906117e0565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610c5e576001600060016101000a81548160ff0219169083151502179055505b610c66610e38565b81606581905550816066819055508015610ccd5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610cc49190611723565b60405180910390a15b5050565b610cd9610e91565b73ffffffffffffffffffffffffffffffffffffffff16610cf76107ad565b73ffffffffffffffffffffffffffffffffffffffff1614610d4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4490611800565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16610e87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7e90611820565b60405180910390fd5b610e8f610e99565b565b600033905090565b600060019054906101000a900460ff16610ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edf90611820565b60405180910390fd5b610ef8610ef3610e91565b610d4f565b565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b828054610f36906120f6565b90600052602060002090601f016020900481019282610f585760008555610f9f565b82601f10610f7157803560ff1916838001178555610f9f565b82800160010185558215610f9f579182015b82811115610f9e578235825591602001919060010190610f83565b5b509050610fac9190610fb0565b5090565b5b80821115610fc9576000816000905550600101610fb1565b5090565b6000610fe0610fdb846119f6565b6119d1565b905082815260208101848484011115610ff857600080fd5b611003848285612028565b509392505050565b60008135905061101a816127b4565b92915050565b60008083601f84011261103257600080fd5b8235905067ffffffffffffffff81111561104b57600080fd5b60208301915083600182028301111561106357600080fd5b9250929050565b600082601f83011261107b57600080fd5b813561108b848260208601610fcd565b91505092915050565b6000604082840312156110a657600080fd5b81905092915050565b6000813590506110be816127cb565b92915050565b6000602082840312156110d657600080fd5b60006110e48482850161100b565b91505092915050565b6000806020838503121561110057600080fd5b600083013567ffffffffffffffff81111561111a57600080fd5b61112685828601611020565b92509250509250929050565b60006020828403121561114457600080fd5b600082013567ffffffffffffffff81111561115e57600080fd5b61116a8482850161106a565b91505092915050565b60006020828403121561118557600080fd5b6000611193848285016110af565b91505092915050565b6000806000604084860312156111b157600080fd5b60006111bf868287016110af565b935050602084013567ffffffffffffffff8111156111dc57600080fd5b6111e886828701611020565b92509250509250925092565b6000806040838503121561120757600080fd5b6000611215858286016110af565b925050602083013567ffffffffffffffff81111561123257600080fd5b61123e85828601611094565b9150509250929050565b6000611254838361162a565b905092915050565b60006112688383611679565b905092915050565b61127981611d70565b82525050565b61128881611d70565b82525050565b600061129a8385611ad3565b9350836020840285016112ac84611a3e565b8060005b878110156112f05784840389526112c78284611cdb565b6112d18582611248565b94506112dc83611ab9565b925060208a019950506001810190506112b0565b50829750879450505050509392505050565b600061130d82611a8d565b6113178185611ad3565b93508360208202850161132985611a48565b8060005b858110156113655784840389528151611346858261125c565b945061135183611ac6565b925060208a0199505060018101905061132d565b50829750879550505050505092915050565b61138081611d82565b82525050565b61138f81611e6b565b82525050565b60006113a18385611ae4565b93506113ae838584612028565b6113b7836123cc565b840190509392505050565b60006113ce8385611af5565b93506113db838584612028565b6113e4836123cc565b840190509392505050565b60006113fb8385611b06565b9350611408838584612028565b82840190509392505050565b600061141f82611aae565b6114298185611ae4565b9350611439818560208601612037565b611442816123cc565b840191505092915050565b600061145882611aae565b6114628185611af5565b9350611472818560208601612037565b61147b816123cc565b840191505092915050565b6000611493601583611af5565b915061149e82612458565b602082019050919050565b60006114b6602683611af5565b91506114c182612481565b604082019050919050565b60006114d9601383611af5565b91506114e4826124d0565b602082019050919050565b60006114fc601983611af5565b9150611507826124f9565b602082019050919050565b600061151f602e83611af5565b915061152a82612522565b604082019050919050565b6000611542602083611af5565b915061154d82612571565b602082019050919050565b6000611565602b83611af5565b91506115708261259a565b604082019050919050565b6000611588601983611af5565b9150611593826125e9565b602082019050919050565b6000604083016115b16000840184611c16565b6115be6000860182611270565b506115cc6020840184611c2d565b85830360208701526115df83828461128e565b925050508091505092915050565b60006040830160008301516116056000860182611270565b506020830151848203602086015261161d8282611302565b9150508091505092915050565b60006040830161163d6000840184611c84565b8583036000870152611650838284611395565b925050506116616020840184611cff565b61166e60208601826116b6565b508091505092915050565b600060408301600083015184820360008601526116968282611414565b91505060208301516116ab60208601826116b6565b508091505092915050565b6116bf81611dae565b82525050565b6116ce81611dae565b82525050565b60006116e18284866113ef565b91508190509392505050565b6000602082019050611702600083018461127f565b92915050565b600060208201905061171d6000830184611377565b92915050565b60006020820190506117386000830184611386565b92915050565b60006020820190508181036000830152611758818461144d565b905092915050565b6000602082019050818103600083015261177981611486565b9050919050565b60006020820190508181036000830152611799816114a9565b9050919050565b600060208201905081810360008301526117b9816114cc565b9050919050565b600060208201905081810360008301526117d9816114ef565b9050919050565b600060208201905081810360008301526117f981611512565b9050919050565b6000602082019050818103600083015261181981611535565b9050919050565b6000602082019050818103600083015261183981611558565b9050919050565b600060208201905081810360008301526118598161157b565b9050919050565b6000602082019050818103600083015261187a81846115ed565b905092915050565b600060208201905061189760008301846116c5565b92915050565b60006040820190506118b260008301866116c5565b81810360208301526118c58184866113c2565b9050949350505050565b60006040820190506118e460008301856116c5565b81810360208301526118f6818461159e565b90509392505050565b6000808335600160200384360303811261191857600080fd5b80840192508235915067ffffffffffffffff82111561193657600080fd5b60208301925060208202360383131561194e57600080fd5b509250929050565b6000808335600160200384360303811261196f57600080fd5b80840192508235915067ffffffffffffffff82111561198d57600080fd5b6020830192506001820236038313156119a557600080fd5b509250929050565b6000823560016040038336030381126119c557600080fd5b80830191505092915050565b60006119db6119ec565b90506119e78282612144565b919050565b6000604051905090565b600067ffffffffffffffff821115611a1157611a10612269565b5b611a1a826123cc565b9050602081019050919050565b6000819050611a37826002611d16565b9050919050565b6000819050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b600082905092915050565b600081519050919050565b600081549050919050565b600082905092915050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6020841060008114611b6a57601f841160018114611b3a57611b338685612128565b8355611b64565b611b4383611a6d565b611b586020601f880104820160018301611dd3565b611b628785612612565b505b50611bb3565b611b7382611a6d565b6020601f8701048101601f87168015611b9457611b938160018403612298565b5b611ba66020601f890104840183611dd3565b6001886002021785555050505b5050505050565b6020831060008114611c05576020851060008114611be357611bdc8685612128565b8355611bff565b8360ff1916935083611bf484611a6d565b556001866002020183555b50611c0f565b6001856002020182555b5050505050565b6000611c25602084018461100b565b905092915050565b60008083356001602003843603038112611c4657600080fd5b83810192508235915060208301925067ffffffffffffffff821115611c6a57600080fd5b602082023603841315611c7c57600080fd5b509250929050565b60008083356001602003843603038112611c9d57600080fd5b83810192508235915060208301925067ffffffffffffffff821115611cc157600080fd5b600182023603841315611cd357600080fd5b509250929050565b600082356001604003833603038112611cf357600080fd5b82810191505092915050565b6000611d0e60208401846110af565b905092915050565b6000611d2182611dae565b9150611d2c83611dae565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611d6557611d6461220b565b5b828202905092915050565b6000611d7b82611d8e565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b611dd0600082612377565b50565b5b81811015611df257611de7600082612440565b600181019050611dd4565b5050565b5b81811015611e1557611e0a600082612422565b600281019050611df7565b5050565b81811015611e3757611e2c600082612440565b600181019050611e19565b5050565b611e486000808301612404565b611e56600060018301612440565b50565b6000611e6482611e7d565b9050919050565b6000611e7682611db8565b9050919050565b6000611e8882611e8f565b9050919050565b6000611e9a82611d8e565b9050919050565b6000611eac82611dae565b9050919050565b611ebd8383611a82565b611ec78183612313565b611ed083611a3e565b611ed983611a58565b6000805b84811015611f1257611eef84886119ad565b611efa818486612771565b60208501945060028401935050600181019050611edd565b5050505050505050565b611f268383611aa3565b67ffffffffffffffff811115611f3f57611f3e612269565b5b611f4982546120f6565b600080601f8411601f84111715611f6657611f6385611a6d565b90505b601f831115611f99576020601f85010481016020851015611f85578190505b611f976020601f860104830182611dd3565b505b601f841160018114611fc65760008515611fb4578388013590505b611fbe8682612128565b87555061201e565b601f1985168260005b82811015611ff457858a01358255600182019150602086019550602081019050611fcf565b8783101561201157858a013561200d601f8a16826121be565b8355505b6001600289020189555050505b5050505050505050565b82818337600083830152505050565b60005b8381101561205557808201518184015260208101905061203a565b83811115612064576000848401525b50505050565b60008101600083018061207c816122e7565b905061208881846126fd565b505050600181016020830161209d81856118ff565b6120a8818386612720565b505050505050565b60008101600083016120c28185611956565b6120cd818386612730565b505050506001810160208301806120e3816122fd565b90506120ef818461274e565b5050505050565b6000600282049050600182168061210e57607f821691505b602082108114156121225761212161223a565b5b50919050565b600061213483836121be565b9150826002028217905092915050565b61214d826123cc565b810181811067ffffffffffffffff8211171561216c5761216b612269565b5b80604052505050565b600061218082611dae565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156121b3576121b261220b565b5b600182019050919050565b60006121cf600019846008026123f7565b1980831691505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6122c87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff836020036008026123f7565b815481168255505050565b6000819050919050565b6000819050919050565b600081356122f4816127b4565b80915050919050565b6000813561230a816127cb565b80915050919050565b6801000000000000000082111561232d5761232c612269565b5b61233681611a98565b828255808310156123725761234a81611a27565b61235384611a27565b61235c84611a58565b81810183820161236c8183611df6565b50505050505b505050565b6801000000000000000082111561239157612390612269565b5b805461239c816120f6565b808411156123b1576123b084828486611bba565b5b808410156123c6576123c584828486611b11565b5b50505050565b6000601f19601f8301169050919050565b60008160001b9050919050565b600082821b905092915050565b600082821c905092915050565b60008214612415576124146121dc565b5b61241e81611dc5565b5050565b60008214612433576124326121dc565b5b61243c81611e3b565b5050565b6124486127e2565b61245381848461278f565b505050565b7f6470696420616c72656164792075706772616465640000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f6d6967726174696f6e2069732066726f7a656e00000000000000000000000000600082015250565b7f73747265616d20616c7265616479206861732061206450494400000000000000600082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f756e617574686f72697a65642064706964207570677261646500000000000000600082015250565b61261b81611a6d565b612626838254612128565b8083556000825550505050565b600073ffffffffffffffffffffffffffffffffffffffff612653846123dd565b9350801983169250808416831791505092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612695846123dd565b9350801983169250808416831791505092915050565b6000600883026126db7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826123ea565b6126e586836123ea565b95508019841693508086168417925050509392505050565b61270682611e59565b612719612712826122d3565b8354612633565b8255505050565b61272b838383611eb3565b505050565b61273b838383611f1c565b505050565b61274a828261206a565b5050565b61275782611ea1565b61276a612763826122dd565b8354612669565b8255505050565b81156127805761277f6121dc565b5b61278a83826120b0565b505050565b61279883611ea1565b6127ac6127a4826122dd565b8484546126ab565b825550505050565b6127bd81611d70565b81146127c857600080fd5b50565b6127d481611dae565b81146127df57600080fd5b50565b60009056fea26469706673582212203cd9493558aa831bec9e62a003cae25d442665c9c02edcb7c1725ad3e5bb65db64736f6c63430008040033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061010b5760003560e01c806382b7b500116100a2578063b9e2924111610071578063b9e29241146102cc578063cfb452b5146102ea578063ded8896b14610308578063f2fde38b14610324578063fe4b84df146103405761010b565b806382b7b500146102305780638da5cb5b14610260578063afc269111461027e578063b724de3a1461029c5761010b565b80635893253c116100de5780635893253c14610196578063715018a6146101c6578063788243d5146101d0578063810a9afa146102005761010b565b80630d70b3aa14610110578063144ae8551461011a5780634f896d4f14610136578063587a8cbf14610166575b600080fd5b61011861035c565b005b610134600480360381019061012f91906111f4565b610381565b005b610150600480360381019061014b9190611173565b61043f565b60405161015d919061173e565b60405180910390f35b610180600480360381019061017b9190611132565b6104e4565b60405161018d9190611882565b60405180910390f35b6101b060048036038101906101ab9190611173565b610512565b6040516101bd919061173e565b60405180910390f35b6101ce6105b2565b005b6101ea60048036038101906101e59190611173565b6105c6565b6040516101f791906116ed565b60405180910390f35b61021a60048036038101906102159190611173565b610604565b6040516102279190611860565b60405180910390f35b61024a600480360381019061024591906110ed565b610782565b6040516102579190611882565b60405180910390f35b6102686107ad565b60405161027591906116ed565b60405180910390f35b6102866107d7565b6040516102939190611882565b60405180910390f35b6102b660048036038101906102b191906110ed565b6107dd565b6040516102c39190611882565b60405180910390f35b6102d46108f2565b6040516102e19190611708565b60405180910390f35b6102f2610905565b6040516102ff9190611882565b60405180910390f35b610322600480360381019061031d919061119c565b61090b565b005b61033e600480360381019061033991906110c4565b610b00565b005b61035a60048036038101906103559190611173565b610b84565b005b610364610cd1565b6001606760006101000a81548160ff021916908315150217905550565b610389610cd1565b60001515606760009054906101000a900460ff161515146103df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d6906117a0565b60405180910390fd5b80606a600084815260200190815260200160002081816103ff9190612740565b9050507fa9c55ebaa1fada408bd72c2f0ea7c27f5444b105bcff12c5381baac912156ada82826040516104339291906118cf565b60405180910390a15050565b606060686000838152602001908152602001600020805461045f906120f6565b80601f016020809104026020016040519081016040528092919081815260200182805461048b906120f6565b80156104d85780601f106104ad576101008083540402835291602001916104d8565b820191906000526020600020905b8154815290600101906020018083116104bb57829003601f168201915b50505050509050919050565b6069818051602081018201805184825260208301602085012081835280955050505050506000915090505481565b60686020528060005260406000206000915090508054610531906120f6565b80601f016020809104026020016040519081016040528092919081815260200182805461055d906120f6565b80156105aa5780601f1061057f576101008083540402835291602001916105aa565b820191906000526020600020905b81548152906001019060200180831161058d57829003601f168201915b505050505081565b6105ba610cd1565b6105c46000610d4f565b565b606a6020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081565b61060c610efa565b606a60008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805480602002602001604051908101604052809291908181526020016000905b8282101561077357838290600052602060002090600202016040518060400160405290816000820180546106d8906120f6565b80601f0160208091040260200160405190810160405280929190818152602001828054610704906120f6565b80156107515780601f1061072657610100808354040283529160200191610751565b820191906000526020600020905b81548152906001019060200180831161073457829003601f168201915b50505050508152602001600182015481525050815260200190600101906106a5565b50505050815250509050919050565b6000606983836040516107969291906116d4565b908152602001604051809103902054905092915050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60665481565b600082826000606983836040516107f59291906116d4565b90815260200160405180910390205414610844576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083b906117c0565b60405180910390fd5b60006066549050858560686000848152602001908152602001600020919061086d929190610f2a565b5080606987876040516108819291906116d4565b9081526020016040518091039020819055507f96a65efbb6991f67fc8a4c7550fcfd08f1968737d2f5adcded5cd937b3cc0f3d8187876040516108c69392919061189d565b60405180910390a1606660008154809291906108e190612175565b919050555080935050505092915050565b606760009054906101000a900460ff1681565b60655481565b81816000606983836040516109219291906116d4565b90815260200160405180910390205414610970576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610967906117c0565b60405180910390fd5b6000606860008781526020019081526020016000208054610990906120f6565b9050146109d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c990611760565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16606a600087815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6d90611840565b60405180910390fd5b8383606860008881526020019081526020016000209190610a98929190610f2a565b508460698585604051610aac9291906116d4565b9081526020016040518091039020819055507f442b41840a10393534508176faee6f70b1870707dc24573b67d49f28cbac7f1c858585604051610af19392919061189d565b60405180910390a15050505050565b610b08610cd1565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6f90611780565b60405180910390fd5b610b8181610d4f565b50565b60008060019054906101000a900460ff16159050808015610bb55750600160008054906101000a900460ff1660ff16105b80610be25750610bc430610e15565b158015610be15750600160008054906101000a900460ff1660ff16145b5b610c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c18906117e0565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610c5e576001600060016101000a81548160ff0219169083151502179055505b610c66610e38565b81606581905550816066819055508015610ccd5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610cc49190611723565b60405180910390a15b5050565b610cd9610e91565b73ffffffffffffffffffffffffffffffffffffffff16610cf76107ad565b73ffffffffffffffffffffffffffffffffffffffff1614610d4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4490611800565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16610e87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7e90611820565b60405180910390fd5b610e8f610e99565b565b600033905090565b600060019054906101000a900460ff16610ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edf90611820565b60405180910390fd5b610ef8610ef3610e91565b610d4f565b565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b828054610f36906120f6565b90600052602060002090601f016020900481019282610f585760008555610f9f565b82601f10610f7157803560ff1916838001178555610f9f565b82800160010185558215610f9f579182015b82811115610f9e578235825591602001919060010190610f83565b5b509050610fac9190610fb0565b5090565b5b80821115610fc9576000816000905550600101610fb1565b5090565b6000610fe0610fdb846119f6565b6119d1565b905082815260208101848484011115610ff857600080fd5b611003848285612028565b509392505050565b60008135905061101a816127b4565b92915050565b60008083601f84011261103257600080fd5b8235905067ffffffffffffffff81111561104b57600080fd5b60208301915083600182028301111561106357600080fd5b9250929050565b600082601f83011261107b57600080fd5b813561108b848260208601610fcd565b91505092915050565b6000604082840312156110a657600080fd5b81905092915050565b6000813590506110be816127cb565b92915050565b6000602082840312156110d657600080fd5b60006110e48482850161100b565b91505092915050565b6000806020838503121561110057600080fd5b600083013567ffffffffffffffff81111561111a57600080fd5b61112685828601611020565b92509250509250929050565b60006020828403121561114457600080fd5b600082013567ffffffffffffffff81111561115e57600080fd5b61116a8482850161106a565b91505092915050565b60006020828403121561118557600080fd5b6000611193848285016110af565b91505092915050565b6000806000604084860312156111b157600080fd5b60006111bf868287016110af565b935050602084013567ffffffffffffffff8111156111dc57600080fd5b6111e886828701611020565b92509250509250925092565b6000806040838503121561120757600080fd5b6000611215858286016110af565b925050602083013567ffffffffffffffff81111561123257600080fd5b61123e85828601611094565b9150509250929050565b6000611254838361162a565b905092915050565b60006112688383611679565b905092915050565b61127981611d70565b82525050565b61128881611d70565b82525050565b600061129a8385611ad3565b9350836020840285016112ac84611a3e565b8060005b878110156112f05784840389526112c78284611cdb565b6112d18582611248565b94506112dc83611ab9565b925060208a019950506001810190506112b0565b50829750879450505050509392505050565b600061130d82611a8d565b6113178185611ad3565b93508360208202850161132985611a48565b8060005b858110156113655784840389528151611346858261125c565b945061135183611ac6565b925060208a0199505060018101905061132d565b50829750879550505050505092915050565b61138081611d82565b82525050565b61138f81611e6b565b82525050565b60006113a18385611ae4565b93506113ae838584612028565b6113b7836123cc565b840190509392505050565b60006113ce8385611af5565b93506113db838584612028565b6113e4836123cc565b840190509392505050565b60006113fb8385611b06565b9350611408838584612028565b82840190509392505050565b600061141f82611aae565b6114298185611ae4565b9350611439818560208601612037565b611442816123cc565b840191505092915050565b600061145882611aae565b6114628185611af5565b9350611472818560208601612037565b61147b816123cc565b840191505092915050565b6000611493601583611af5565b915061149e82612458565b602082019050919050565b60006114b6602683611af5565b91506114c182612481565b604082019050919050565b60006114d9601383611af5565b91506114e4826124d0565b602082019050919050565b60006114fc601983611af5565b9150611507826124f9565b602082019050919050565b600061151f602e83611af5565b915061152a82612522565b604082019050919050565b6000611542602083611af5565b915061154d82612571565b602082019050919050565b6000611565602b83611af5565b91506115708261259a565b604082019050919050565b6000611588601983611af5565b9150611593826125e9565b602082019050919050565b6000604083016115b16000840184611c16565b6115be6000860182611270565b506115cc6020840184611c2d565b85830360208701526115df83828461128e565b925050508091505092915050565b60006040830160008301516116056000860182611270565b506020830151848203602086015261161d8282611302565b9150508091505092915050565b60006040830161163d6000840184611c84565b8583036000870152611650838284611395565b925050506116616020840184611cff565b61166e60208601826116b6565b508091505092915050565b600060408301600083015184820360008601526116968282611414565b91505060208301516116ab60208601826116b6565b508091505092915050565b6116bf81611dae565b82525050565b6116ce81611dae565b82525050565b60006116e18284866113ef565b91508190509392505050565b6000602082019050611702600083018461127f565b92915050565b600060208201905061171d6000830184611377565b92915050565b60006020820190506117386000830184611386565b92915050565b60006020820190508181036000830152611758818461144d565b905092915050565b6000602082019050818103600083015261177981611486565b9050919050565b60006020820190508181036000830152611799816114a9565b9050919050565b600060208201905081810360008301526117b9816114cc565b9050919050565b600060208201905081810360008301526117d9816114ef565b9050919050565b600060208201905081810360008301526117f981611512565b9050919050565b6000602082019050818103600083015261181981611535565b9050919050565b6000602082019050818103600083015261183981611558565b9050919050565b600060208201905081810360008301526118598161157b565b9050919050565b6000602082019050818103600083015261187a81846115ed565b905092915050565b600060208201905061189760008301846116c5565b92915050565b60006040820190506118b260008301866116c5565b81810360208301526118c58184866113c2565b9050949350505050565b60006040820190506118e460008301856116c5565b81810360208301526118f6818461159e565b90509392505050565b6000808335600160200384360303811261191857600080fd5b80840192508235915067ffffffffffffffff82111561193657600080fd5b60208301925060208202360383131561194e57600080fd5b509250929050565b6000808335600160200384360303811261196f57600080fd5b80840192508235915067ffffffffffffffff82111561198d57600080fd5b6020830192506001820236038313156119a557600080fd5b509250929050565b6000823560016040038336030381126119c557600080fd5b80830191505092915050565b60006119db6119ec565b90506119e78282612144565b919050565b6000604051905090565b600067ffffffffffffffff821115611a1157611a10612269565b5b611a1a826123cc565b9050602081019050919050565b6000819050611a37826002611d16565b9050919050565b6000819050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b600082905092915050565b600081519050919050565b600081549050919050565b600082905092915050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6020841060008114611b6a57601f841160018114611b3a57611b338685612128565b8355611b64565b611b4383611a6d565b611b586020601f880104820160018301611dd3565b611b628785612612565b505b50611bb3565b611b7382611a6d565b6020601f8701048101601f87168015611b9457611b938160018403612298565b5b611ba66020601f890104840183611dd3565b6001886002021785555050505b5050505050565b6020831060008114611c05576020851060008114611be357611bdc8685612128565b8355611bff565b8360ff1916935083611bf484611a6d565b556001866002020183555b50611c0f565b6001856002020182555b5050505050565b6000611c25602084018461100b565b905092915050565b60008083356001602003843603038112611c4657600080fd5b83810192508235915060208301925067ffffffffffffffff821115611c6a57600080fd5b602082023603841315611c7c57600080fd5b509250929050565b60008083356001602003843603038112611c9d57600080fd5b83810192508235915060208301925067ffffffffffffffff821115611cc157600080fd5b600182023603841315611cd357600080fd5b509250929050565b600082356001604003833603038112611cf357600080fd5b82810191505092915050565b6000611d0e60208401846110af565b905092915050565b6000611d2182611dae565b9150611d2c83611dae565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611d6557611d6461220b565b5b828202905092915050565b6000611d7b82611d8e565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b611dd0600082612377565b50565b5b81811015611df257611de7600082612440565b600181019050611dd4565b5050565b5b81811015611e1557611e0a600082612422565b600281019050611df7565b5050565b81811015611e3757611e2c600082612440565b600181019050611e19565b5050565b611e486000808301612404565b611e56600060018301612440565b50565b6000611e6482611e7d565b9050919050565b6000611e7682611db8565b9050919050565b6000611e8882611e8f565b9050919050565b6000611e9a82611d8e565b9050919050565b6000611eac82611dae565b9050919050565b611ebd8383611a82565b611ec78183612313565b611ed083611a3e565b611ed983611a58565b6000805b84811015611f1257611eef84886119ad565b611efa818486612771565b60208501945060028401935050600181019050611edd565b5050505050505050565b611f268383611aa3565b67ffffffffffffffff811115611f3f57611f3e612269565b5b611f4982546120f6565b600080601f8411601f84111715611f6657611f6385611a6d565b90505b601f831115611f99576020601f85010481016020851015611f85578190505b611f976020601f860104830182611dd3565b505b601f841160018114611fc65760008515611fb4578388013590505b611fbe8682612128565b87555061201e565b601f1985168260005b82811015611ff457858a01358255600182019150602086019550602081019050611fcf565b8783101561201157858a013561200d601f8a16826121be565b8355505b6001600289020189555050505b5050505050505050565b82818337600083830152505050565b60005b8381101561205557808201518184015260208101905061203a565b83811115612064576000848401525b50505050565b60008101600083018061207c816122e7565b905061208881846126fd565b505050600181016020830161209d81856118ff565b6120a8818386612720565b505050505050565b60008101600083016120c28185611956565b6120cd818386612730565b505050506001810160208301806120e3816122fd565b90506120ef818461274e565b5050505050565b6000600282049050600182168061210e57607f821691505b602082108114156121225761212161223a565b5b50919050565b600061213483836121be565b9150826002028217905092915050565b61214d826123cc565b810181811067ffffffffffffffff8211171561216c5761216b612269565b5b80604052505050565b600061218082611dae565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156121b3576121b261220b565b5b600182019050919050565b60006121cf600019846008026123f7565b1980831691505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6122c87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff836020036008026123f7565b815481168255505050565b6000819050919050565b6000819050919050565b600081356122f4816127b4565b80915050919050565b6000813561230a816127cb565b80915050919050565b6801000000000000000082111561232d5761232c612269565b5b61233681611a98565b828255808310156123725761234a81611a27565b61235384611a27565b61235c84611a58565b81810183820161236c8183611df6565b50505050505b505050565b6801000000000000000082111561239157612390612269565b5b805461239c816120f6565b808411156123b1576123b084828486611bba565b5b808410156123c6576123c584828486611b11565b5b50505050565b6000601f19601f8301169050919050565b60008160001b9050919050565b600082821b905092915050565b600082821c905092915050565b60008214612415576124146121dc565b5b61241e81611dc5565b5050565b60008214612433576124326121dc565b5b61243c81611e3b565b5050565b6124486127e2565b61245381848461278f565b505050565b7f6470696420616c72656164792075706772616465640000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f6d6967726174696f6e2069732066726f7a656e00000000000000000000000000600082015250565b7f73747265616d20616c7265616479206861732061206450494400000000000000600082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f756e617574686f72697a65642064706964207570677261646500000000000000600082015250565b61261b81611a6d565b612626838254612128565b8083556000825550505050565b600073ffffffffffffffffffffffffffffffffffffffff612653846123dd565b9350801983169250808416831791505092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612695846123dd565b9350801983169250808416831791505092915050565b6000600883026126db7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826123ea565b6126e586836123ea565b95508019841693508086168417925050509392505050565b61270682611e59565b612719612712826122d3565b8354612633565b8255505050565b61272b838383611eb3565b505050565b61273b838383611f1c565b505050565b61274a828261206a565b5050565b61275782611ea1565b61276a612763826122dd565b8354612669565b8255505050565b81156127805761277f6121dc565b5b61278a83826120b0565b505050565b61279883611ea1565b6127ac6127a4826122dd565b8484546126ab565b825550505050565b6127bd81611d70565b81146127c857600080fd5b50565b6127d481611dae565b81146127df57600080fd5b50565b60009056fea26469706673582212203cd9493558aa831bec9e62a003cae25d442665c9c02edcb7c1725ad3e5bb65db64736f6c63430008040033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/desci-contracts/contracts/DpidAliasRegistry.sol b/desci-contracts/contracts/DpidAliasRegistry.sol index 960df556a..ba8b4809e 100644 --- a/desci-contracts/contracts/DpidAliasRegistry.sol +++ b/desci-contracts/contracts/DpidAliasRegistry.sol @@ -4,12 +4,15 @@ pragma solidity ^0.8.0; import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; contract DpidAliasRegistry is OwnableUpgradeable { - // Only written at time of initialization + // Starting point of new aliases (set at initialization) uint256 public firstDpid; // Incremented on each dPID mint uint256 public nextDpid; + // When this is set to true, further edits of the legacy entries are blocked + bool public migrationFrozen; + // dpid => codex streamID (resolve dPID) mapping(uint256 => string) public registry; @@ -21,7 +24,7 @@ contract DpidAliasRegistry is OwnableUpgradeable { _disableInitializers(); } - function __DpidAliasRegistry_init(uint256 _firstDpid) public initializer { + function initialize(uint256 _firstDpid) public initializer { OwnableUpgradeable.__Ownable_init(); firstDpid = _firstDpid; nextDpid = _firstDpid; @@ -43,19 +46,36 @@ contract DpidAliasRegistry is OwnableUpgradeable { return reverseRegistry[streamId]; } + /** + * Signal that a stream has been bound to a new dPID alias. + * + * @param dpid the new alias + * @param streamID the bound stream + */ event DpidMinted ( uint256 dpid, string streamID ); /** - * Claim the next free dPID by pointing it to a codex stream ID + * Ensure the streamId to alias is not already bound to a dPID. * - * @param streamId the codex stream ID to alias + * @param streamId the stream that is requesting a dPID */ - function mintDpid(string calldata streamId) public returns(uint256) { + modifier onlyUnaliasedStream(string calldata streamId) { require(reverseRegistry[streamId] == 0, "stream already has a dPID"); + _; + } + /** + * Claim the next free dPID by pointing it to a codex stream ID. + * This can only be done once, as a given steam can only have one dPID. + * + * @param streamId the codex stream ID to alias + */ + function mintDpid( + string calldata streamId + ) public onlyUnaliasedStream(streamId) returns(uint256) { uint256 thisDpid = nextDpid; // map this dPID to the passed stream ID @@ -66,7 +86,7 @@ contract DpidAliasRegistry is OwnableUpgradeable { emit DpidMinted(thisDpid, streamId); - // Move counter to next free dPID + // Move counter to a free dPID nextDpid++; return thisDpid; } @@ -75,21 +95,34 @@ contract DpidAliasRegistry is OwnableUpgradeable { // Backward compatibility // // ---------------------- // + /** + * Represents a single update in the history of a legacy dPID + */ struct LegacyVersion { string cid; uint256 time; } + /** + * Represents the entire lineage of a legacy dPID, associated with it's owner. + * This owner information is what gates the upgrade of a dPID. + */ struct LegacyDpidEntry { address owner; LegacyVersion[] versions; } /** - * Maps dPIDs before _firstDpid to it's complete history. + * Maps legacy dPIDs to their complete history. * This allows resolving every old state of a legacy dPID * using only this contract. If the author wants to update * this history, they need to call upgradeDpid. + * + * This mapping stays populated even after a dPID is upgraded, + * to allow finding the timestamps for previous versions if needed. + * Additionally, if the stream that claims the dPID as an alias + * does not represent the same history, this allows falling back + * to resolving the historical state regardless. */ mapping(uint256 => LegacyDpidEntry) public legacy; @@ -97,39 +130,47 @@ contract DpidAliasRegistry is OwnableUpgradeable { * Lookup the state of an unmigrated, legacy dPID. * Use this to resolve the history of a dPID that hasn't been updated * since the protocol upgrade, or to check the timestamps of old versions. + * * @param dpid the alias to lookup */ function legacyLookup(uint256 dpid) public view returns(LegacyDpidEntry memory) { return legacy[dpid]; } + /** + * Signal that a legacy dPID has been upgraded and bound to a stream. + * + * @param dpid the dPID which has been upgraded + * @param streamId the bound stream + */ event UpgradedDpid ( uint256 dpid, string streamId ); /** - * The owner of a migrated ResearchObject token can call this function - * to claim the same dPID in this alias registry by pointing it to a codex - * streamID representing the same research object. + * The owner of a legacy dPID can call this function to claim the same dPID + * in this alias registry, by pointing it to a codex stream. + * + * This function can only be called with a stream that hasn't already + * minted an alias, as each stream only can have one dPID. * * This is an at-most-once operation, as the registry is immutable. * The caller must make sure the stream represents the same history, - * and that it controls the stream. - * - * The legacy entry is deleted when migrated. + * and that it controls the stream. This cannot be formally guaranteed, + * which is why the legacy entires are kept to ensure continued deterministic + * resolution of versions as they were originally created. * - * @param dpid the dPID to migrate - * @param streamId the codex stream ID that shall supersede the legacy history + * @param dpid the dPID to upgrade + * @param streamId the stream representing that same dPID */ - function upgradeDpid(uint256 dpid, string calldata streamId) public { + function upgradeDpid( + uint256 dpid, + string calldata streamId + ) public onlyUnaliasedStream(streamId) { // Assert that this dPID has not been set in the main registry require(bytes(registry[dpid]).length == 0, "dpid already upgraded"); - // ??????????????????????????????????????????????????? - // Assert that this stream hasn't already got an alias - require(reverseRegistry[streamId] == 0, "stream already has a dPID"); - // Assert that the tx was made by the owner of the imported entry require(legacy[dpid].owner == msg.sender, "unauthorized dpid upgrade"); @@ -138,22 +179,45 @@ contract DpidAliasRegistry is OwnableUpgradeable { reverseRegistry[streamId] = dpid; emit UpgradedDpid(dpid, streamId); - - // Delete the legacy entry ? - // delete legacy[dpid]; } // ---------------------------- // // Population of legacy mapping // // ---------------------------- // + /** + * Signal that a legacy dPID has been imported into the legacy registry. + * + * @param dpid the imported dPID + * @param entry the historical information to store + */ event ImportedDpid ( uint256 dpid, LegacyDpidEntry entry ); - function importLegacyDpid(uint256 dpid, LegacyDpidEntry calldata entry) public onlyOwner { + /** + * Import the history and ownership information about a legacy dPID into + * the registry. This allows overwriting to correct migration errors, + * but can be locked for further imports. + * + * @param dpid the dPID to import + * @param entry the historical and ownership information + */ + function importLegacyDpid( + uint256 dpid, + LegacyDpidEntry calldata entry + ) public onlyOwner { + require(migrationFrozen == false, "migration is frozen"); legacy[dpid] = entry; emit ImportedDpid(dpid, entry); } + + /** + * This permanently blocks importing/overwriting legacy dPID entries, + * effectively freezing history. + */ + function freezeMigration() public onlyOwner { + migrationFrozen = true; + } } diff --git a/desci-contracts/package.json b/desci-contracts/package.json index 7ae725f22..38beb3db0 100644 --- a/desci-contracts/package.json +++ b/desci-contracts/package.json @@ -11,7 +11,7 @@ "docker:push": "docker tag desci-hardhat-node:latest 523044037273.dkr.ecr.us-east-2.amazonaws.com/desci-hardhat-node:latest && docker push 523044037273.dkr.ecr.us-east-2.amazonaws.com/desci-hardhat-node:latest", "deploy:ganache": "yarn stubHardhatAnalytics && hardhat run scripts/deployResearchObject.js --network ganache", "deploy:dpid:ganache": "yarn stubHardhatAnalytics && hardhat run scripts/deployDpidRegistry.js --network ganache", - "deploy:alias:ganache": "yarn stubHardhatAnalytics && hardhat run scripts/deployDpidAliasRegistry.js --network ganache", + "deploy:alias:ganache": "yarn stubHardhatAnalytics && export FIRST_DPID=500 && hardhat run scripts/deployDpidAliasRegistry.js --network ganache", "migrate": "hardhat run scripts/migrateToNewContract.js --network ganache && touch ./.openzeppelin/migration-complete.json", "graph:codegen": "graph codegen subgraph/subgraph.yaml -o subgraph/generated", "graph:build": "graph build subgraph/subgraph.yaml", diff --git a/desci-contracts/scripts/deployDpidAliasRegistry.js b/desci-contracts/scripts/deployDpidAliasRegistry.js index c6d8efef8..e5f7740b2 100644 --- a/desci-contracts/scripts/deployDpidAliasRegistry.js +++ b/desci-contracts/scripts/deployDpidAliasRegistry.js @@ -1,9 +1,11 @@ const { ethers, upgrades } = require("hardhat"); const fs = require('fs'); -const FIRST_DPID = 500; +const FIRST_DPID = process.env.FIRST_DPID; +if (FIRST_DPID === undefined) { + throw new Error("FIRST_DPID unset"); +}; -console.log(process.cwd()) async function main() { fs.rmSync(".openzeppelin/unknown-dpid-alias-registry.json", { force: true }); fs.rmSync(".openzeppelin/unknown-1337.json", { force: true }); @@ -16,7 +18,7 @@ async function main() { FIRST_DPID // firstDpid ], { - initializer: "__DpidAliasRegistry_init" + initializer: "initialize" } ); await proxy.deployed(); diff --git a/desci-contracts/scripts/migrateToAliasRegistry.mjs b/desci-contracts/scripts/migrateToAliasRegistry.mjs index 916ad9f2b..0ac02c1dd 100644 --- a/desci-contracts/scripts/migrateToAliasRegistry.mjs +++ b/desci-contracts/scripts/migrateToAliasRegistry.mjs @@ -1,24 +1,44 @@ import hardhat from "hardhat"; -const { ethers } = hardhat; +const { ethers, hardhatArguments } = hardhat; import axios from "axios"; +import { writeFileSync } from "fs"; + +const FIRST_DPID = process.env.FIRST_DPID; +if (FIRST_DPID === undefined) { + throw new Error("FIRST_DPID unset"); +}; + +const ENV = process.env.ENV; +if (ENV === undefined) { + throw new Error("ENV unset"); +}; + +let dpidApi; +if (ENV === "dev") { + dpidApi = "dev-beta"; +} else if (ENV === "prod") { + dpidApi = "beta"; +} else { + throw new Error(`Env "${ENV} unknown (use "dev" or "prod")`); +}; const getDpidPage = async (page) => { const { data } = await axios.get( - `https://dev-beta.dpid.org/api/v1/dpid?size=100&page=${page}` + `https://${dpidApi}.dpid.org/api/v1/dpid?size=100&page=${page}` ); return data; }; const allDpids = (await Promise.all( [1,2,3].map(getDpidPage) -)).flat(); +)).flat().sort((d1, d2) => parseInt(d1.dpid) - parseInt(d2.dpid)); const toImportEntry = (dpid) => [ dpid.dpid, { owner: dpid.researchObject.owner, versions: dpid.researchObject.versions.map(v => ({cid: v.cid, time: v.time})) - } + }, ]; const importEntries = allDpids.map(toImportEntry); @@ -28,34 +48,80 @@ const DpidAliasRegistryFactory = await ethers.getContractFactory("DpidAliasRegis const registry = await upgrades.deployProxy( DpidAliasRegistryFactory, [ - 500 // firstDpid + FIRST_DPID ], { - initializer: "__DpidAliasRegistry_init" + initializer: "initialize" } ); await registry.deployed(); +console.log(`📃 Contract deployed to ${registry.address}`); -const sliceToImport = importEntries.slice(0,5); -console.log("Importing dPIDs:", sliceToImport.map(s => s[0]).join(", ")) - -const results = []; +const results = { + address: registry.address, + dpids: [], +}; +let totalGas = 0; +const startTime = Date.now(); -for (const [ dpid, entry ] of importEntries.slice(0, 5)) { - console.log(`✨ Importing dPID ${dpid}...`) - await registry.importLegacyDpid(dpid, entry); +for (const [ dpid, entry ] of importEntries) { + console.log(`📥 Importing dPID ${dpid}...`) + const tx = await registry.importLegacyDpid(dpid, entry); + const receipt = await tx.wait(); + totalGas += ethers.BigNumber.from(receipt.gasUsed).toNumber(); - console.log(`🔎 Resolving dPID ${dpid} from new contract...`) const fromContract = await registry.legacyLookup(dpid); - const result = { + const imported = { dpid, owner: fromContract[0], versions: fromContract[1].map(([cid, time]) => ({cid, time: ethers.BigNumber.from(time).toNumber() })) }; - console.log(`🎊 Found migrated history of dPID ${dpid} in new contract: \n${JSON.stringify(result, undefined, 2)}`) - console.log("-----------------------------------------------------------------") + console.log(`🔎 Verifying dPID ${dpid}:`); + + const originalDpid = allDpids.find(e => e.dpid === dpid); + const originalOwner = originalDpid.researchObject.owner; + const originalVersions = originalDpid.researchObject.versions; + + let validationError = false; + + const ownerCorrect = originalOwner === imported.owner.toLowerCase(); + console.log(` - Ownership: ${ownerCorrect ? "✅" : "❌"} (${originalOwner})`); + if (!ownerCorrect) validationError = true; + + console.log(` - History:`) + for (let i = 0; i < originalVersions.length; i++) { + console.log(` - v${i}:`) + const cidCorrect = originalVersions[i].cid === imported.versions[i].cid; + const timeCorrect = originalVersions[i].time === imported.versions[i].time; + + console.log(` - cid: ${cidCorrect ? "✅" : "❌"} (${originalVersions[i].cid})`); + console.log(` - time: ${timeCorrect ? "✅" : "❌"} (${originalVersions[i].time})`); + if (!(cidCorrect && timeCorrect)) { + validationError = true; + }; + }; + results.dpids.push({ dpid, owner: imported.owner, versions: imported.versions, importError: validationError }); +}; + +const failures = results.dpids.filter(r => r.validationError); +console.log(`🚦 dPIDs which failed validation: ${JSON.stringify(failures)}`) + +const missingNumbers = []; +for (let i = 0; i < importEntries.length; i++) { + if (!allDpids.find(e => e.dpid === i.toString())) { + missingNumbers.push(i); + }; }; +console.log(`❓ dPID's missing from original set: ${JSON.stringify(missingNumbers)}`) + +const duration = Math.ceil((Date.now() - startTime) / 1000); +console.log(`🏁 migration done in ${duration}s for a total of ${totalGas} gas`) + +const dateString = new Date().toUTCString().replaceAll(" ", "_"); +const logFilePath = `migration-data/aliasRegistry_${dateString}.json`; +writeFileSync(logFilePath, JSON.stringify(results, undefined, 2)); +console.log(`📝 migration data written to ${logFilePath}`); diff --git a/desci-contracts/scripts/syncAliasRegistryMigration.mjs b/desci-contracts/scripts/syncAliasRegistryMigration.mjs new file mode 100644 index 000000000..36631517f --- /dev/null +++ b/desci-contracts/scripts/syncAliasRegistryMigration.mjs @@ -0,0 +1,97 @@ +import hardhat from "hardhat"; +const { ethers, hardhatArguments } = hardhat; +import axios from "axios"; +import { writeFileSync } from "fs"; + +const REGISTRY_ADDRESS = process.env.REGISTRY_ADDRESS; +if (REGISTRY_ADDRESS === undefined) { + throw new Error("REGISTRY_ADDRESS unset"); +}; + +const getDpidPage = async (page) => { + const { data } = await axios.get( + `https://dev-beta.dpid.org/api/v1/dpid?size=100&page=${page}` + ); + return data; +}; + +const allDpids = (await Promise.all( + [1,2,3].map(getDpidPage) +)).flat().sort((d1, d2) => parseInt(d1.dpid) - parseInt(d2.dpid)); + +const toImportEntry = (dpid) => [ + dpid.dpid, + { + owner: dpid.researchObject.owner, + versions: dpid.researchObject.versions.map(v => ({cid: v.cid, time: v.time})) + } +]; + +const importEntries = allDpids.map(toImportEntry); + +const DpidAliasRegistryFactory = await ethers.getContractFactory("DpidAliasRegistry"); +const registry = DpidAliasRegistryFactory + .attach(REGISTRY_ADDRESS); + +const results = []; +let totalGas = 0; +const startTime = Date.now(); + +for (const [ dpid, entry ] of importEntries) { + const [owner, versions] = await registry.legacyLookup(dpid); + const notImported = owner === "0x0000000000000000000000000000000000000000"; + + if (notImported) { + console.log(`❗ dPID ${dpid} not found, importing...`); + const tx = await registry.importLegacyDpid(dpid, entry); + const receipt = await tx.wait(); + totalGas += ethers.BigNumber.from(receipt.gasUsed).toNumber(); + }; + + const fromContract = await registry.legacyLookup(dpid); + + const imported = { + dpid, + owner: fromContract[0], + versions: fromContract[1].map(([cid, time]) => ({cid, time: ethers.BigNumber.from(time).toNumber() })) + }; + + console.log(`🔎 Verifying dPID ${dpid}:`); + + const originalDpid = allDpids.find(e => e.dpid === dpid); + const originalOwner = originalDpid.researchObject.owner; + const originalVersions = originalDpid.researchObject.versions; + + let validationError = false; + + const ownerCorrect = originalOwner === imported.owner.toLowerCase(); + console.log(` - Ownership: ${ownerCorrect ? "✅" : "❌"} (${originalOwner})`); + if (!ownerCorrect) validationError = true; + + console.log(` - History:`) + for (let i = 0; i < originalVersions.length; i++) { + console.log(` - v${i}:`) + const cidCorrect = originalVersions[i].cid === imported.versions[i].cid; + const timeCorrect = originalVersions[i].time === imported.versions[i].time; + + console.log(` - cid: ${cidCorrect ? "✅" : "❌"} (${originalVersions[i].cid})`); + console.log(` - time: ${timeCorrect ? "✅" : "❌"} (${originalVersions[i].time})`); + if (!(cidCorrect && timeCorrect)) { + validationError = true; + }; + }; + + + results.push({ dpid, owner: imported.owner, versions: imported.versions, importError: validationError }); +}; + +const failures = results.filter(r => r.validationError); +console.log(`🚦 dPIDs which failed validation (manually import to overwrite): ${JSON.stringify(failures)}`) + +const duration = Math.ceil((Date.now() - startTime) / 1000); +console.log(`🏁 migration done in ${duration}s for a total of ${totalGas} gas`) + +const dateString = new Date().toUTCString().replaceAll(" ", "_"); +const logFilePath = `migration-data/aliasRegistry_${dateString}.json`; +writeFileSync(logFilePath, JSON.stringify(results, undefined, 2)); +console.log(`📝 migration data written to ${logFilePath}`); diff --git a/desci-contracts/test/DpidAliasRegistry.ts b/desci-contracts/test/DpidAliasRegistry.ts index 99643cb25..44151dfad 100644 --- a/desci-contracts/test/DpidAliasRegistry.ts +++ b/desci-contracts/test/DpidAliasRegistry.ts @@ -8,6 +8,7 @@ import { } from "../typechain-types"; import { TransactionReceipt } from "@ethersproject/abstract-provider"; import { SignerWithAddress } from "@nomiclabs/hardhat-ethers/signers"; +import { receiveMessageOnPort } from "worker_threads"; use(chaiAsPromised); @@ -37,7 +38,7 @@ describe("dPID", () => { FIRST_DPID // firstDpid ], { - initializer: "__DpidAliasRegistry_init" + initializer: "initialize", } ) as DpidAliasRegistry; await dpidAliasRegistry.deployed(); @@ -56,11 +57,10 @@ describe("dPID", () => { reciept = await dpidAliasRegistry.deployTransaction.wait(); proxyAddress = reciept.contractAddress; implAddress = await upgrades.erc1967.getImplementationAddress(proxyAddress); - proxyAdmin = await upgrades.erc1967.getAdminAddress(proxyAddress); console.log({ implAddress, - proxyAdmin, + proxyAddress, implOwner: await dpidAliasRegistry.owner(), }) }); @@ -76,9 +76,9 @@ describe("dPID", () => { expect(proxyAddress).not.to.equal(implAddress); }); - it("deploys implementation with proxy admin as owner", async () => { + it("deploys implementation with proxy owner as owner", async () => { const registryOwner = await dpidAliasRegistry.owner(); - expect(registryOwner).to.equal(proxyAdmin); + expect(registryOwner).to.equal(owner.address); }); it("respects initializer dpid offset", async () => { @@ -181,11 +181,12 @@ describe("dPID", () => { describe("upgrade", () => { let successReceipt: ContractReceipt; + const STREAM_C = "kjzl6kcym7w8y7i5ugaq9a3vlm7hhuaf4bpl5o5qykeh4qtsa12c6rb5ekw6ccc"; it("can NOT be done by others", async () => { const doUpgrade = async () => await dpidAliasRegistry .connect(user2) - .upgradeDpid(0, STREAM_A); + .upgradeDpid(0, STREAM_C); await expect(doUpgrade()).to.be.rejectedWith("unauthorized dpid upgrade"); }); @@ -193,22 +194,22 @@ describe("dPID", () => { it("can NOT be done by contract owner", async () => { const doUpgrade = async () => await dpidAliasRegistry .connect(owner) - .upgradeDpid(0, STREAM_A); + .upgradeDpid(0, STREAM_C); await expect(doUpgrade()).to.be.rejectedWith("unauthorized dpid upgrade"); }); it("can be done by dpid owner", async () => { - const tx = await dpidAliasRegistry.upgradeDpid(0, STREAM_A); + const tx = await dpidAliasRegistry.upgradeDpid(0, STREAM_C); successReceipt = await tx.wait(); const upgradedEntry = await dpidAliasRegistry.resolve(0); - expect(upgradedEntry).to.equal(STREAM_A); + expect(upgradedEntry).to.equal(STREAM_C); }); it("cannot be done twice", async () => { const doSecondUpgrade = async () => - await dpidAliasRegistry.upgradeDpid(0, STREAM_A); + await dpidAliasRegistry.upgradeDpid(0, STREAM_C); await expect(doSecondUpgrade()).to.be.rejectedWith("dpid already upgraded"); }); @@ -219,7 +220,7 @@ describe("dPID", () => { expect(event.event).to.equal("UpgradedDpid"); expect(dpid).to.equal(0); - expect(streamId).to.equal(STREAM_A); + expect(streamId).to.equal(STREAM_C); }); }); }); diff --git a/desci-contracts/typechain-types/DpidAliasRegistry.ts b/desci-contracts/typechain-types/DpidAliasRegistry.ts index 7e8aa99ce..efc29a831 100644 --- a/desci-contracts/typechain-types/DpidAliasRegistry.ts +++ b/desci-contracts/typechain-types/DpidAliasRegistry.ts @@ -42,12 +42,14 @@ export declare namespace DpidAliasRegistry { export interface DpidAliasRegistryInterface extends utils.Interface { contractName: "DpidAliasRegistry"; functions: { - "__DpidAliasRegistry_init(uint256)": FunctionFragment; "find(string)": FunctionFragment; "firstDpid()": FunctionFragment; + "freezeMigration()": FunctionFragment; "importLegacyDpid(uint256,(address,(string,uint256)[]))": FunctionFragment; + "initialize(uint256)": FunctionFragment; "legacy(uint256)": FunctionFragment; "legacyLookup(uint256)": FunctionFragment; + "migrationFrozen()": FunctionFragment; "mintDpid(string)": FunctionFragment; "nextDpid()": FunctionFragment; "owner()": FunctionFragment; @@ -59,16 +61,20 @@ export interface DpidAliasRegistryInterface extends utils.Interface { "upgradeDpid(uint256,string)": FunctionFragment; }; - encodeFunctionData( - functionFragment: "__DpidAliasRegistry_init", - values: [BigNumberish] - ): string; encodeFunctionData(functionFragment: "find", values: [string]): string; encodeFunctionData(functionFragment: "firstDpid", values?: undefined): string; + encodeFunctionData( + functionFragment: "freezeMigration", + values?: undefined + ): string; encodeFunctionData( functionFragment: "importLegacyDpid", values: [BigNumberish, DpidAliasRegistry.LegacyDpidEntryStruct] ): string; + encodeFunctionData( + functionFragment: "initialize", + values: [BigNumberish] + ): string; encodeFunctionData( functionFragment: "legacy", values: [BigNumberish] @@ -77,6 +83,10 @@ export interface DpidAliasRegistryInterface extends utils.Interface { functionFragment: "legacyLookup", values: [BigNumberish] ): string; + encodeFunctionData( + functionFragment: "migrationFrozen", + values?: undefined + ): string; encodeFunctionData(functionFragment: "mintDpid", values: [string]): string; encodeFunctionData(functionFragment: "nextDpid", values?: undefined): string; encodeFunctionData(functionFragment: "owner", values?: undefined): string; @@ -105,21 +115,26 @@ export interface DpidAliasRegistryInterface extends utils.Interface { values: [BigNumberish, string] ): string; + decodeFunctionResult(functionFragment: "find", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "firstDpid", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "__DpidAliasRegistry_init", + functionFragment: "freezeMigration", data: BytesLike ): Result; - decodeFunctionResult(functionFragment: "find", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "firstDpid", data: BytesLike): Result; decodeFunctionResult( functionFragment: "importLegacyDpid", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; decodeFunctionResult(functionFragment: "legacy", data: BytesLike): Result; decodeFunctionResult( functionFragment: "legacyLookup", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "migrationFrozen", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "mintDpid", data: BytesLike): Result; decodeFunctionResult(functionFragment: "nextDpid", data: BytesLike): Result; decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; @@ -218,21 +233,25 @@ export interface DpidAliasRegistry extends BaseContract { removeListener: OnEvent; functions: { - __DpidAliasRegistry_init( - _firstDpid: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - find(streamId: string, overrides?: CallOverrides): Promise<[BigNumber]>; firstDpid(overrides?: CallOverrides): Promise<[BigNumber]>; + freezeMigration( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + importLegacyDpid( dpid: BigNumberish, entry: DpidAliasRegistry.LegacyDpidEntryStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; + initialize( + _firstDpid: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + legacy( arg0: BigNumberish, overrides?: CallOverrides @@ -243,6 +262,8 @@ export interface DpidAliasRegistry extends BaseContract { overrides?: CallOverrides ): Promise<[DpidAliasRegistry.LegacyDpidEntryStructOutput]>; + migrationFrozen(overrides?: CallOverrides): Promise<[boolean]>; + mintDpid( streamId: string, overrides?: Overrides & { from?: string | Promise } @@ -277,21 +298,25 @@ export interface DpidAliasRegistry extends BaseContract { ): Promise; }; - __DpidAliasRegistry_init( - _firstDpid: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - find(streamId: string, overrides?: CallOverrides): Promise; firstDpid(overrides?: CallOverrides): Promise; + freezeMigration( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + importLegacyDpid( dpid: BigNumberish, entry: DpidAliasRegistry.LegacyDpidEntryStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; + initialize( + _firstDpid: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + legacy(arg0: BigNumberish, overrides?: CallOverrides): Promise; legacyLookup( @@ -299,6 +324,8 @@ export interface DpidAliasRegistry extends BaseContract { overrides?: CallOverrides ): Promise; + migrationFrozen(overrides?: CallOverrides): Promise; + mintDpid( streamId: string, overrides?: Overrides & { from?: string | Promise } @@ -330,21 +357,23 @@ export interface DpidAliasRegistry extends BaseContract { ): Promise; callStatic: { - __DpidAliasRegistry_init( - _firstDpid: BigNumberish, - overrides?: CallOverrides - ): Promise; - find(streamId: string, overrides?: CallOverrides): Promise; firstDpid(overrides?: CallOverrides): Promise; + freezeMigration(overrides?: CallOverrides): Promise; + importLegacyDpid( dpid: BigNumberish, entry: DpidAliasRegistry.LegacyDpidEntryStruct, overrides?: CallOverrides ): Promise; + initialize( + _firstDpid: BigNumberish, + overrides?: CallOverrides + ): Promise; + legacy(arg0: BigNumberish, overrides?: CallOverrides): Promise; legacyLookup( @@ -352,6 +381,8 @@ export interface DpidAliasRegistry extends BaseContract { overrides?: CallOverrides ): Promise; + migrationFrozen(overrides?: CallOverrides): Promise; + mintDpid(streamId: string, overrides?: CallOverrides): Promise; nextDpid(overrides?: CallOverrides): Promise; @@ -414,21 +445,25 @@ export interface DpidAliasRegistry extends BaseContract { }; estimateGas: { - __DpidAliasRegistry_init( - _firstDpid: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - find(streamId: string, overrides?: CallOverrides): Promise; firstDpid(overrides?: CallOverrides): Promise; + freezeMigration( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + importLegacyDpid( dpid: BigNumberish, entry: DpidAliasRegistry.LegacyDpidEntryStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; + initialize( + _firstDpid: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + legacy(arg0: BigNumberish, overrides?: CallOverrides): Promise; legacyLookup( @@ -436,6 +471,8 @@ export interface DpidAliasRegistry extends BaseContract { overrides?: CallOverrides ): Promise; + migrationFrozen(overrides?: CallOverrides): Promise; + mintDpid( streamId: string, overrides?: Overrides & { from?: string | Promise } @@ -471,11 +508,6 @@ export interface DpidAliasRegistry extends BaseContract { }; populateTransaction: { - __DpidAliasRegistry_init( - _firstDpid: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - find( streamId: string, overrides?: CallOverrides @@ -483,12 +515,21 @@ export interface DpidAliasRegistry extends BaseContract { firstDpid(overrides?: CallOverrides): Promise; + freezeMigration( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + importLegacyDpid( dpid: BigNumberish, entry: DpidAliasRegistry.LegacyDpidEntryStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; + initialize( + _firstDpid: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + legacy( arg0: BigNumberish, overrides?: CallOverrides @@ -499,6 +540,8 @@ export interface DpidAliasRegistry extends BaseContract { overrides?: CallOverrides ): Promise; + migrationFrozen(overrides?: CallOverrides): Promise; + mintDpid( streamId: string, overrides?: Overrides & { from?: string | Promise } diff --git a/desci-contracts/typechain-types/factories/DpidAliasRegistry__factory.ts b/desci-contracts/typechain-types/factories/DpidAliasRegistry__factory.ts index 4598e9f98..5339dc20e 100644 --- a/desci-contracts/typechain-types/factories/DpidAliasRegistry__factory.ts +++ b/desci-contracts/typechain-types/factories/DpidAliasRegistry__factory.ts @@ -127,19 +127,6 @@ const _abi = [ name: "UpgradedDpid", type: "event", }, - { - inputs: [ - { - internalType: "uint256", - name: "_firstDpid", - type: "uint256", - }, - ], - name: "__DpidAliasRegistry_init", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, { inputs: [ { @@ -172,6 +159,13 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "freezeMigration", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, { inputs: [ { @@ -214,6 +208,19 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, + { + inputs: [ + { + internalType: "uint256", + name: "_firstDpid", + type: "uint256", + }, + ], + name: "initialize", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, { inputs: [ { @@ -276,6 +283,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "migrationFrozen", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [ { @@ -419,7 +439,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b50620000226200002860201b60201c565b620001d3565b600060019054906101000a900460ff16156200007b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000729062000127565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff161015620000ed5760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff604051620000e4919062000149565b60405180910390a15b565b6000620000fe60278362000166565b91506200010b8262000184565b604082019050919050565b620001218162000177565b82525050565b600060208201905081810360008301526200014281620000ef565b9050919050565b600060208201905062000160600083018462000116565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b6126a680620001e36000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c8063810a9afa11610097578063b724de3a11610066578063b724de3a14610298578063cfb452b5146102c8578063ded8896b146102e6578063f2fde38b14610302576100f5565b8063810a9afa146101fc57806382b7b5001461022c5780638da5cb5b1461025c578063afc269111461027a576100f5565b8063587a8cbf116100d3578063587a8cbf146101625780635893253c14610192578063715018a6146101c2578063788243d5146101cc576100f5565b8063144ae855146100fa578063362b3e63146101165780634f896d4f14610132575b600080fd5b610114600480360381019061010f919061111f565b61031e565b005b610130600480360381019061012b919061109e565b610386565b005b61014c6004803603810190610147919061109e565b6104d3565b604051610159919061161c565b60405180910390f35b61017c6004803603810190610177919061105d565b610578565b6040516101899190611740565b60405180910390f35b6101ac60048036038101906101a7919061109e565b6105a6565b6040516101b9919061161c565b60405180910390f35b6101ca610646565b005b6101e660048036038101906101e1919061109e565b61065a565b6040516101f391906115e6565b60405180910390f35b6102166004803603810190610211919061109e565b610698565b604051610223919061171e565b60405180910390f35b61024660048036038101906102419190611018565b610816565b6040516102539190611740565b60405180910390f35b610264610841565b60405161027191906115e6565b60405180910390f35b61028261086b565b60405161028f9190611740565b60405180910390f35b6102b260048036038101906102ad9190611018565b610871565b6040516102bf9190611740565b60405180910390f35b6102d0610981565b6040516102dd9190611740565b60405180910390f35b61030060048036038101906102fb91906110c7565b610987565b005b61031c60048036038101906103179190610fef565b610b78565b005b610326610bfc565b8060696000848152602001908152602001600020818161034691906125c9565b9050507fa9c55ebaa1fada408bd72c2f0ea7c27f5444b105bcff12c5381baac912156ada828260405161037a92919061178d565b60405180910390a15050565b60008060019054906101000a900460ff161590508080156103b75750600160008054906101000a900460ff1660ff16105b806103e457506103c630610c7a565b1580156103e35750600160008054906101000a900460ff1660ff16145b5b610423576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161041a9061169e565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610460576001600060016101000a81548160ff0219169083151502179055505b610468610c9d565b816065819055508160668190555080156104cf5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516104c69190611601565b60405180910390a15b5050565b60606067600083815260200190815260200160002080546104f390611fa8565b80601f016020809104026020016040519081016040528092919081815260200182805461051f90611fa8565b801561056c5780601f106105415761010080835404028352916020019161056c565b820191906000526020600020905b81548152906001019060200180831161054f57829003601f168201915b50505050509050919050565b6068818051602081018201805184825260208301602085012081835280955050505050506000915090505481565b606760205280600052604060002060009150905080546105c590611fa8565b80601f01602080910402602001604051908101604052809291908181526020018280546105f190611fa8565b801561063e5780601f106106135761010080835404028352916020019161063e565b820191906000526020600020905b81548152906001019060200180831161062157829003601f168201915b505050505081565b61064e610bfc565b6106586000610cf6565b565b60696020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081565b6106a0610e25565b606960008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805480602002602001604051908101604052809291908181526020016000905b82821015610807578382906000526020600020906002020160405180604001604052908160008201805461076c90611fa8565b80601f016020809104026020016040519081016040528092919081815260200182805461079890611fa8565b80156107e55780601f106107ba576101008083540402835291602001916107e5565b820191906000526020600020905b8154815290600101906020018083116107c857829003601f168201915b5050505050815260200160018201548152505081526020019060010190610739565b50505050815250509050919050565b60006068838360405161082a9291906115cd565b908152602001604051809103902054905092915050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60665481565b600080606884846040516108869291906115cd565b908152602001604051809103902054146108d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108cc9061167e565b60405180910390fd5b6000606654905083836067600084815260200190815260200160002091906108fe929190610e55565b5080606885856040516109129291906115cd565b9081526020016040518091039020819055507f96a65efbb6991f67fc8a4c7550fcfd08f1968737d2f5adcded5cd937b3cc0f3d8185856040516109579392919061175b565b60405180910390a16066600081548092919061097290612027565b91905055508091505092915050565b60655481565b60006067600085815260200190815260200160002080546109a790611fa8565b9050146109e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e09061163e565b60405180910390fd5b6000606883836040516109fd9291906115cd565b90815260200160405180910390205414610a4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a439061167e565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166069600085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610af0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae7906116fe565b60405180910390fd5b8181606760008681526020019081526020016000209190610b12929190610e55565b508260688383604051610b269291906115cd565b9081526020016040518091039020819055507f442b41840a10393534508176faee6f70b1870707dc24573b67d49f28cbac7f1c838383604051610b6b9392919061175b565b60405180910390a1505050565b610b80610bfc565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610bf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be79061165e565b60405180910390fd5b610bf981610cf6565b50565b610c04610dbc565b73ffffffffffffffffffffffffffffffffffffffff16610c22610841565b73ffffffffffffffffffffffffffffffffffffffff1614610c78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6f906116be565b60405180910390fd5b565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16610cec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce3906116de565b60405180910390fd5b610cf4610dc4565b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b600060019054906101000a900460ff16610e13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0a906116de565b60405180910390fd5b610e23610e1e610dbc565b610cf6565b565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b828054610e6190611fa8565b90600052602060002090601f016020900481019282610e835760008555610eca565b82601f10610e9c57803560ff1916838001178555610eca565b82800160010185558215610eca579182015b82811115610ec9578235825591602001919060010190610eae565b5b509050610ed79190610edb565b5090565b5b80821115610ef4576000816000905550600101610edc565b5090565b6000610f0b610f06846118b4565b61188f565b905082815260208101848484011115610f2357600080fd5b610f2e848285611eda565b509392505050565b600081359050610f458161263d565b92915050565b60008083601f840112610f5d57600080fd5b8235905067ffffffffffffffff811115610f7657600080fd5b602083019150836001820283011115610f8e57600080fd5b9250929050565b600082601f830112610fa657600080fd5b8135610fb6848260208601610ef8565b91505092915050565b600060408284031215610fd157600080fd5b81905092915050565b600081359050610fe981612654565b92915050565b60006020828403121561100157600080fd5b600061100f84828501610f36565b91505092915050565b6000806020838503121561102b57600080fd5b600083013567ffffffffffffffff81111561104557600080fd5b61105185828601610f4b565b92509250509250929050565b60006020828403121561106f57600080fd5b600082013567ffffffffffffffff81111561108957600080fd5b61109584828501610f95565b91505092915050565b6000602082840312156110b057600080fd5b60006110be84828501610fda565b91505092915050565b6000806000604084860312156110dc57600080fd5b60006110ea86828701610fda565b935050602084013567ffffffffffffffff81111561110757600080fd5b61111386828701610f4b565b92509250509250925092565b6000806040838503121561113257600080fd5b600061114085828601610fda565b925050602083013567ffffffffffffffff81111561115d57600080fd5b61116985828601610fbf565b9150509250929050565b600061117f8383611523565b905092915050565b60006111938383611572565b905092915050565b6111a481611c2e565b82525050565b6111b381611c2e565b82525050565b60006111c58385611991565b9350836020840285016111d7846118fc565b8060005b8781101561121b5784840389526111f28284611b99565b6111fc8582611173565b945061120783611977565b925060208a019950506001810190506111db565b50829750879450505050509392505050565b60006112388261194b565b6112428185611991565b93508360208202850161125485611906565b8060005b8581101561129057848403895281516112718582611187565b945061127c83611984565b925060208a01995050600181019050611258565b50829750879550505050505092915050565b6112ab81611d1d565b82525050565b60006112bd83856119a2565b93506112ca838584611eda565b6112d38361227e565b840190509392505050565b60006112ea83856119b3565b93506112f7838584611eda565b6113008361227e565b840190509392505050565b600061131783856119c4565b9350611324838584611eda565b82840190509392505050565b600061133b8261196c565b61134581856119a2565b9350611355818560208601611ee9565b61135e8161227e565b840191505092915050565b60006113748261196c565b61137e81856119b3565b935061138e818560208601611ee9565b6113978161227e565b840191505092915050565b60006113af6015836119b3565b91506113ba8261230a565b602082019050919050565b60006113d26026836119b3565b91506113dd82612333565b604082019050919050565b60006113f56019836119b3565b915061140082612382565b602082019050919050565b6000611418602e836119b3565b9150611423826123ab565b604082019050919050565b600061143b6020836119b3565b9150611446826123fa565b602082019050919050565b600061145e602b836119b3565b915061146982612423565b604082019050919050565b60006114816019836119b3565b915061148c82612472565b602082019050919050565b6000604083016114aa6000840184611ad4565b6114b7600086018261119b565b506114c56020840184611aeb565b85830360208701526114d88382846111b9565b925050508091505092915050565b60006040830160008301516114fe600086018261119b565b5060208301518482036020860152611516828261122d565b9150508091505092915050565b6000604083016115366000840184611b42565b85830360008701526115498382846112b1565b9250505061155a6020840184611bbd565b61156760208601826115af565b508091505092915050565b6000604083016000830151848203600086015261158f8282611330565b91505060208301516115a460208601826115af565b508091505092915050565b6115b881611c60565b82525050565b6115c781611c60565b82525050565b60006115da82848661130b565b91508190509392505050565b60006020820190506115fb60008301846111aa565b92915050565b600060208201905061161660008301846112a2565b92915050565b600060208201905081810360008301526116368184611369565b905092915050565b60006020820190508181036000830152611657816113a2565b9050919050565b60006020820190508181036000830152611677816113c5565b9050919050565b60006020820190508181036000830152611697816113e8565b9050919050565b600060208201905081810360008301526116b78161140b565b9050919050565b600060208201905081810360008301526116d78161142e565b9050919050565b600060208201905081810360008301526116f781611451565b9050919050565b6000602082019050818103600083015261171781611474565b9050919050565b6000602082019050818103600083015261173881846114e6565b905092915050565b600060208201905061175560008301846115be565b92915050565b600060408201905061177060008301866115be565b81810360208301526117838184866112de565b9050949350505050565b60006040820190506117a260008301856115be565b81810360208301526117b48184611497565b90509392505050565b600080833560016020038436030381126117d657600080fd5b80840192508235915067ffffffffffffffff8211156117f457600080fd5b60208301925060208202360383131561180c57600080fd5b509250929050565b6000808335600160200384360303811261182d57600080fd5b80840192508235915067ffffffffffffffff82111561184b57600080fd5b60208301925060018202360383131561186357600080fd5b509250929050565b60008235600160400383360303811261188357600080fd5b80830191505092915050565b60006118996118aa565b90506118a58282611ff6565b919050565b6000604051905090565b600067ffffffffffffffff8211156118cf576118ce61211b565b5b6118d88261227e565b9050602081019050919050565b60008190506118f5826002611bd4565b9050919050565b6000819050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b600082905092915050565b600081519050919050565b600081549050919050565b600082905092915050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6020841060008114611a2857601f8411600181146119f8576119f18685611fda565b8355611a22565b611a018361192b565b611a166020601f880104820160018301611c85565b611a20878561249b565b505b50611a71565b611a318261192b565b6020601f8701048101601f87168015611a5257611a51816001840361214a565b5b611a646020601f890104840183611c85565b6001886002021785555050505b5050505050565b6020831060008114611ac3576020851060008114611aa157611a9a8685611fda565b8355611abd565b8360ff1916935083611ab28461192b565b556001866002020183555b50611acd565b6001856002020182555b5050505050565b6000611ae36020840184610f36565b905092915050565b60008083356001602003843603038112611b0457600080fd5b83810192508235915060208301925067ffffffffffffffff821115611b2857600080fd5b602082023603841315611b3a57600080fd5b509250929050565b60008083356001602003843603038112611b5b57600080fd5b83810192508235915060208301925067ffffffffffffffff821115611b7f57600080fd5b600182023603841315611b9157600080fd5b509250929050565b600082356001604003833603038112611bb157600080fd5b82810191505092915050565b6000611bcc6020840184610fda565b905092915050565b6000611bdf82611c60565b9150611bea83611c60565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611c2357611c226120bd565b5b828202905092915050565b6000611c3982611c40565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b611c82600082612229565b50565b5b81811015611ca457611c996000826122f2565b600181019050611c86565b5050565b5b81811015611cc757611cbc6000826122d4565b600281019050611ca9565b5050565b81811015611ce957611cde6000826122f2565b600181019050611ccb565b5050565b611cfa60008083016122b6565b611d086000600183016122f2565b50565b6000611d1682611d2f565b9050919050565b6000611d2882611c6a565b9050919050565b6000611d3a82611d41565b9050919050565b6000611d4c82611c40565b9050919050565b6000611d5e82611c60565b9050919050565b611d6f8383611940565b611d7981836121c5565b611d82836118fc565b611d8b83611916565b6000805b84811015611dc457611da1848861186b565b611dac8184866125fa565b60208501945060028401935050600181019050611d8f565b5050505050505050565b611dd88383611961565b67ffffffffffffffff811115611df157611df061211b565b5b611dfb8254611fa8565b600080601f8411601f84111715611e1857611e158561192b565b90505b601f831115611e4b576020601f85010481016020851015611e37578190505b611e496020601f860104830182611c85565b505b601f841160018114611e785760008515611e66578388013590505b611e708682611fda565b875550611ed0565b601f1985168260005b82811015611ea657858a01358255600182019150602086019550602081019050611e81565b87831015611ec357858a0135611ebf601f8a1682612070565b8355505b6001600289020189555050505b5050505050505050565b82818337600083830152505050565b60005b83811015611f07578082015181840152602081019050611eec565b83811115611f16576000848401525b50505050565b600081016000830180611f2e81612199565b9050611f3a8184612586565b5050506001810160208301611f4f81856117bd565b611f5a8183866125a9565b505050505050565b6000810160008301611f748185611814565b611f7f8183866125b9565b50505050600181016020830180611f95816121af565b9050611fa181846125d7565b5050505050565b60006002820490506001821680611fc057607f821691505b60208210811415611fd457611fd36120ec565b5b50919050565b6000611fe68383612070565b9150826002028217905092915050565b611fff8261227e565b810181811067ffffffffffffffff8211171561201e5761201d61211b565b5b80604052505050565b600061203282611c60565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612065576120646120bd565b5b600182019050919050565b6000612081600019846008026122a9565b1980831691505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61217a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff836020036008026122a9565b815481168255505050565b6000819050919050565b6000819050919050565b600081356121a68161263d565b80915050919050565b600081356121bc81612654565b80915050919050565b680100000000000000008211156121df576121de61211b565b5b6121e881611956565b82825580831015612224576121fc816118e5565b612205846118e5565b61220e84611916565b81810183820161221e8183611ca8565b50505050505b505050565b680100000000000000008211156122435761224261211b565b5b805461224e81611fa8565b808411156122635761226284828486611a78565b5b8084101561227857612277848284866119cf565b5b50505050565b6000601f19601f8301169050919050565b60008160001b9050919050565b600082821b905092915050565b600082821c905092915050565b600082146122c7576122c661208e565b5b6122d081611c77565b5050565b600082146122e5576122e461208e565b5b6122ee81611ced565b5050565b6122fa61266b565b612305818484612618565b505050565b7f6470696420616c72656164792075706772616465640000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f73747265616d20616c7265616479206861732061206450494400000000000000600082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f756e617574686f72697a65642064706964207570677261646500000000000000600082015250565b6124a48161192b565b6124af838254611fda565b8083556000825550505050565b600073ffffffffffffffffffffffffffffffffffffffff6124dc8461228f565b9350801983169250808416831791505092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61251e8461228f565b9350801983169250808416831791505092915050565b6000600883026125647fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261229c565b61256e868361229c565b95508019841693508086168417925050509392505050565b61258f82611d0b565b6125a261259b82612185565b83546124bc565b8255505050565b6125b4838383611d65565b505050565b6125c4838383611dce565b505050565b6125d38282611f1c565b5050565b6125e082611d53565b6125f36125ec8261218f565b83546124f2565b8255505050565b81156126095761260861208e565b5b6126138382611f62565b505050565b61262183611d53565b61263561262d8261218f565b848454612534565b825550505050565b61264681611c2e565b811461265157600080fd5b50565b61265d81611c60565b811461266857600080fd5b50565b60009056fea2646970667358221220cb403f7adc2fb139c3c9359219d93f9c0d9a168b2bc26c7936cfd7429f94f50064736f6c63430008040033"; + "0x60806040523480156200001157600080fd5b50620000226200002860201b60201c565b620001d3565b600060019054906101000a900460ff16156200007b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000729062000127565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff161015620000ed5760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff604051620000e4919062000149565b60405180910390a15b565b6000620000fe60278362000166565b91506200010b8262000184565b604082019050919050565b620001218162000177565b82525050565b600060208201905081810360008301526200014281620000ef565b9050919050565b600060208201905062000160600083018462000116565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b61281d80620001e36000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806382b7b500116100a2578063b9e2924111610071578063b9e29241146102cc578063cfb452b5146102ea578063ded8896b14610308578063f2fde38b14610324578063fe4b84df146103405761010b565b806382b7b500146102305780638da5cb5b14610260578063afc269111461027e578063b724de3a1461029c5761010b565b80635893253c116100de5780635893253c14610196578063715018a6146101c6578063788243d5146101d0578063810a9afa146102005761010b565b80630d70b3aa14610110578063144ae8551461011a5780634f896d4f14610136578063587a8cbf14610166575b600080fd5b61011861035c565b005b610134600480360381019061012f91906111f4565b610381565b005b610150600480360381019061014b9190611173565b61043f565b60405161015d919061173e565b60405180910390f35b610180600480360381019061017b9190611132565b6104e4565b60405161018d9190611882565b60405180910390f35b6101b060048036038101906101ab9190611173565b610512565b6040516101bd919061173e565b60405180910390f35b6101ce6105b2565b005b6101ea60048036038101906101e59190611173565b6105c6565b6040516101f791906116ed565b60405180910390f35b61021a60048036038101906102159190611173565b610604565b6040516102279190611860565b60405180910390f35b61024a600480360381019061024591906110ed565b610782565b6040516102579190611882565b60405180910390f35b6102686107ad565b60405161027591906116ed565b60405180910390f35b6102866107d7565b6040516102939190611882565b60405180910390f35b6102b660048036038101906102b191906110ed565b6107dd565b6040516102c39190611882565b60405180910390f35b6102d46108f2565b6040516102e19190611708565b60405180910390f35b6102f2610905565b6040516102ff9190611882565b60405180910390f35b610322600480360381019061031d919061119c565b61090b565b005b61033e600480360381019061033991906110c4565b610b00565b005b61035a60048036038101906103559190611173565b610b84565b005b610364610cd1565b6001606760006101000a81548160ff021916908315150217905550565b610389610cd1565b60001515606760009054906101000a900460ff161515146103df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d6906117a0565b60405180910390fd5b80606a600084815260200190815260200160002081816103ff9190612740565b9050507fa9c55ebaa1fada408bd72c2f0ea7c27f5444b105bcff12c5381baac912156ada82826040516104339291906118cf565b60405180910390a15050565b606060686000838152602001908152602001600020805461045f906120f6565b80601f016020809104026020016040519081016040528092919081815260200182805461048b906120f6565b80156104d85780601f106104ad576101008083540402835291602001916104d8565b820191906000526020600020905b8154815290600101906020018083116104bb57829003601f168201915b50505050509050919050565b6069818051602081018201805184825260208301602085012081835280955050505050506000915090505481565b60686020528060005260406000206000915090508054610531906120f6565b80601f016020809104026020016040519081016040528092919081815260200182805461055d906120f6565b80156105aa5780601f1061057f576101008083540402835291602001916105aa565b820191906000526020600020905b81548152906001019060200180831161058d57829003601f168201915b505050505081565b6105ba610cd1565b6105c46000610d4f565b565b606a6020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081565b61060c610efa565b606a60008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805480602002602001604051908101604052809291908181526020016000905b8282101561077357838290600052602060002090600202016040518060400160405290816000820180546106d8906120f6565b80601f0160208091040260200160405190810160405280929190818152602001828054610704906120f6565b80156107515780601f1061072657610100808354040283529160200191610751565b820191906000526020600020905b81548152906001019060200180831161073457829003601f168201915b50505050508152602001600182015481525050815260200190600101906106a5565b50505050815250509050919050565b6000606983836040516107969291906116d4565b908152602001604051809103902054905092915050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60665481565b600082826000606983836040516107f59291906116d4565b90815260200160405180910390205414610844576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083b906117c0565b60405180910390fd5b60006066549050858560686000848152602001908152602001600020919061086d929190610f2a565b5080606987876040516108819291906116d4565b9081526020016040518091039020819055507f96a65efbb6991f67fc8a4c7550fcfd08f1968737d2f5adcded5cd937b3cc0f3d8187876040516108c69392919061189d565b60405180910390a1606660008154809291906108e190612175565b919050555080935050505092915050565b606760009054906101000a900460ff1681565b60655481565b81816000606983836040516109219291906116d4565b90815260200160405180910390205414610970576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610967906117c0565b60405180910390fd5b6000606860008781526020019081526020016000208054610990906120f6565b9050146109d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c990611760565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16606a600087815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6d90611840565b60405180910390fd5b8383606860008881526020019081526020016000209190610a98929190610f2a565b508460698585604051610aac9291906116d4565b9081526020016040518091039020819055507f442b41840a10393534508176faee6f70b1870707dc24573b67d49f28cbac7f1c858585604051610af19392919061189d565b60405180910390a15050505050565b610b08610cd1565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6f90611780565b60405180910390fd5b610b8181610d4f565b50565b60008060019054906101000a900460ff16159050808015610bb55750600160008054906101000a900460ff1660ff16105b80610be25750610bc430610e15565b158015610be15750600160008054906101000a900460ff1660ff16145b5b610c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c18906117e0565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610c5e576001600060016101000a81548160ff0219169083151502179055505b610c66610e38565b81606581905550816066819055508015610ccd5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610cc49190611723565b60405180910390a15b5050565b610cd9610e91565b73ffffffffffffffffffffffffffffffffffffffff16610cf76107ad565b73ffffffffffffffffffffffffffffffffffffffff1614610d4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4490611800565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16610e87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7e90611820565b60405180910390fd5b610e8f610e99565b565b600033905090565b600060019054906101000a900460ff16610ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edf90611820565b60405180910390fd5b610ef8610ef3610e91565b610d4f565b565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b828054610f36906120f6565b90600052602060002090601f016020900481019282610f585760008555610f9f565b82601f10610f7157803560ff1916838001178555610f9f565b82800160010185558215610f9f579182015b82811115610f9e578235825591602001919060010190610f83565b5b509050610fac9190610fb0565b5090565b5b80821115610fc9576000816000905550600101610fb1565b5090565b6000610fe0610fdb846119f6565b6119d1565b905082815260208101848484011115610ff857600080fd5b611003848285612028565b509392505050565b60008135905061101a816127b4565b92915050565b60008083601f84011261103257600080fd5b8235905067ffffffffffffffff81111561104b57600080fd5b60208301915083600182028301111561106357600080fd5b9250929050565b600082601f83011261107b57600080fd5b813561108b848260208601610fcd565b91505092915050565b6000604082840312156110a657600080fd5b81905092915050565b6000813590506110be816127cb565b92915050565b6000602082840312156110d657600080fd5b60006110e48482850161100b565b91505092915050565b6000806020838503121561110057600080fd5b600083013567ffffffffffffffff81111561111a57600080fd5b61112685828601611020565b92509250509250929050565b60006020828403121561114457600080fd5b600082013567ffffffffffffffff81111561115e57600080fd5b61116a8482850161106a565b91505092915050565b60006020828403121561118557600080fd5b6000611193848285016110af565b91505092915050565b6000806000604084860312156111b157600080fd5b60006111bf868287016110af565b935050602084013567ffffffffffffffff8111156111dc57600080fd5b6111e886828701611020565b92509250509250925092565b6000806040838503121561120757600080fd5b6000611215858286016110af565b925050602083013567ffffffffffffffff81111561123257600080fd5b61123e85828601611094565b9150509250929050565b6000611254838361162a565b905092915050565b60006112688383611679565b905092915050565b61127981611d70565b82525050565b61128881611d70565b82525050565b600061129a8385611ad3565b9350836020840285016112ac84611a3e565b8060005b878110156112f05784840389526112c78284611cdb565b6112d18582611248565b94506112dc83611ab9565b925060208a019950506001810190506112b0565b50829750879450505050509392505050565b600061130d82611a8d565b6113178185611ad3565b93508360208202850161132985611a48565b8060005b858110156113655784840389528151611346858261125c565b945061135183611ac6565b925060208a0199505060018101905061132d565b50829750879550505050505092915050565b61138081611d82565b82525050565b61138f81611e6b565b82525050565b60006113a18385611ae4565b93506113ae838584612028565b6113b7836123cc565b840190509392505050565b60006113ce8385611af5565b93506113db838584612028565b6113e4836123cc565b840190509392505050565b60006113fb8385611b06565b9350611408838584612028565b82840190509392505050565b600061141f82611aae565b6114298185611ae4565b9350611439818560208601612037565b611442816123cc565b840191505092915050565b600061145882611aae565b6114628185611af5565b9350611472818560208601612037565b61147b816123cc565b840191505092915050565b6000611493601583611af5565b915061149e82612458565b602082019050919050565b60006114b6602683611af5565b91506114c182612481565b604082019050919050565b60006114d9601383611af5565b91506114e4826124d0565b602082019050919050565b60006114fc601983611af5565b9150611507826124f9565b602082019050919050565b600061151f602e83611af5565b915061152a82612522565b604082019050919050565b6000611542602083611af5565b915061154d82612571565b602082019050919050565b6000611565602b83611af5565b91506115708261259a565b604082019050919050565b6000611588601983611af5565b9150611593826125e9565b602082019050919050565b6000604083016115b16000840184611c16565b6115be6000860182611270565b506115cc6020840184611c2d565b85830360208701526115df83828461128e565b925050508091505092915050565b60006040830160008301516116056000860182611270565b506020830151848203602086015261161d8282611302565b9150508091505092915050565b60006040830161163d6000840184611c84565b8583036000870152611650838284611395565b925050506116616020840184611cff565b61166e60208601826116b6565b508091505092915050565b600060408301600083015184820360008601526116968282611414565b91505060208301516116ab60208601826116b6565b508091505092915050565b6116bf81611dae565b82525050565b6116ce81611dae565b82525050565b60006116e18284866113ef565b91508190509392505050565b6000602082019050611702600083018461127f565b92915050565b600060208201905061171d6000830184611377565b92915050565b60006020820190506117386000830184611386565b92915050565b60006020820190508181036000830152611758818461144d565b905092915050565b6000602082019050818103600083015261177981611486565b9050919050565b60006020820190508181036000830152611799816114a9565b9050919050565b600060208201905081810360008301526117b9816114cc565b9050919050565b600060208201905081810360008301526117d9816114ef565b9050919050565b600060208201905081810360008301526117f981611512565b9050919050565b6000602082019050818103600083015261181981611535565b9050919050565b6000602082019050818103600083015261183981611558565b9050919050565b600060208201905081810360008301526118598161157b565b9050919050565b6000602082019050818103600083015261187a81846115ed565b905092915050565b600060208201905061189760008301846116c5565b92915050565b60006040820190506118b260008301866116c5565b81810360208301526118c58184866113c2565b9050949350505050565b60006040820190506118e460008301856116c5565b81810360208301526118f6818461159e565b90509392505050565b6000808335600160200384360303811261191857600080fd5b80840192508235915067ffffffffffffffff82111561193657600080fd5b60208301925060208202360383131561194e57600080fd5b509250929050565b6000808335600160200384360303811261196f57600080fd5b80840192508235915067ffffffffffffffff82111561198d57600080fd5b6020830192506001820236038313156119a557600080fd5b509250929050565b6000823560016040038336030381126119c557600080fd5b80830191505092915050565b60006119db6119ec565b90506119e78282612144565b919050565b6000604051905090565b600067ffffffffffffffff821115611a1157611a10612269565b5b611a1a826123cc565b9050602081019050919050565b6000819050611a37826002611d16565b9050919050565b6000819050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b600082905092915050565b600081519050919050565b600081549050919050565b600082905092915050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6020841060008114611b6a57601f841160018114611b3a57611b338685612128565b8355611b64565b611b4383611a6d565b611b586020601f880104820160018301611dd3565b611b628785612612565b505b50611bb3565b611b7382611a6d565b6020601f8701048101601f87168015611b9457611b938160018403612298565b5b611ba66020601f890104840183611dd3565b6001886002021785555050505b5050505050565b6020831060008114611c05576020851060008114611be357611bdc8685612128565b8355611bff565b8360ff1916935083611bf484611a6d565b556001866002020183555b50611c0f565b6001856002020182555b5050505050565b6000611c25602084018461100b565b905092915050565b60008083356001602003843603038112611c4657600080fd5b83810192508235915060208301925067ffffffffffffffff821115611c6a57600080fd5b602082023603841315611c7c57600080fd5b509250929050565b60008083356001602003843603038112611c9d57600080fd5b83810192508235915060208301925067ffffffffffffffff821115611cc157600080fd5b600182023603841315611cd357600080fd5b509250929050565b600082356001604003833603038112611cf357600080fd5b82810191505092915050565b6000611d0e60208401846110af565b905092915050565b6000611d2182611dae565b9150611d2c83611dae565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611d6557611d6461220b565b5b828202905092915050565b6000611d7b82611d8e565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b611dd0600082612377565b50565b5b81811015611df257611de7600082612440565b600181019050611dd4565b5050565b5b81811015611e1557611e0a600082612422565b600281019050611df7565b5050565b81811015611e3757611e2c600082612440565b600181019050611e19565b5050565b611e486000808301612404565b611e56600060018301612440565b50565b6000611e6482611e7d565b9050919050565b6000611e7682611db8565b9050919050565b6000611e8882611e8f565b9050919050565b6000611e9a82611d8e565b9050919050565b6000611eac82611dae565b9050919050565b611ebd8383611a82565b611ec78183612313565b611ed083611a3e565b611ed983611a58565b6000805b84811015611f1257611eef84886119ad565b611efa818486612771565b60208501945060028401935050600181019050611edd565b5050505050505050565b611f268383611aa3565b67ffffffffffffffff811115611f3f57611f3e612269565b5b611f4982546120f6565b600080601f8411601f84111715611f6657611f6385611a6d565b90505b601f831115611f99576020601f85010481016020851015611f85578190505b611f976020601f860104830182611dd3565b505b601f841160018114611fc65760008515611fb4578388013590505b611fbe8682612128565b87555061201e565b601f1985168260005b82811015611ff457858a01358255600182019150602086019550602081019050611fcf565b8783101561201157858a013561200d601f8a16826121be565b8355505b6001600289020189555050505b5050505050505050565b82818337600083830152505050565b60005b8381101561205557808201518184015260208101905061203a565b83811115612064576000848401525b50505050565b60008101600083018061207c816122e7565b905061208881846126fd565b505050600181016020830161209d81856118ff565b6120a8818386612720565b505050505050565b60008101600083016120c28185611956565b6120cd818386612730565b505050506001810160208301806120e3816122fd565b90506120ef818461274e565b5050505050565b6000600282049050600182168061210e57607f821691505b602082108114156121225761212161223a565b5b50919050565b600061213483836121be565b9150826002028217905092915050565b61214d826123cc565b810181811067ffffffffffffffff8211171561216c5761216b612269565b5b80604052505050565b600061218082611dae565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156121b3576121b261220b565b5b600182019050919050565b60006121cf600019846008026123f7565b1980831691505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6122c87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff836020036008026123f7565b815481168255505050565b6000819050919050565b6000819050919050565b600081356122f4816127b4565b80915050919050565b6000813561230a816127cb565b80915050919050565b6801000000000000000082111561232d5761232c612269565b5b61233681611a98565b828255808310156123725761234a81611a27565b61235384611a27565b61235c84611a58565b81810183820161236c8183611df6565b50505050505b505050565b6801000000000000000082111561239157612390612269565b5b805461239c816120f6565b808411156123b1576123b084828486611bba565b5b808410156123c6576123c584828486611b11565b5b50505050565b6000601f19601f8301169050919050565b60008160001b9050919050565b600082821b905092915050565b600082821c905092915050565b60008214612415576124146121dc565b5b61241e81611dc5565b5050565b60008214612433576124326121dc565b5b61243c81611e3b565b5050565b6124486127e2565b61245381848461278f565b505050565b7f6470696420616c72656164792075706772616465640000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f6d6967726174696f6e2069732066726f7a656e00000000000000000000000000600082015250565b7f73747265616d20616c7265616479206861732061206450494400000000000000600082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f756e617574686f72697a65642064706964207570677261646500000000000000600082015250565b61261b81611a6d565b612626838254612128565b8083556000825550505050565b600073ffffffffffffffffffffffffffffffffffffffff612653846123dd565b9350801983169250808416831791505092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612695846123dd565b9350801983169250808416831791505092915050565b6000600883026126db7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826123ea565b6126e586836123ea565b95508019841693508086168417925050509392505050565b61270682611e59565b612719612712826122d3565b8354612633565b8255505050565b61272b838383611eb3565b505050565b61273b838383611f1c565b505050565b61274a828261206a565b5050565b61275782611ea1565b61276a612763826122dd565b8354612669565b8255505050565b81156127805761277f6121dc565b5b61278a83826120b0565b505050565b61279883611ea1565b6127ac6127a4826122dd565b8484546126ab565b825550505050565b6127bd81611d70565b81146127c857600080fd5b50565b6127d481611dae565b81146127df57600080fd5b50565b60009056fea26469706673582212203cd9493558aa831bec9e62a003cae25d442665c9c02edcb7c1725ad3e5bb65db64736f6c63430008040033"; type DpidAliasRegistryConstructorParams = | [signer?: Signer] From 6d81cfdf20028cfc343396f4a638d96cc173a17e Mon Sep 17 00:00:00 2001 From: m0ar Date: Fri, 31 May 2024 12:03:34 +0200 Subject: [PATCH 08/34] server: add createDpid route and controller --- desci-server/.gitignore | 2 +- desci-server/package.json | 3 +- .../src/controllers/nodes/createDpid.ts | 99 +++++++++++++++++++ desci-server/src/routes/v1/nodes.ts | 2 + desci-server/yarn.lock | 36 ++----- 5 files changed, 112 insertions(+), 30 deletions(-) create mode 100644 desci-server/src/controllers/nodes/createDpid.ts diff --git a/desci-server/.gitignore b/desci-server/.gitignore index cff213f0a..e9b57f85c 100755 --- a/desci-server/.gitignore +++ b/desci-server/.gitignore @@ -15,4 +15,4 @@ server.log repo-tmp -queries.sql \ No newline at end of file +queries.sql diff --git a/desci-server/package.json b/desci-server/package.json index bf462d4ff..d346ff251 100755 --- a/desci-server/package.json +++ b/desci-server/package.json @@ -56,6 +56,7 @@ "@automerge/automerge-repo-network-websocket": "^1.0.19", "@aws-sdk/client-s3": "^3.537.0", "@desci-labs/desci-models": "0.2.7-rc3", + "@desci-labs/desci-contracts": "0.2.5-rc3", "@honeycombio/opentelemetry-node": "^0.3.2", "@ipld/dag-pb": "^4.0.0", "@opentelemetry/api": "^1.8.0", @@ -174,4 +175,4 @@ "prisma": { "seed": "node --no-warnings=ExperimentalWarning --loader ts-node/esm prisma/seed.ts" } -} \ No newline at end of file +} diff --git a/desci-server/src/controllers/nodes/createDpid.ts b/desci-server/src/controllers/nodes/createDpid.ts new file mode 100644 index 000000000..84c82808c --- /dev/null +++ b/desci-server/src/controllers/nodes/createDpid.ts @@ -0,0 +1,99 @@ +import { Response } from "express"; +import { ethers } from "ethers"; +import { logger as parentLogger } from '../../logger.js'; +import { RequestWithNode } from "../../middleware/authorisation.js"; +import { contracts, typechain as tc } from "@desci-labs/desci-contracts"; +import { DpidMintedEvent } from "@desci-labs/desci-contracts/dist/typechain-types/DpidAliasRegistry.js"; + +type DpidResponse = DpidSuccessResponse | DpidErrorResponse; +export type DpidSuccessResponse = { + dpid: number; +}; + +export type DpidErrorResponse = { + error: string; +}; + +/** Not secret: pre-seeded ganache account for local dev */ +const GANACHE_PKEY = "59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d"; + +let aliasRegistryAddress: string; +const url = process.env.SERVER_URL; + +if (url.includes("localhost")) { + aliasRegistryAddress = contracts.localDpidAliasInfo.proxies.at(0).address; +} else if (url.includes("dev") || url.includes("staging")) { + aliasRegistryAddress = contracts.devDpidAliasInfo.proxies.at(0).address; +} else if (process.env.NODE_ENV === "production") { + aliasRegistryAddress = contracts.prodDpidAliasInfo.proxies.at(0).address; +}; + +export const createDpid = async (req: RequestWithNode, res: Response) => { + const owner = req.user; + const node = req.node; + const { uuid } = req.body; + + const logger = parentLogger.child({ + module: "NODE::createDpidController", + body: req.body, + uuid, + user: owner, + ceramicStream: node.ceramicStream, + }); + + if (!uuid) { + return res.status(400).json({ error: "UUID is required" }); + }; + + if (!process.env.HOT_WALLET_KEY) { + logger.error("hot wallet not configured"); + return res.status(500).json({ error: "dpid registration not available" }); + }; + + if (!process.env.ETHEREUM_RPC_URL) { + logger.error("ethereum RPC endpoint not configured"); + return res.status(500).json({ error: "dpid registration not available" }); + }; + + try { + debugger; + const provider = new ethers.providers.JsonRpcProvider( + process.env.ETHEREUM_RPC_URL + ); + + await provider.ready; + const wallet = new ethers.Wallet( + url.includes("localhost") ? GANACHE_PKEY : process.env.HOT_WALLET_KEY, + provider, + ); + + const dpidAliasRegistry = tc.DpidAliasRegistry__factory.connect( + aliasRegistryAddress, + wallet, + ); + + const derp = await dpidAliasRegistry.owner(); + console.log("owner:", derp); + const hasDpid = await dpidAliasRegistry.find(node.ceramicStream); + + if (ethers.BigNumber.from(hasDpid).toNumber() !== 0) { + return res.status(400).json({ + error: `stream already has dPID: ${node.ceramicStream}`, + }); + }; + + const tx = await dpidAliasRegistry.mintDpid(node.ceramicStream); + const receipt = await tx.wait(); + const { args: [dpidBn, streamID] }= receipt.events[0] as DpidMintedEvent; + const dpid = ethers.BigNumber.from(dpidBn).toNumber(); + + logger.info( + `Created dPID alias ${dpid} for stream ${streamID}`, + ); + + return res.status(200).send({ dpid }); + } catch (err) { + logger.error({ err }, "node-create-dpid-err"); + return res.status(400).send({ error: err.message }); + }; +}; diff --git a/desci-server/src/routes/v1/nodes.ts b/desci-server/src/routes/v1/nodes.ts index 57268d9dc..85d487eb6 100755 --- a/desci-server/src/routes/v1/nodes.ts +++ b/desci-server/src/routes/v1/nodes.ts @@ -41,11 +41,13 @@ import { versionDetails } from '../../controllers/nodes/versionDetails.js'; import { asyncHander, attachUser, validate } from '../../internal.js'; import { ensureNodeAccess, ensureWriteNodeAccess } from '../../middleware/authorisation.js'; import { ensureUser } from '../../middleware/permissions.js'; +import { createDpid } from '../../controllers/nodes/createDpid.js'; const router = Router(); router.post('/prepublish', [ensureUser, ensureNodeAccess], prepublish); router.post('/publish', [ensureUser], publish); +router.post('/createDpid', [ensureUser, ensureWriteNodeAccess], createDpid); router.post('/createDraft', [ensureUser], draftCreate); // is this api deprecated? router.post('/addComponentToDraft', [ensureUser], draftAddComponent); diff --git a/desci-server/yarn.lock b/desci-server/yarn.lock index 7357a32d6..68750092f 100644 --- a/desci-server/yarn.lock +++ b/desci-server/yarn.lock @@ -1635,6 +1635,11 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" +"@desci-labs/desci-contracts@0.2.5-rc3": + version "0.2.5-rc3" + resolved "https://registry.yarnpkg.com/@desci-labs/desci-contracts/-/desci-contracts-0.2.5-rc3.tgz#bd9f0b221bf4df295855a50853f35161ce6d066e" + integrity sha512-+b0TTZCZjceCw5DuVqCxu9LlkHBMvF5PHw2Q/5N+cuveb2YMtPcj+TlVAEfsi+HcgAiagqaUKWI9903Kf8X1IA== + "@desci-labs/desci-models@0.2.7-rc3": version "0.2.7-rc3" resolved "https://registry.yarnpkg.com/@desci-labs/desci-models/-/desci-models-0.2.7-rc3.tgz#b033073e6b77edde85491731d5c03469f443aaa1" @@ -12850,16 +12855,7 @@ string-template@~0.2.1: resolved "https://registry.yarnpkg.com/string-template/-/string-template-0.2.1.tgz#42932e598a352d01fc22ec3367d9d84eec6c9add" integrity sha512-Yptehjogou2xm4UJbxJ4CxgZx12HBfeystp0y3x7s4Dj32ltVVG1Gg8YhKjHZkHicuKpZX/ffilA8505VbUbpw== -"string-width-cjs@npm:string-width@^4.2.0": - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -12932,7 +12928,7 @@ stringify-object@3.3.0: is-obj "^1.0.1" is-regexp "^1.0.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1": +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -12946,13 +12942,6 @@ strip-ansi@^3.0.0: dependencies: ansi-regex "^2.0.0" -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - strip-ansi@^7.0.1: version "7.1.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" @@ -13832,7 +13821,7 @@ workerpool@6.2.1: resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -13850,15 +13839,6 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" From a64002dde2460c2829c6217751a27333d6380384 Mon Sep 17 00:00:00 2001 From: m0ar Date: Fri, 31 May 2024 15:37:20 +0200 Subject: [PATCH 09/34] contracts: make alias registry pausable, redesign contract setup steps --- desci-contracts/.gitignore | 1 + .../PausableUpgradeable.json | 63 +++++++++ .../DpidAliasRegistry.json | 91 +++++++++--- .../contracts/DpidAliasRegistry.sol | 46 ++++-- .../scripts/deployDpidAliasRegistry.js | 10 +- desci-contracts/test/DpidAliasRegistry.ts | 45 ++++-- .../typechain-types/DpidAliasRegistry.ts | 133 +++++++++++++++--- .../typechain-types/PausableUpgradeable.ts | 105 ++++++++++++++ .../factories/DpidAliasRegistry__factory.ts | 89 +++++++++--- .../factories/PausableUpgradeable__factory.ts | 78 ++++++++++ desci-contracts/typechain-types/hardhat.d.ts | 9 ++ desci-contracts/typechain-types/index.ts | 2 + 12 files changed, 580 insertions(+), 92 deletions(-) create mode 100644 desci-contracts/artifacts/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol/PausableUpgradeable.json create mode 100644 desci-contracts/typechain-types/PausableUpgradeable.ts create mode 100644 desci-contracts/typechain-types/factories/PausableUpgradeable__factory.ts diff --git a/desci-contracts/.gitignore b/desci-contracts/.gitignore index d3767f7da..7b4e35123 100644 --- a/desci-contracts/.gitignore +++ b/desci-contracts/.gitignore @@ -12,3 +12,4 @@ build *.dbg.json flat.sol dist +.vscode \ No newline at end of file diff --git a/desci-contracts/artifacts/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol/PausableUpgradeable.json b/desci-contracts/artifacts/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol/PausableUpgradeable.json new file mode 100644 index 000000000..4bc1f5eeb --- /dev/null +++ b/desci-contracts/artifacts/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol/PausableUpgradeable.json @@ -0,0 +1,63 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "PausableUpgradeable", + "sourceName": "@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/desci-contracts/artifacts/contracts/DpidAliasRegistry.sol/DpidAliasRegistry.json b/desci-contracts/artifacts/contracts/DpidAliasRegistry.sol/DpidAliasRegistry.json index 9aed92323..842f1f8f0 100644 --- a/desci-contracts/artifacts/contracts/DpidAliasRegistry.sol/DpidAliasRegistry.json +++ b/desci-contracts/artifacts/contracts/DpidAliasRegistry.sol/DpidAliasRegistry.json @@ -102,6 +102,32 @@ "name": "OwnershipTransferred", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -140,19 +166,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [], - "name": "firstDpid", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [], "name": "freezeMigration", @@ -203,13 +216,7 @@ "type": "function" }, { - "inputs": [ - { - "internalType": "uint256", - "name": "_firstDpid", - "type": "uint256" - } - ], + "inputs": [], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", @@ -335,6 +342,26 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "pause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -399,6 +426,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_nextDpid", + "type": "uint256" + } + ], + "name": "setNextDpid", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -412,6 +452,13 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "unpause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -431,8 +478,8 @@ "type": "function" } ], - "bytecode": "0x60806040523480156200001157600080fd5b50620000226200002860201b60201c565b620001d3565b600060019054906101000a900460ff16156200007b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000729062000127565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff161015620000ed5760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff604051620000e4919062000149565b60405180910390a15b565b6000620000fe60278362000166565b91506200010b8262000184565b604082019050919050565b620001218162000177565b82525050565b600060208201905081810360008301526200014281620000ef565b9050919050565b600060208201905062000160600083018462000116565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b61281d80620001e36000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806382b7b500116100a2578063b9e2924111610071578063b9e29241146102cc578063cfb452b5146102ea578063ded8896b14610308578063f2fde38b14610324578063fe4b84df146103405761010b565b806382b7b500146102305780638da5cb5b14610260578063afc269111461027e578063b724de3a1461029c5761010b565b80635893253c116100de5780635893253c14610196578063715018a6146101c6578063788243d5146101d0578063810a9afa146102005761010b565b80630d70b3aa14610110578063144ae8551461011a5780634f896d4f14610136578063587a8cbf14610166575b600080fd5b61011861035c565b005b610134600480360381019061012f91906111f4565b610381565b005b610150600480360381019061014b9190611173565b61043f565b60405161015d919061173e565b60405180910390f35b610180600480360381019061017b9190611132565b6104e4565b60405161018d9190611882565b60405180910390f35b6101b060048036038101906101ab9190611173565b610512565b6040516101bd919061173e565b60405180910390f35b6101ce6105b2565b005b6101ea60048036038101906101e59190611173565b6105c6565b6040516101f791906116ed565b60405180910390f35b61021a60048036038101906102159190611173565b610604565b6040516102279190611860565b60405180910390f35b61024a600480360381019061024591906110ed565b610782565b6040516102579190611882565b60405180910390f35b6102686107ad565b60405161027591906116ed565b60405180910390f35b6102866107d7565b6040516102939190611882565b60405180910390f35b6102b660048036038101906102b191906110ed565b6107dd565b6040516102c39190611882565b60405180910390f35b6102d46108f2565b6040516102e19190611708565b60405180910390f35b6102f2610905565b6040516102ff9190611882565b60405180910390f35b610322600480360381019061031d919061119c565b61090b565b005b61033e600480360381019061033991906110c4565b610b00565b005b61035a60048036038101906103559190611173565b610b84565b005b610364610cd1565b6001606760006101000a81548160ff021916908315150217905550565b610389610cd1565b60001515606760009054906101000a900460ff161515146103df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d6906117a0565b60405180910390fd5b80606a600084815260200190815260200160002081816103ff9190612740565b9050507fa9c55ebaa1fada408bd72c2f0ea7c27f5444b105bcff12c5381baac912156ada82826040516104339291906118cf565b60405180910390a15050565b606060686000838152602001908152602001600020805461045f906120f6565b80601f016020809104026020016040519081016040528092919081815260200182805461048b906120f6565b80156104d85780601f106104ad576101008083540402835291602001916104d8565b820191906000526020600020905b8154815290600101906020018083116104bb57829003601f168201915b50505050509050919050565b6069818051602081018201805184825260208301602085012081835280955050505050506000915090505481565b60686020528060005260406000206000915090508054610531906120f6565b80601f016020809104026020016040519081016040528092919081815260200182805461055d906120f6565b80156105aa5780601f1061057f576101008083540402835291602001916105aa565b820191906000526020600020905b81548152906001019060200180831161058d57829003601f168201915b505050505081565b6105ba610cd1565b6105c46000610d4f565b565b606a6020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081565b61060c610efa565b606a60008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805480602002602001604051908101604052809291908181526020016000905b8282101561077357838290600052602060002090600202016040518060400160405290816000820180546106d8906120f6565b80601f0160208091040260200160405190810160405280929190818152602001828054610704906120f6565b80156107515780601f1061072657610100808354040283529160200191610751565b820191906000526020600020905b81548152906001019060200180831161073457829003601f168201915b50505050508152602001600182015481525050815260200190600101906106a5565b50505050815250509050919050565b6000606983836040516107969291906116d4565b908152602001604051809103902054905092915050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60665481565b600082826000606983836040516107f59291906116d4565b90815260200160405180910390205414610844576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083b906117c0565b60405180910390fd5b60006066549050858560686000848152602001908152602001600020919061086d929190610f2a565b5080606987876040516108819291906116d4565b9081526020016040518091039020819055507f96a65efbb6991f67fc8a4c7550fcfd08f1968737d2f5adcded5cd937b3cc0f3d8187876040516108c69392919061189d565b60405180910390a1606660008154809291906108e190612175565b919050555080935050505092915050565b606760009054906101000a900460ff1681565b60655481565b81816000606983836040516109219291906116d4565b90815260200160405180910390205414610970576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610967906117c0565b60405180910390fd5b6000606860008781526020019081526020016000208054610990906120f6565b9050146109d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c990611760565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16606a600087815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6d90611840565b60405180910390fd5b8383606860008881526020019081526020016000209190610a98929190610f2a565b508460698585604051610aac9291906116d4565b9081526020016040518091039020819055507f442b41840a10393534508176faee6f70b1870707dc24573b67d49f28cbac7f1c858585604051610af19392919061189d565b60405180910390a15050505050565b610b08610cd1565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6f90611780565b60405180910390fd5b610b8181610d4f565b50565b60008060019054906101000a900460ff16159050808015610bb55750600160008054906101000a900460ff1660ff16105b80610be25750610bc430610e15565b158015610be15750600160008054906101000a900460ff1660ff16145b5b610c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c18906117e0565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610c5e576001600060016101000a81548160ff0219169083151502179055505b610c66610e38565b81606581905550816066819055508015610ccd5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610cc49190611723565b60405180910390a15b5050565b610cd9610e91565b73ffffffffffffffffffffffffffffffffffffffff16610cf76107ad565b73ffffffffffffffffffffffffffffffffffffffff1614610d4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4490611800565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16610e87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7e90611820565b60405180910390fd5b610e8f610e99565b565b600033905090565b600060019054906101000a900460ff16610ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edf90611820565b60405180910390fd5b610ef8610ef3610e91565b610d4f565b565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b828054610f36906120f6565b90600052602060002090601f016020900481019282610f585760008555610f9f565b82601f10610f7157803560ff1916838001178555610f9f565b82800160010185558215610f9f579182015b82811115610f9e578235825591602001919060010190610f83565b5b509050610fac9190610fb0565b5090565b5b80821115610fc9576000816000905550600101610fb1565b5090565b6000610fe0610fdb846119f6565b6119d1565b905082815260208101848484011115610ff857600080fd5b611003848285612028565b509392505050565b60008135905061101a816127b4565b92915050565b60008083601f84011261103257600080fd5b8235905067ffffffffffffffff81111561104b57600080fd5b60208301915083600182028301111561106357600080fd5b9250929050565b600082601f83011261107b57600080fd5b813561108b848260208601610fcd565b91505092915050565b6000604082840312156110a657600080fd5b81905092915050565b6000813590506110be816127cb565b92915050565b6000602082840312156110d657600080fd5b60006110e48482850161100b565b91505092915050565b6000806020838503121561110057600080fd5b600083013567ffffffffffffffff81111561111a57600080fd5b61112685828601611020565b92509250509250929050565b60006020828403121561114457600080fd5b600082013567ffffffffffffffff81111561115e57600080fd5b61116a8482850161106a565b91505092915050565b60006020828403121561118557600080fd5b6000611193848285016110af565b91505092915050565b6000806000604084860312156111b157600080fd5b60006111bf868287016110af565b935050602084013567ffffffffffffffff8111156111dc57600080fd5b6111e886828701611020565b92509250509250925092565b6000806040838503121561120757600080fd5b6000611215858286016110af565b925050602083013567ffffffffffffffff81111561123257600080fd5b61123e85828601611094565b9150509250929050565b6000611254838361162a565b905092915050565b60006112688383611679565b905092915050565b61127981611d70565b82525050565b61128881611d70565b82525050565b600061129a8385611ad3565b9350836020840285016112ac84611a3e565b8060005b878110156112f05784840389526112c78284611cdb565b6112d18582611248565b94506112dc83611ab9565b925060208a019950506001810190506112b0565b50829750879450505050509392505050565b600061130d82611a8d565b6113178185611ad3565b93508360208202850161132985611a48565b8060005b858110156113655784840389528151611346858261125c565b945061135183611ac6565b925060208a0199505060018101905061132d565b50829750879550505050505092915050565b61138081611d82565b82525050565b61138f81611e6b565b82525050565b60006113a18385611ae4565b93506113ae838584612028565b6113b7836123cc565b840190509392505050565b60006113ce8385611af5565b93506113db838584612028565b6113e4836123cc565b840190509392505050565b60006113fb8385611b06565b9350611408838584612028565b82840190509392505050565b600061141f82611aae565b6114298185611ae4565b9350611439818560208601612037565b611442816123cc565b840191505092915050565b600061145882611aae565b6114628185611af5565b9350611472818560208601612037565b61147b816123cc565b840191505092915050565b6000611493601583611af5565b915061149e82612458565b602082019050919050565b60006114b6602683611af5565b91506114c182612481565b604082019050919050565b60006114d9601383611af5565b91506114e4826124d0565b602082019050919050565b60006114fc601983611af5565b9150611507826124f9565b602082019050919050565b600061151f602e83611af5565b915061152a82612522565b604082019050919050565b6000611542602083611af5565b915061154d82612571565b602082019050919050565b6000611565602b83611af5565b91506115708261259a565b604082019050919050565b6000611588601983611af5565b9150611593826125e9565b602082019050919050565b6000604083016115b16000840184611c16565b6115be6000860182611270565b506115cc6020840184611c2d565b85830360208701526115df83828461128e565b925050508091505092915050565b60006040830160008301516116056000860182611270565b506020830151848203602086015261161d8282611302565b9150508091505092915050565b60006040830161163d6000840184611c84565b8583036000870152611650838284611395565b925050506116616020840184611cff565b61166e60208601826116b6565b508091505092915050565b600060408301600083015184820360008601526116968282611414565b91505060208301516116ab60208601826116b6565b508091505092915050565b6116bf81611dae565b82525050565b6116ce81611dae565b82525050565b60006116e18284866113ef565b91508190509392505050565b6000602082019050611702600083018461127f565b92915050565b600060208201905061171d6000830184611377565b92915050565b60006020820190506117386000830184611386565b92915050565b60006020820190508181036000830152611758818461144d565b905092915050565b6000602082019050818103600083015261177981611486565b9050919050565b60006020820190508181036000830152611799816114a9565b9050919050565b600060208201905081810360008301526117b9816114cc565b9050919050565b600060208201905081810360008301526117d9816114ef565b9050919050565b600060208201905081810360008301526117f981611512565b9050919050565b6000602082019050818103600083015261181981611535565b9050919050565b6000602082019050818103600083015261183981611558565b9050919050565b600060208201905081810360008301526118598161157b565b9050919050565b6000602082019050818103600083015261187a81846115ed565b905092915050565b600060208201905061189760008301846116c5565b92915050565b60006040820190506118b260008301866116c5565b81810360208301526118c58184866113c2565b9050949350505050565b60006040820190506118e460008301856116c5565b81810360208301526118f6818461159e565b90509392505050565b6000808335600160200384360303811261191857600080fd5b80840192508235915067ffffffffffffffff82111561193657600080fd5b60208301925060208202360383131561194e57600080fd5b509250929050565b6000808335600160200384360303811261196f57600080fd5b80840192508235915067ffffffffffffffff82111561198d57600080fd5b6020830192506001820236038313156119a557600080fd5b509250929050565b6000823560016040038336030381126119c557600080fd5b80830191505092915050565b60006119db6119ec565b90506119e78282612144565b919050565b6000604051905090565b600067ffffffffffffffff821115611a1157611a10612269565b5b611a1a826123cc565b9050602081019050919050565b6000819050611a37826002611d16565b9050919050565b6000819050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b600082905092915050565b600081519050919050565b600081549050919050565b600082905092915050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6020841060008114611b6a57601f841160018114611b3a57611b338685612128565b8355611b64565b611b4383611a6d565b611b586020601f880104820160018301611dd3565b611b628785612612565b505b50611bb3565b611b7382611a6d565b6020601f8701048101601f87168015611b9457611b938160018403612298565b5b611ba66020601f890104840183611dd3565b6001886002021785555050505b5050505050565b6020831060008114611c05576020851060008114611be357611bdc8685612128565b8355611bff565b8360ff1916935083611bf484611a6d565b556001866002020183555b50611c0f565b6001856002020182555b5050505050565b6000611c25602084018461100b565b905092915050565b60008083356001602003843603038112611c4657600080fd5b83810192508235915060208301925067ffffffffffffffff821115611c6a57600080fd5b602082023603841315611c7c57600080fd5b509250929050565b60008083356001602003843603038112611c9d57600080fd5b83810192508235915060208301925067ffffffffffffffff821115611cc157600080fd5b600182023603841315611cd357600080fd5b509250929050565b600082356001604003833603038112611cf357600080fd5b82810191505092915050565b6000611d0e60208401846110af565b905092915050565b6000611d2182611dae565b9150611d2c83611dae565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611d6557611d6461220b565b5b828202905092915050565b6000611d7b82611d8e565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b611dd0600082612377565b50565b5b81811015611df257611de7600082612440565b600181019050611dd4565b5050565b5b81811015611e1557611e0a600082612422565b600281019050611df7565b5050565b81811015611e3757611e2c600082612440565b600181019050611e19565b5050565b611e486000808301612404565b611e56600060018301612440565b50565b6000611e6482611e7d565b9050919050565b6000611e7682611db8565b9050919050565b6000611e8882611e8f565b9050919050565b6000611e9a82611d8e565b9050919050565b6000611eac82611dae565b9050919050565b611ebd8383611a82565b611ec78183612313565b611ed083611a3e565b611ed983611a58565b6000805b84811015611f1257611eef84886119ad565b611efa818486612771565b60208501945060028401935050600181019050611edd565b5050505050505050565b611f268383611aa3565b67ffffffffffffffff811115611f3f57611f3e612269565b5b611f4982546120f6565b600080601f8411601f84111715611f6657611f6385611a6d565b90505b601f831115611f99576020601f85010481016020851015611f85578190505b611f976020601f860104830182611dd3565b505b601f841160018114611fc65760008515611fb4578388013590505b611fbe8682612128565b87555061201e565b601f1985168260005b82811015611ff457858a01358255600182019150602086019550602081019050611fcf565b8783101561201157858a013561200d601f8a16826121be565b8355505b6001600289020189555050505b5050505050505050565b82818337600083830152505050565b60005b8381101561205557808201518184015260208101905061203a565b83811115612064576000848401525b50505050565b60008101600083018061207c816122e7565b905061208881846126fd565b505050600181016020830161209d81856118ff565b6120a8818386612720565b505050505050565b60008101600083016120c28185611956565b6120cd818386612730565b505050506001810160208301806120e3816122fd565b90506120ef818461274e565b5050505050565b6000600282049050600182168061210e57607f821691505b602082108114156121225761212161223a565b5b50919050565b600061213483836121be565b9150826002028217905092915050565b61214d826123cc565b810181811067ffffffffffffffff8211171561216c5761216b612269565b5b80604052505050565b600061218082611dae565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156121b3576121b261220b565b5b600182019050919050565b60006121cf600019846008026123f7565b1980831691505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6122c87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff836020036008026123f7565b815481168255505050565b6000819050919050565b6000819050919050565b600081356122f4816127b4565b80915050919050565b6000813561230a816127cb565b80915050919050565b6801000000000000000082111561232d5761232c612269565b5b61233681611a98565b828255808310156123725761234a81611a27565b61235384611a27565b61235c84611a58565b81810183820161236c8183611df6565b50505050505b505050565b6801000000000000000082111561239157612390612269565b5b805461239c816120f6565b808411156123b1576123b084828486611bba565b5b808410156123c6576123c584828486611b11565b5b50505050565b6000601f19601f8301169050919050565b60008160001b9050919050565b600082821b905092915050565b600082821c905092915050565b60008214612415576124146121dc565b5b61241e81611dc5565b5050565b60008214612433576124326121dc565b5b61243c81611e3b565b5050565b6124486127e2565b61245381848461278f565b505050565b7f6470696420616c72656164792075706772616465640000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f6d6967726174696f6e2069732066726f7a656e00000000000000000000000000600082015250565b7f73747265616d20616c7265616479206861732061206450494400000000000000600082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f756e617574686f72697a65642064706964207570677261646500000000000000600082015250565b61261b81611a6d565b612626838254612128565b8083556000825550505050565b600073ffffffffffffffffffffffffffffffffffffffff612653846123dd565b9350801983169250808416831791505092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612695846123dd565b9350801983169250808416831791505092915050565b6000600883026126db7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826123ea565b6126e586836123ea565b95508019841693508086168417925050509392505050565b61270682611e59565b612719612712826122d3565b8354612633565b8255505050565b61272b838383611eb3565b505050565b61273b838383611f1c565b505050565b61274a828261206a565b5050565b61275782611ea1565b61276a612763826122dd565b8354612669565b8255505050565b81156127805761277f6121dc565b5b61278a83826120b0565b505050565b61279883611ea1565b6127ac6127a4826122dd565b8484546126ab565b825550505050565b6127bd81611d70565b81146127c857600080fd5b50565b6127d481611dae565b81146127df57600080fd5b50565b60009056fea26469706673582212203cd9493558aa831bec9e62a003cae25d442665c9c02edcb7c1725ad3e5bb65db64736f6c63430008040033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061010b5760003560e01c806382b7b500116100a2578063b9e2924111610071578063b9e29241146102cc578063cfb452b5146102ea578063ded8896b14610308578063f2fde38b14610324578063fe4b84df146103405761010b565b806382b7b500146102305780638da5cb5b14610260578063afc269111461027e578063b724de3a1461029c5761010b565b80635893253c116100de5780635893253c14610196578063715018a6146101c6578063788243d5146101d0578063810a9afa146102005761010b565b80630d70b3aa14610110578063144ae8551461011a5780634f896d4f14610136578063587a8cbf14610166575b600080fd5b61011861035c565b005b610134600480360381019061012f91906111f4565b610381565b005b610150600480360381019061014b9190611173565b61043f565b60405161015d919061173e565b60405180910390f35b610180600480360381019061017b9190611132565b6104e4565b60405161018d9190611882565b60405180910390f35b6101b060048036038101906101ab9190611173565b610512565b6040516101bd919061173e565b60405180910390f35b6101ce6105b2565b005b6101ea60048036038101906101e59190611173565b6105c6565b6040516101f791906116ed565b60405180910390f35b61021a60048036038101906102159190611173565b610604565b6040516102279190611860565b60405180910390f35b61024a600480360381019061024591906110ed565b610782565b6040516102579190611882565b60405180910390f35b6102686107ad565b60405161027591906116ed565b60405180910390f35b6102866107d7565b6040516102939190611882565b60405180910390f35b6102b660048036038101906102b191906110ed565b6107dd565b6040516102c39190611882565b60405180910390f35b6102d46108f2565b6040516102e19190611708565b60405180910390f35b6102f2610905565b6040516102ff9190611882565b60405180910390f35b610322600480360381019061031d919061119c565b61090b565b005b61033e600480360381019061033991906110c4565b610b00565b005b61035a60048036038101906103559190611173565b610b84565b005b610364610cd1565b6001606760006101000a81548160ff021916908315150217905550565b610389610cd1565b60001515606760009054906101000a900460ff161515146103df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d6906117a0565b60405180910390fd5b80606a600084815260200190815260200160002081816103ff9190612740565b9050507fa9c55ebaa1fada408bd72c2f0ea7c27f5444b105bcff12c5381baac912156ada82826040516104339291906118cf565b60405180910390a15050565b606060686000838152602001908152602001600020805461045f906120f6565b80601f016020809104026020016040519081016040528092919081815260200182805461048b906120f6565b80156104d85780601f106104ad576101008083540402835291602001916104d8565b820191906000526020600020905b8154815290600101906020018083116104bb57829003601f168201915b50505050509050919050565b6069818051602081018201805184825260208301602085012081835280955050505050506000915090505481565b60686020528060005260406000206000915090508054610531906120f6565b80601f016020809104026020016040519081016040528092919081815260200182805461055d906120f6565b80156105aa5780601f1061057f576101008083540402835291602001916105aa565b820191906000526020600020905b81548152906001019060200180831161058d57829003601f168201915b505050505081565b6105ba610cd1565b6105c46000610d4f565b565b606a6020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081565b61060c610efa565b606a60008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805480602002602001604051908101604052809291908181526020016000905b8282101561077357838290600052602060002090600202016040518060400160405290816000820180546106d8906120f6565b80601f0160208091040260200160405190810160405280929190818152602001828054610704906120f6565b80156107515780601f1061072657610100808354040283529160200191610751565b820191906000526020600020905b81548152906001019060200180831161073457829003601f168201915b50505050508152602001600182015481525050815260200190600101906106a5565b50505050815250509050919050565b6000606983836040516107969291906116d4565b908152602001604051809103902054905092915050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60665481565b600082826000606983836040516107f59291906116d4565b90815260200160405180910390205414610844576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083b906117c0565b60405180910390fd5b60006066549050858560686000848152602001908152602001600020919061086d929190610f2a565b5080606987876040516108819291906116d4565b9081526020016040518091039020819055507f96a65efbb6991f67fc8a4c7550fcfd08f1968737d2f5adcded5cd937b3cc0f3d8187876040516108c69392919061189d565b60405180910390a1606660008154809291906108e190612175565b919050555080935050505092915050565b606760009054906101000a900460ff1681565b60655481565b81816000606983836040516109219291906116d4565b90815260200160405180910390205414610970576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610967906117c0565b60405180910390fd5b6000606860008781526020019081526020016000208054610990906120f6565b9050146109d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c990611760565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16606a600087815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6d90611840565b60405180910390fd5b8383606860008881526020019081526020016000209190610a98929190610f2a565b508460698585604051610aac9291906116d4565b9081526020016040518091039020819055507f442b41840a10393534508176faee6f70b1870707dc24573b67d49f28cbac7f1c858585604051610af19392919061189d565b60405180910390a15050505050565b610b08610cd1565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6f90611780565b60405180910390fd5b610b8181610d4f565b50565b60008060019054906101000a900460ff16159050808015610bb55750600160008054906101000a900460ff1660ff16105b80610be25750610bc430610e15565b158015610be15750600160008054906101000a900460ff1660ff16145b5b610c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c18906117e0565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610c5e576001600060016101000a81548160ff0219169083151502179055505b610c66610e38565b81606581905550816066819055508015610ccd5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610cc49190611723565b60405180910390a15b5050565b610cd9610e91565b73ffffffffffffffffffffffffffffffffffffffff16610cf76107ad565b73ffffffffffffffffffffffffffffffffffffffff1614610d4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4490611800565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16610e87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7e90611820565b60405180910390fd5b610e8f610e99565b565b600033905090565b600060019054906101000a900460ff16610ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edf90611820565b60405180910390fd5b610ef8610ef3610e91565b610d4f565b565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b828054610f36906120f6565b90600052602060002090601f016020900481019282610f585760008555610f9f565b82601f10610f7157803560ff1916838001178555610f9f565b82800160010185558215610f9f579182015b82811115610f9e578235825591602001919060010190610f83565b5b509050610fac9190610fb0565b5090565b5b80821115610fc9576000816000905550600101610fb1565b5090565b6000610fe0610fdb846119f6565b6119d1565b905082815260208101848484011115610ff857600080fd5b611003848285612028565b509392505050565b60008135905061101a816127b4565b92915050565b60008083601f84011261103257600080fd5b8235905067ffffffffffffffff81111561104b57600080fd5b60208301915083600182028301111561106357600080fd5b9250929050565b600082601f83011261107b57600080fd5b813561108b848260208601610fcd565b91505092915050565b6000604082840312156110a657600080fd5b81905092915050565b6000813590506110be816127cb565b92915050565b6000602082840312156110d657600080fd5b60006110e48482850161100b565b91505092915050565b6000806020838503121561110057600080fd5b600083013567ffffffffffffffff81111561111a57600080fd5b61112685828601611020565b92509250509250929050565b60006020828403121561114457600080fd5b600082013567ffffffffffffffff81111561115e57600080fd5b61116a8482850161106a565b91505092915050565b60006020828403121561118557600080fd5b6000611193848285016110af565b91505092915050565b6000806000604084860312156111b157600080fd5b60006111bf868287016110af565b935050602084013567ffffffffffffffff8111156111dc57600080fd5b6111e886828701611020565b92509250509250925092565b6000806040838503121561120757600080fd5b6000611215858286016110af565b925050602083013567ffffffffffffffff81111561123257600080fd5b61123e85828601611094565b9150509250929050565b6000611254838361162a565b905092915050565b60006112688383611679565b905092915050565b61127981611d70565b82525050565b61128881611d70565b82525050565b600061129a8385611ad3565b9350836020840285016112ac84611a3e565b8060005b878110156112f05784840389526112c78284611cdb565b6112d18582611248565b94506112dc83611ab9565b925060208a019950506001810190506112b0565b50829750879450505050509392505050565b600061130d82611a8d565b6113178185611ad3565b93508360208202850161132985611a48565b8060005b858110156113655784840389528151611346858261125c565b945061135183611ac6565b925060208a0199505060018101905061132d565b50829750879550505050505092915050565b61138081611d82565b82525050565b61138f81611e6b565b82525050565b60006113a18385611ae4565b93506113ae838584612028565b6113b7836123cc565b840190509392505050565b60006113ce8385611af5565b93506113db838584612028565b6113e4836123cc565b840190509392505050565b60006113fb8385611b06565b9350611408838584612028565b82840190509392505050565b600061141f82611aae565b6114298185611ae4565b9350611439818560208601612037565b611442816123cc565b840191505092915050565b600061145882611aae565b6114628185611af5565b9350611472818560208601612037565b61147b816123cc565b840191505092915050565b6000611493601583611af5565b915061149e82612458565b602082019050919050565b60006114b6602683611af5565b91506114c182612481565b604082019050919050565b60006114d9601383611af5565b91506114e4826124d0565b602082019050919050565b60006114fc601983611af5565b9150611507826124f9565b602082019050919050565b600061151f602e83611af5565b915061152a82612522565b604082019050919050565b6000611542602083611af5565b915061154d82612571565b602082019050919050565b6000611565602b83611af5565b91506115708261259a565b604082019050919050565b6000611588601983611af5565b9150611593826125e9565b602082019050919050565b6000604083016115b16000840184611c16565b6115be6000860182611270565b506115cc6020840184611c2d565b85830360208701526115df83828461128e565b925050508091505092915050565b60006040830160008301516116056000860182611270565b506020830151848203602086015261161d8282611302565b9150508091505092915050565b60006040830161163d6000840184611c84565b8583036000870152611650838284611395565b925050506116616020840184611cff565b61166e60208601826116b6565b508091505092915050565b600060408301600083015184820360008601526116968282611414565b91505060208301516116ab60208601826116b6565b508091505092915050565b6116bf81611dae565b82525050565b6116ce81611dae565b82525050565b60006116e18284866113ef565b91508190509392505050565b6000602082019050611702600083018461127f565b92915050565b600060208201905061171d6000830184611377565b92915050565b60006020820190506117386000830184611386565b92915050565b60006020820190508181036000830152611758818461144d565b905092915050565b6000602082019050818103600083015261177981611486565b9050919050565b60006020820190508181036000830152611799816114a9565b9050919050565b600060208201905081810360008301526117b9816114cc565b9050919050565b600060208201905081810360008301526117d9816114ef565b9050919050565b600060208201905081810360008301526117f981611512565b9050919050565b6000602082019050818103600083015261181981611535565b9050919050565b6000602082019050818103600083015261183981611558565b9050919050565b600060208201905081810360008301526118598161157b565b9050919050565b6000602082019050818103600083015261187a81846115ed565b905092915050565b600060208201905061189760008301846116c5565b92915050565b60006040820190506118b260008301866116c5565b81810360208301526118c58184866113c2565b9050949350505050565b60006040820190506118e460008301856116c5565b81810360208301526118f6818461159e565b90509392505050565b6000808335600160200384360303811261191857600080fd5b80840192508235915067ffffffffffffffff82111561193657600080fd5b60208301925060208202360383131561194e57600080fd5b509250929050565b6000808335600160200384360303811261196f57600080fd5b80840192508235915067ffffffffffffffff82111561198d57600080fd5b6020830192506001820236038313156119a557600080fd5b509250929050565b6000823560016040038336030381126119c557600080fd5b80830191505092915050565b60006119db6119ec565b90506119e78282612144565b919050565b6000604051905090565b600067ffffffffffffffff821115611a1157611a10612269565b5b611a1a826123cc565b9050602081019050919050565b6000819050611a37826002611d16565b9050919050565b6000819050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b600082905092915050565b600081519050919050565b600081549050919050565b600082905092915050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6020841060008114611b6a57601f841160018114611b3a57611b338685612128565b8355611b64565b611b4383611a6d565b611b586020601f880104820160018301611dd3565b611b628785612612565b505b50611bb3565b611b7382611a6d565b6020601f8701048101601f87168015611b9457611b938160018403612298565b5b611ba66020601f890104840183611dd3565b6001886002021785555050505b5050505050565b6020831060008114611c05576020851060008114611be357611bdc8685612128565b8355611bff565b8360ff1916935083611bf484611a6d565b556001866002020183555b50611c0f565b6001856002020182555b5050505050565b6000611c25602084018461100b565b905092915050565b60008083356001602003843603038112611c4657600080fd5b83810192508235915060208301925067ffffffffffffffff821115611c6a57600080fd5b602082023603841315611c7c57600080fd5b509250929050565b60008083356001602003843603038112611c9d57600080fd5b83810192508235915060208301925067ffffffffffffffff821115611cc157600080fd5b600182023603841315611cd357600080fd5b509250929050565b600082356001604003833603038112611cf357600080fd5b82810191505092915050565b6000611d0e60208401846110af565b905092915050565b6000611d2182611dae565b9150611d2c83611dae565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611d6557611d6461220b565b5b828202905092915050565b6000611d7b82611d8e565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b611dd0600082612377565b50565b5b81811015611df257611de7600082612440565b600181019050611dd4565b5050565b5b81811015611e1557611e0a600082612422565b600281019050611df7565b5050565b81811015611e3757611e2c600082612440565b600181019050611e19565b5050565b611e486000808301612404565b611e56600060018301612440565b50565b6000611e6482611e7d565b9050919050565b6000611e7682611db8565b9050919050565b6000611e8882611e8f565b9050919050565b6000611e9a82611d8e565b9050919050565b6000611eac82611dae565b9050919050565b611ebd8383611a82565b611ec78183612313565b611ed083611a3e565b611ed983611a58565b6000805b84811015611f1257611eef84886119ad565b611efa818486612771565b60208501945060028401935050600181019050611edd565b5050505050505050565b611f268383611aa3565b67ffffffffffffffff811115611f3f57611f3e612269565b5b611f4982546120f6565b600080601f8411601f84111715611f6657611f6385611a6d565b90505b601f831115611f99576020601f85010481016020851015611f85578190505b611f976020601f860104830182611dd3565b505b601f841160018114611fc65760008515611fb4578388013590505b611fbe8682612128565b87555061201e565b601f1985168260005b82811015611ff457858a01358255600182019150602086019550602081019050611fcf565b8783101561201157858a013561200d601f8a16826121be565b8355505b6001600289020189555050505b5050505050505050565b82818337600083830152505050565b60005b8381101561205557808201518184015260208101905061203a565b83811115612064576000848401525b50505050565b60008101600083018061207c816122e7565b905061208881846126fd565b505050600181016020830161209d81856118ff565b6120a8818386612720565b505050505050565b60008101600083016120c28185611956565b6120cd818386612730565b505050506001810160208301806120e3816122fd565b90506120ef818461274e565b5050505050565b6000600282049050600182168061210e57607f821691505b602082108114156121225761212161223a565b5b50919050565b600061213483836121be565b9150826002028217905092915050565b61214d826123cc565b810181811067ffffffffffffffff8211171561216c5761216b612269565b5b80604052505050565b600061218082611dae565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156121b3576121b261220b565b5b600182019050919050565b60006121cf600019846008026123f7565b1980831691505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6122c87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff836020036008026123f7565b815481168255505050565b6000819050919050565b6000819050919050565b600081356122f4816127b4565b80915050919050565b6000813561230a816127cb565b80915050919050565b6801000000000000000082111561232d5761232c612269565b5b61233681611a98565b828255808310156123725761234a81611a27565b61235384611a27565b61235c84611a58565b81810183820161236c8183611df6565b50505050505b505050565b6801000000000000000082111561239157612390612269565b5b805461239c816120f6565b808411156123b1576123b084828486611bba565b5b808410156123c6576123c584828486611b11565b5b50505050565b6000601f19601f8301169050919050565b60008160001b9050919050565b600082821b905092915050565b600082821c905092915050565b60008214612415576124146121dc565b5b61241e81611dc5565b5050565b60008214612433576124326121dc565b5b61243c81611e3b565b5050565b6124486127e2565b61245381848461278f565b505050565b7f6470696420616c72656164792075706772616465640000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f6d6967726174696f6e2069732066726f7a656e00000000000000000000000000600082015250565b7f73747265616d20616c7265616479206861732061206450494400000000000000600082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f756e617574686f72697a65642064706964207570677261646500000000000000600082015250565b61261b81611a6d565b612626838254612128565b8083556000825550505050565b600073ffffffffffffffffffffffffffffffffffffffff612653846123dd565b9350801983169250808416831791505092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612695846123dd565b9350801983169250808416831791505092915050565b6000600883026126db7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826123ea565b6126e586836123ea565b95508019841693508086168417925050509392505050565b61270682611e59565b612719612712826122d3565b8354612633565b8255505050565b61272b838383611eb3565b505050565b61273b838383611f1c565b505050565b61274a828261206a565b5050565b61275782611ea1565b61276a612763826122dd565b8354612669565b8255505050565b81156127805761277f6121dc565b5b61278a83826120b0565b505050565b61279883611ea1565b6127ac6127a4826122dd565b8484546126ab565b825550505050565b6127bd81611d70565b81146127c857600080fd5b50565b6127d481611dae565b81146127df57600080fd5b50565b60009056fea26469706673582212203cd9493558aa831bec9e62a003cae25d442665c9c02edcb7c1725ad3e5bb65db64736f6c63430008040033", + "bytecode": "0x60806040523480156200001157600080fd5b50620000226200002860201b60201c565b620001d3565b600060019054906101000a900460ff16156200007b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000729062000127565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff161015620000ed5760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff604051620000e4919062000149565b60405180910390a15b565b6000620000fe60278362000166565b91506200010b8262000184565b604082019050919050565b620001218162000177565b82525050565b600060208201905081810360008301526200014281620000ef565b9050919050565b600060208201905062000160600083018462000116565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b612bc280620001e36000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c80638129fc1c116100ad578063afc2691111610071578063afc26911146102f7578063b724de3a14610315578063b9e2924114610345578063ded8896b14610363578063f2fde38b1461037f5761012c565b80638129fc1c1461027957806382b7b500146102835780638456cb59146102b35780638da5cb5b146102bd578063a5ad8ac6146102db5761012c565b80635893253c116100f45780635893253c146101c15780635c975abb146101f1578063715018a61461020f578063788243d514610219578063810a9afa146102495761012c565b80630d70b3aa14610131578063144ae8551461013b5780633f4ba83a146101575780634f896d4f14610161578063587a8cbf14610191575b600080fd5b61013961039b565b005b610155600480360381019061015091906114c1565b6103c0565b005b61015f61047e565b005b61017b60048036038101906101769190611440565b610498565b6040516101889190611a51565b60405180910390f35b6101ab60048036038101906101a691906113ff565b61053d565b6040516101b89190611bd5565b60405180910390f35b6101db60048036038101906101d69190611440565b61056b565b6040516101e89190611a51565b60405180910390f35b6101f961060b565b6040516102069190611a1b565b60405180910390f35b610217610622565b005b610233600480360381019061022e9190611440565b610636565b6040516102409190611a00565b60405180910390f35b610263600480360381019061025e9190611440565b610674565b6040516102709190611bb3565b60405180910390f35b6102816107f2565b005b61029d600480360381019061029891906113ba565b610940565b6040516102aa9190611bd5565b60405180910390f35b6102bb61096b565b005b6102c5610985565b6040516102d29190611a00565b60405180910390f35b6102f560048036038101906102f09190611440565b6109af565b005b6102ff6109c9565b60405161030c9190611bd5565b60405180910390f35b61032f600480360381019061032a91906113ba565b6109cf565b60405161033c9190611bd5565b60405180910390f35b61034d610aec565b60405161035a9190611a1b565b60405180910390f35b61037d60048036038101906103789190611469565b610aff565b005b61039960048036038101906103949190611391565b610cfc565b005b6103a3610d80565b6001609860006101000a81548160ff021916908315150217905550565b6103c8610d80565b60001515609860009054906101000a900460ff1615151461041e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161041590611ad3565b60405180910390fd5b80609b6000848152602001908152602001600020818161043e9190612ae5565b9050507fa9c55ebaa1fada408bd72c2f0ea7c27f5444b105bcff12c5381baac912156ada8282604051610472929190611c22565b60405180910390a15050565b610486610d80565b61048e610dfe565b610496610e47565b565b60606099600083815260200190815260200160002080546104b890612449565b80601f01602080910402602001604051908101604052809291908181526020018280546104e490612449565b80156105315780601f1061050657610100808354040283529160200191610531565b820191906000526020600020905b81548152906001019060200180831161051457829003601f168201915b50505050509050919050565b609a818051602081018201805184825260208301602085012081835280955050505050506000915090505481565b6099602052806000526040600020600091509050805461058a90612449565b80601f01602080910402602001604051908101604052809291908181526020018280546105b690612449565b80156106035780601f106105d857610100808354040283529160200191610603565b820191906000526020600020905b8154815290600101906020018083116105e657829003601f168201915b505050505081565b6000606560009054906101000a900460ff16905090565b61062a610d80565b6106346000610eaa565b565b609b6020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081565b61067c6111c7565b609b60008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805480602002602001604051908101604052809291908181526020016000905b828210156107e3578382906000526020600020906002020160405180604001604052908160008201805461074890612449565b80601f016020809104026020016040519081016040528092919081815260200182805461077490612449565b80156107c15780601f10610796576101008083540402835291602001916107c1565b820191906000526020600020905b8154815290600101906020018083116107a457829003601f168201915b5050505050815260200160018201548152505081526020019060010190610715565b50505050815250509050919050565b60008060019054906101000a900460ff161590508080156108235750600160008054906101000a900460ff1660ff16105b80610850575061083230610f70565b15801561084f5750600160008054906101000a900460ff1660ff16145b5b61088f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088690611b33565b60405180910390fd5b60016000806101000a81548160ff021916908360ff16021790555080156108cc576001600060016101000a81548160ff0219169083151502179055505b6108d4610f93565b6108dc610fec565b6108e4611045565b801561093d5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516109349190611a36565b60405180910390a15b50565b6000609a83836040516109549291906119e7565b908152602001604051809103902054905092915050565b610973610d80565b61097b6110a8565b610983611045565b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6109b7610d80565b6109bf610dfe565b8060978190555050565b60975481565b600082826000609a83836040516109e79291906119e7565b90815260200160405180910390205414610a36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2d90611b13565b60405180910390fd5b610a3e6110a8565b600060975490508585609960008481526020019081526020016000209190610a679291906111f7565b5080609a8787604051610a7b9291906119e7565b9081526020016040518091039020819055507f96a65efbb6991f67fc8a4c7550fcfd08f1968737d2f5adcded5cd937b3cc0f3d818787604051610ac093929190611bf0565b60405180910390a160976000815480929190610adb906124c8565b919050555080935050505092915050565b609860009054906101000a900460ff1681565b81816000609a8383604051610b159291906119e7565b90815260200160405180910390205414610b64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5b90611b13565b60405180910390fd5b610b6c6110a8565b6000609960008781526020019081526020016000208054610b8c90612449565b905014610bce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc590611a93565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16609b600087815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6990611b93565b60405180910390fd5b8383609960008881526020019081526020016000209190610c949291906111f7565b5084609a8585604051610ca89291906119e7565b9081526020016040518091039020819055507f442b41840a10393534508176faee6f70b1870707dc24573b67d49f28cbac7f1c858585604051610ced93929190611bf0565b60405180910390a15050505050565b610d04610d80565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6b90611ab3565b60405180910390fd5b610d7d81610eaa565b50565b610d886110f2565b73ffffffffffffffffffffffffffffffffffffffff16610da6610985565b73ffffffffffffffffffffffffffffffffffffffff1614610dfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df390611b53565b60405180910390fd5b565b610e0661060b565b610e45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3c90611a73565b60405180910390fd5b565b610e4f610dfe565b6000606560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa610e936110f2565b604051610ea09190611a00565b60405180910390a1565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16610fe2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd990611b73565b60405180910390fd5b610fea6110fa565b565b600060019054906101000a900460ff1661103b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103290611b73565b60405180910390fd5b61104361115b565b565b61104d6110a8565b6001606560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586110916110f2565b60405161109e9190611a00565b60405180910390a1565b6110b061060b565b156110f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e790611af3565b60405180910390fd5b565b600033905090565b600060019054906101000a900460ff16611149576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114090611b73565b60405180910390fd5b6111596111546110f2565b610eaa565b565b600060019054906101000a900460ff166111aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a190611b73565b60405180910390fd5b6000606560006101000a81548160ff021916908315150217905550565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b82805461120390612449565b90600052602060002090601f016020900481019282611225576000855561126c565b82601f1061123e57803560ff191683800117855561126c565b8280016001018555821561126c579182015b8281111561126b578235825591602001919060010190611250565b5b509050611279919061127d565b5090565b5b8082111561129657600081600090555060010161127e565b5090565b60006112ad6112a884611d49565b611d24565b9050828152602081018484840111156112c557600080fd5b6112d084828561237b565b509392505050565b6000813590506112e781612b59565b92915050565b60008083601f8401126112ff57600080fd5b8235905067ffffffffffffffff81111561131857600080fd5b60208301915083600182028301111561133057600080fd5b9250929050565b600082601f83011261134857600080fd5b813561135884826020860161129a565b91505092915050565b60006040828403121561137357600080fd5b81905092915050565b60008135905061138b81612b70565b92915050565b6000602082840312156113a357600080fd5b60006113b1848285016112d8565b91505092915050565b600080602083850312156113cd57600080fd5b600083013567ffffffffffffffff8111156113e757600080fd5b6113f3858286016112ed565b92509250509250929050565b60006020828403121561141157600080fd5b600082013567ffffffffffffffff81111561142b57600080fd5b61143784828501611337565b91505092915050565b60006020828403121561145257600080fd5b60006114608482850161137c565b91505092915050565b60008060006040848603121561147e57600080fd5b600061148c8682870161137c565b935050602084013567ffffffffffffffff8111156114a957600080fd5b6114b5868287016112ed565b92509250509250925092565b600080604083850312156114d457600080fd5b60006114e28582860161137c565b925050602083013567ffffffffffffffff8111156114ff57600080fd5b61150b85828601611361565b9150509250929050565b6000611521838361193d565b905092915050565b6000611535838361198c565b905092915050565b611546816120c3565b82525050565b611555816120c3565b82525050565b60006115678385611e26565b93508360208402850161157984611d91565b8060005b878110156115bd578484038952611594828461202e565b61159e8582611515565b94506115a983611e0c565b925060208a0199505060018101905061157d565b50829750879450505050509392505050565b60006115da82611de0565b6115e48185611e26565b9350836020820285016115f685611d9b565b8060005b8581101561163257848403895281516116138582611529565b945061161e83611e19565b925060208a019950506001810190506115fa565b50829750879550505050505092915050565b61164d816120d5565b82525050565b61165c816121be565b82525050565b600061166e8385611e37565b935061167b83858461237b565b6116848361271f565b840190509392505050565b600061169b8385611e48565b93506116a883858461237b565b6116b18361271f565b840190509392505050565b60006116c88385611e59565b93506116d583858461237b565b82840190509392505050565b60006116ec82611e01565b6116f68185611e37565b935061170681856020860161238a565b61170f8161271f565b840191505092915050565b600061172582611e01565b61172f8185611e48565b935061173f81856020860161238a565b6117488161271f565b840191505092915050565b6000611760601483611e48565b915061176b826127ab565b602082019050919050565b6000611783601583611e48565b915061178e826127d4565b602082019050919050565b60006117a6602683611e48565b91506117b1826127fd565b604082019050919050565b60006117c9601383611e48565b91506117d48261284c565b602082019050919050565b60006117ec601083611e48565b91506117f782612875565b602082019050919050565b600061180f601983611e48565b915061181a8261289e565b602082019050919050565b6000611832602e83611e48565b915061183d826128c7565b604082019050919050565b6000611855602083611e48565b915061186082612916565b602082019050919050565b6000611878602b83611e48565b91506118838261293f565b604082019050919050565b600061189b601983611e48565b91506118a68261298e565b602082019050919050565b6000604083016118c46000840184611f69565b6118d1600086018261153d565b506118df6020840184611f80565b85830360208701526118f283828461155b565b925050508091505092915050565b6000604083016000830151611918600086018261153d565b506020830151848203602086015261193082826115cf565b9150508091505092915050565b6000604083016119506000840184611fd7565b8583036000870152611963838284611662565b925050506119746020840184612052565b61198160208601826119c9565b508091505092915050565b600060408301600083015184820360008601526119a982826116e1565b91505060208301516119be60208601826119c9565b508091505092915050565b6119d281612101565b82525050565b6119e181612101565b82525050565b60006119f48284866116bc565b91508190509392505050565b6000602082019050611a15600083018461154c565b92915050565b6000602082019050611a306000830184611644565b92915050565b6000602082019050611a4b6000830184611653565b92915050565b60006020820190508181036000830152611a6b818461171a565b905092915050565b60006020820190508181036000830152611a8c81611753565b9050919050565b60006020820190508181036000830152611aac81611776565b9050919050565b60006020820190508181036000830152611acc81611799565b9050919050565b60006020820190508181036000830152611aec816117bc565b9050919050565b60006020820190508181036000830152611b0c816117df565b9050919050565b60006020820190508181036000830152611b2c81611802565b9050919050565b60006020820190508181036000830152611b4c81611825565b9050919050565b60006020820190508181036000830152611b6c81611848565b9050919050565b60006020820190508181036000830152611b8c8161186b565b9050919050565b60006020820190508181036000830152611bac8161188e565b9050919050565b60006020820190508181036000830152611bcd8184611900565b905092915050565b6000602082019050611bea60008301846119d8565b92915050565b6000604082019050611c0560008301866119d8565b8181036020830152611c1881848661168f565b9050949350505050565b6000604082019050611c3760008301856119d8565b8181036020830152611c4981846118b1565b90509392505050565b60008083356001602003843603038112611c6b57600080fd5b80840192508235915067ffffffffffffffff821115611c8957600080fd5b602083019250602082023603831315611ca157600080fd5b509250929050565b60008083356001602003843603038112611cc257600080fd5b80840192508235915067ffffffffffffffff821115611ce057600080fd5b602083019250600182023603831315611cf857600080fd5b509250929050565b600082356001604003833603038112611d1857600080fd5b80830191505092915050565b6000611d2e611d3f565b9050611d3a8282612497565b919050565b6000604051905090565b600067ffffffffffffffff821115611d6457611d636125bc565b5b611d6d8261271f565b9050602081019050919050565b6000819050611d8a826002612069565b9050919050565b6000819050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b600082905092915050565b600081519050919050565b600081549050919050565b600082905092915050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6020841060008114611ebd57601f841160018114611e8d57611e86868561247b565b8355611eb7565b611e9683611dc0565b611eab6020601f880104820160018301612126565b611eb587856129b7565b505b50611f06565b611ec682611dc0565b6020601f8701048101601f87168015611ee757611ee681600184036125eb565b5b611ef96020601f890104840183612126565b6001886002021785555050505b5050505050565b6020831060008114611f58576020851060008114611f3657611f2f868561247b565b8355611f52565b8360ff1916935083611f4784611dc0565b556001866002020183555b50611f62565b6001856002020182555b5050505050565b6000611f7860208401846112d8565b905092915050565b60008083356001602003843603038112611f9957600080fd5b83810192508235915060208301925067ffffffffffffffff821115611fbd57600080fd5b602082023603841315611fcf57600080fd5b509250929050565b60008083356001602003843603038112611ff057600080fd5b83810192508235915060208301925067ffffffffffffffff82111561201457600080fd5b60018202360384131561202657600080fd5b509250929050565b60008235600160400383360303811261204657600080fd5b82810191505092915050565b6000612061602084018461137c565b905092915050565b600061207482612101565b915061207f83612101565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156120b8576120b761255e565b5b828202905092915050565b60006120ce826120e1565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6121236000826126ca565b50565b5b818110156121455761213a600082612793565b600181019050612127565b5050565b5b818110156121685761215d600082612775565b60028101905061214a565b5050565b8181101561218a5761217f600082612793565b60018101905061216c565b5050565b61219b6000808301612757565b6121a9600060018301612793565b50565b60006121b7826121d0565b9050919050565b60006121c98261210b565b9050919050565b60006121db826121e2565b9050919050565b60006121ed826120e1565b9050919050565b60006121ff82612101565b9050919050565b6122108383611dd5565b61221a8183612666565b61222383611d91565b61222c83611dab565b6000805b84811015612265576122428488611d00565b61224d818486612b16565b60208501945060028401935050600181019050612230565b5050505050505050565b6122798383611df6565b67ffffffffffffffff811115612292576122916125bc565b5b61229c8254612449565b600080601f8411601f841117156122b9576122b685611dc0565b90505b601f8311156122ec576020601f850104810160208510156122d8578190505b6122ea6020601f860104830182612126565b505b601f8411600181146123195760008515612307578388013590505b612311868261247b565b875550612371565b601f1985168260005b8281101561234757858a01358255600182019150602086019550602081019050612322565b8783101561236457858a0135612360601f8a1682612511565b8355505b6001600289020189555050505b5050505050505050565b82818337600083830152505050565b60005b838110156123a857808201518184015260208101905061238d565b838111156123b7576000848401525b50505050565b6000810160008301806123cf8161263a565b90506123db8184612aa2565b50505060018101602083016123f08185611c52565b6123fb818386612ac5565b505050505050565b60008101600083016124158185611ca9565b612420818386612ad5565b5050505060018101602083018061243681612650565b90506124428184612af3565b5050505050565b6000600282049050600182168061246157607f821691505b602082108114156124755761247461258d565b5b50919050565b60006124878383612511565b9150826002028217905092915050565b6124a08261271f565b810181811067ffffffffffffffff821117156124bf576124be6125bc565b5b80604052505050565b60006124d382612101565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156125065761250561255e565b5b600182019050919050565b60006125226000198460080261274a565b1980831691505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61261b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8360200360080261274a565b815481168255505050565b6000819050919050565b6000819050919050565b6000813561264781612b59565b80915050919050565b6000813561265d81612b70565b80915050919050565b680100000000000000008211156126805761267f6125bc565b5b61268981611deb565b828255808310156126c55761269d81611d7a565b6126a684611d7a565b6126af84611dab565b8181018382016126bf8183612149565b50505050505b505050565b680100000000000000008211156126e4576126e36125bc565b5b80546126ef81612449565b808411156127045761270384828486611f0d565b5b808410156127195761271884828486611e64565b5b50505050565b6000601f19601f8301169050919050565b60008160001b9050919050565b600082821b905092915050565b600082821c905092915050565b600082146127685761276761252f565b5b61277181612118565b5050565b600082146127865761278561252f565b5b61278f8161218e565b5050565b61279b612b87565b6127a6818484612b34565b505050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f6470696420616c72656164792075706772616465640000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f6d6967726174696f6e2069732066726f7a656e00000000000000000000000000600082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b7f73747265616d20616c7265616479206861732061206450494400000000000000600082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f756e617574686f72697a65642064706964207570677261646500000000000000600082015250565b6129c081611dc0565b6129cb83825461247b565b8083556000825550505050565b600073ffffffffffffffffffffffffffffffffffffffff6129f884612730565b9350801983169250808416831791505092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612a3a84612730565b9350801983169250808416831791505092915050565b600060088302612a807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261273d565b612a8a868361273d565b95508019841693508086168417925050509392505050565b612aab826121ac565b612abe612ab782612626565b83546129d8565b8255505050565b612ad0838383612206565b505050565b612ae083838361226f565b505050565b612aef82826123bd565b5050565b612afc826121f4565b612b0f612b0882612630565b8354612a0e565b8255505050565b8115612b2557612b2461252f565b5b612b2f8382612403565b505050565b612b3d836121f4565b612b51612b4982612630565b848454612a50565b825550505050565b612b62816120c3565b8114612b6d57600080fd5b50565b612b7981612101565b8114612b8457600080fd5b50565b60009056fea264697066735822122025321e8b3f610ad6d87a9b3497059176ff710a769edbe017d76013391f10763b64736f6c63430008040033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061012c5760003560e01c80638129fc1c116100ad578063afc2691111610071578063afc26911146102f7578063b724de3a14610315578063b9e2924114610345578063ded8896b14610363578063f2fde38b1461037f5761012c565b80638129fc1c1461027957806382b7b500146102835780638456cb59146102b35780638da5cb5b146102bd578063a5ad8ac6146102db5761012c565b80635893253c116100f45780635893253c146101c15780635c975abb146101f1578063715018a61461020f578063788243d514610219578063810a9afa146102495761012c565b80630d70b3aa14610131578063144ae8551461013b5780633f4ba83a146101575780634f896d4f14610161578063587a8cbf14610191575b600080fd5b61013961039b565b005b610155600480360381019061015091906114c1565b6103c0565b005b61015f61047e565b005b61017b60048036038101906101769190611440565b610498565b6040516101889190611a51565b60405180910390f35b6101ab60048036038101906101a691906113ff565b61053d565b6040516101b89190611bd5565b60405180910390f35b6101db60048036038101906101d69190611440565b61056b565b6040516101e89190611a51565b60405180910390f35b6101f961060b565b6040516102069190611a1b565b60405180910390f35b610217610622565b005b610233600480360381019061022e9190611440565b610636565b6040516102409190611a00565b60405180910390f35b610263600480360381019061025e9190611440565b610674565b6040516102709190611bb3565b60405180910390f35b6102816107f2565b005b61029d600480360381019061029891906113ba565b610940565b6040516102aa9190611bd5565b60405180910390f35b6102bb61096b565b005b6102c5610985565b6040516102d29190611a00565b60405180910390f35b6102f560048036038101906102f09190611440565b6109af565b005b6102ff6109c9565b60405161030c9190611bd5565b60405180910390f35b61032f600480360381019061032a91906113ba565b6109cf565b60405161033c9190611bd5565b60405180910390f35b61034d610aec565b60405161035a9190611a1b565b60405180910390f35b61037d60048036038101906103789190611469565b610aff565b005b61039960048036038101906103949190611391565b610cfc565b005b6103a3610d80565b6001609860006101000a81548160ff021916908315150217905550565b6103c8610d80565b60001515609860009054906101000a900460ff1615151461041e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161041590611ad3565b60405180910390fd5b80609b6000848152602001908152602001600020818161043e9190612ae5565b9050507fa9c55ebaa1fada408bd72c2f0ea7c27f5444b105bcff12c5381baac912156ada8282604051610472929190611c22565b60405180910390a15050565b610486610d80565b61048e610dfe565b610496610e47565b565b60606099600083815260200190815260200160002080546104b890612449565b80601f01602080910402602001604051908101604052809291908181526020018280546104e490612449565b80156105315780601f1061050657610100808354040283529160200191610531565b820191906000526020600020905b81548152906001019060200180831161051457829003601f168201915b50505050509050919050565b609a818051602081018201805184825260208301602085012081835280955050505050506000915090505481565b6099602052806000526040600020600091509050805461058a90612449565b80601f01602080910402602001604051908101604052809291908181526020018280546105b690612449565b80156106035780601f106105d857610100808354040283529160200191610603565b820191906000526020600020905b8154815290600101906020018083116105e657829003601f168201915b505050505081565b6000606560009054906101000a900460ff16905090565b61062a610d80565b6106346000610eaa565b565b609b6020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081565b61067c6111c7565b609b60008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805480602002602001604051908101604052809291908181526020016000905b828210156107e3578382906000526020600020906002020160405180604001604052908160008201805461074890612449565b80601f016020809104026020016040519081016040528092919081815260200182805461077490612449565b80156107c15780601f10610796576101008083540402835291602001916107c1565b820191906000526020600020905b8154815290600101906020018083116107a457829003601f168201915b5050505050815260200160018201548152505081526020019060010190610715565b50505050815250509050919050565b60008060019054906101000a900460ff161590508080156108235750600160008054906101000a900460ff1660ff16105b80610850575061083230610f70565b15801561084f5750600160008054906101000a900460ff1660ff16145b5b61088f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088690611b33565b60405180910390fd5b60016000806101000a81548160ff021916908360ff16021790555080156108cc576001600060016101000a81548160ff0219169083151502179055505b6108d4610f93565b6108dc610fec565b6108e4611045565b801561093d5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516109349190611a36565b60405180910390a15b50565b6000609a83836040516109549291906119e7565b908152602001604051809103902054905092915050565b610973610d80565b61097b6110a8565b610983611045565b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6109b7610d80565b6109bf610dfe565b8060978190555050565b60975481565b600082826000609a83836040516109e79291906119e7565b90815260200160405180910390205414610a36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2d90611b13565b60405180910390fd5b610a3e6110a8565b600060975490508585609960008481526020019081526020016000209190610a679291906111f7565b5080609a8787604051610a7b9291906119e7565b9081526020016040518091039020819055507f96a65efbb6991f67fc8a4c7550fcfd08f1968737d2f5adcded5cd937b3cc0f3d818787604051610ac093929190611bf0565b60405180910390a160976000815480929190610adb906124c8565b919050555080935050505092915050565b609860009054906101000a900460ff1681565b81816000609a8383604051610b159291906119e7565b90815260200160405180910390205414610b64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5b90611b13565b60405180910390fd5b610b6c6110a8565b6000609960008781526020019081526020016000208054610b8c90612449565b905014610bce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc590611a93565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16609b600087815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6990611b93565b60405180910390fd5b8383609960008881526020019081526020016000209190610c949291906111f7565b5084609a8585604051610ca89291906119e7565b9081526020016040518091039020819055507f442b41840a10393534508176faee6f70b1870707dc24573b67d49f28cbac7f1c858585604051610ced93929190611bf0565b60405180910390a15050505050565b610d04610d80565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6b90611ab3565b60405180910390fd5b610d7d81610eaa565b50565b610d886110f2565b73ffffffffffffffffffffffffffffffffffffffff16610da6610985565b73ffffffffffffffffffffffffffffffffffffffff1614610dfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df390611b53565b60405180910390fd5b565b610e0661060b565b610e45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3c90611a73565b60405180910390fd5b565b610e4f610dfe565b6000606560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa610e936110f2565b604051610ea09190611a00565b60405180910390a1565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16610fe2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd990611b73565b60405180910390fd5b610fea6110fa565b565b600060019054906101000a900460ff1661103b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103290611b73565b60405180910390fd5b61104361115b565b565b61104d6110a8565b6001606560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586110916110f2565b60405161109e9190611a00565b60405180910390a1565b6110b061060b565b156110f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e790611af3565b60405180910390fd5b565b600033905090565b600060019054906101000a900460ff16611149576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114090611b73565b60405180910390fd5b6111596111546110f2565b610eaa565b565b600060019054906101000a900460ff166111aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a190611b73565b60405180910390fd5b6000606560006101000a81548160ff021916908315150217905550565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b82805461120390612449565b90600052602060002090601f016020900481019282611225576000855561126c565b82601f1061123e57803560ff191683800117855561126c565b8280016001018555821561126c579182015b8281111561126b578235825591602001919060010190611250565b5b509050611279919061127d565b5090565b5b8082111561129657600081600090555060010161127e565b5090565b60006112ad6112a884611d49565b611d24565b9050828152602081018484840111156112c557600080fd5b6112d084828561237b565b509392505050565b6000813590506112e781612b59565b92915050565b60008083601f8401126112ff57600080fd5b8235905067ffffffffffffffff81111561131857600080fd5b60208301915083600182028301111561133057600080fd5b9250929050565b600082601f83011261134857600080fd5b813561135884826020860161129a565b91505092915050565b60006040828403121561137357600080fd5b81905092915050565b60008135905061138b81612b70565b92915050565b6000602082840312156113a357600080fd5b60006113b1848285016112d8565b91505092915050565b600080602083850312156113cd57600080fd5b600083013567ffffffffffffffff8111156113e757600080fd5b6113f3858286016112ed565b92509250509250929050565b60006020828403121561141157600080fd5b600082013567ffffffffffffffff81111561142b57600080fd5b61143784828501611337565b91505092915050565b60006020828403121561145257600080fd5b60006114608482850161137c565b91505092915050565b60008060006040848603121561147e57600080fd5b600061148c8682870161137c565b935050602084013567ffffffffffffffff8111156114a957600080fd5b6114b5868287016112ed565b92509250509250925092565b600080604083850312156114d457600080fd5b60006114e28582860161137c565b925050602083013567ffffffffffffffff8111156114ff57600080fd5b61150b85828601611361565b9150509250929050565b6000611521838361193d565b905092915050565b6000611535838361198c565b905092915050565b611546816120c3565b82525050565b611555816120c3565b82525050565b60006115678385611e26565b93508360208402850161157984611d91565b8060005b878110156115bd578484038952611594828461202e565b61159e8582611515565b94506115a983611e0c565b925060208a0199505060018101905061157d565b50829750879450505050509392505050565b60006115da82611de0565b6115e48185611e26565b9350836020820285016115f685611d9b565b8060005b8581101561163257848403895281516116138582611529565b945061161e83611e19565b925060208a019950506001810190506115fa565b50829750879550505050505092915050565b61164d816120d5565b82525050565b61165c816121be565b82525050565b600061166e8385611e37565b935061167b83858461237b565b6116848361271f565b840190509392505050565b600061169b8385611e48565b93506116a883858461237b565b6116b18361271f565b840190509392505050565b60006116c88385611e59565b93506116d583858461237b565b82840190509392505050565b60006116ec82611e01565b6116f68185611e37565b935061170681856020860161238a565b61170f8161271f565b840191505092915050565b600061172582611e01565b61172f8185611e48565b935061173f81856020860161238a565b6117488161271f565b840191505092915050565b6000611760601483611e48565b915061176b826127ab565b602082019050919050565b6000611783601583611e48565b915061178e826127d4565b602082019050919050565b60006117a6602683611e48565b91506117b1826127fd565b604082019050919050565b60006117c9601383611e48565b91506117d48261284c565b602082019050919050565b60006117ec601083611e48565b91506117f782612875565b602082019050919050565b600061180f601983611e48565b915061181a8261289e565b602082019050919050565b6000611832602e83611e48565b915061183d826128c7565b604082019050919050565b6000611855602083611e48565b915061186082612916565b602082019050919050565b6000611878602b83611e48565b91506118838261293f565b604082019050919050565b600061189b601983611e48565b91506118a68261298e565b602082019050919050565b6000604083016118c46000840184611f69565b6118d1600086018261153d565b506118df6020840184611f80565b85830360208701526118f283828461155b565b925050508091505092915050565b6000604083016000830151611918600086018261153d565b506020830151848203602086015261193082826115cf565b9150508091505092915050565b6000604083016119506000840184611fd7565b8583036000870152611963838284611662565b925050506119746020840184612052565b61198160208601826119c9565b508091505092915050565b600060408301600083015184820360008601526119a982826116e1565b91505060208301516119be60208601826119c9565b508091505092915050565b6119d281612101565b82525050565b6119e181612101565b82525050565b60006119f48284866116bc565b91508190509392505050565b6000602082019050611a15600083018461154c565b92915050565b6000602082019050611a306000830184611644565b92915050565b6000602082019050611a4b6000830184611653565b92915050565b60006020820190508181036000830152611a6b818461171a565b905092915050565b60006020820190508181036000830152611a8c81611753565b9050919050565b60006020820190508181036000830152611aac81611776565b9050919050565b60006020820190508181036000830152611acc81611799565b9050919050565b60006020820190508181036000830152611aec816117bc565b9050919050565b60006020820190508181036000830152611b0c816117df565b9050919050565b60006020820190508181036000830152611b2c81611802565b9050919050565b60006020820190508181036000830152611b4c81611825565b9050919050565b60006020820190508181036000830152611b6c81611848565b9050919050565b60006020820190508181036000830152611b8c8161186b565b9050919050565b60006020820190508181036000830152611bac8161188e565b9050919050565b60006020820190508181036000830152611bcd8184611900565b905092915050565b6000602082019050611bea60008301846119d8565b92915050565b6000604082019050611c0560008301866119d8565b8181036020830152611c1881848661168f565b9050949350505050565b6000604082019050611c3760008301856119d8565b8181036020830152611c4981846118b1565b90509392505050565b60008083356001602003843603038112611c6b57600080fd5b80840192508235915067ffffffffffffffff821115611c8957600080fd5b602083019250602082023603831315611ca157600080fd5b509250929050565b60008083356001602003843603038112611cc257600080fd5b80840192508235915067ffffffffffffffff821115611ce057600080fd5b602083019250600182023603831315611cf857600080fd5b509250929050565b600082356001604003833603038112611d1857600080fd5b80830191505092915050565b6000611d2e611d3f565b9050611d3a8282612497565b919050565b6000604051905090565b600067ffffffffffffffff821115611d6457611d636125bc565b5b611d6d8261271f565b9050602081019050919050565b6000819050611d8a826002612069565b9050919050565b6000819050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b600082905092915050565b600081519050919050565b600081549050919050565b600082905092915050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6020841060008114611ebd57601f841160018114611e8d57611e86868561247b565b8355611eb7565b611e9683611dc0565b611eab6020601f880104820160018301612126565b611eb587856129b7565b505b50611f06565b611ec682611dc0565b6020601f8701048101601f87168015611ee757611ee681600184036125eb565b5b611ef96020601f890104840183612126565b6001886002021785555050505b5050505050565b6020831060008114611f58576020851060008114611f3657611f2f868561247b565b8355611f52565b8360ff1916935083611f4784611dc0565b556001866002020183555b50611f62565b6001856002020182555b5050505050565b6000611f7860208401846112d8565b905092915050565b60008083356001602003843603038112611f9957600080fd5b83810192508235915060208301925067ffffffffffffffff821115611fbd57600080fd5b602082023603841315611fcf57600080fd5b509250929050565b60008083356001602003843603038112611ff057600080fd5b83810192508235915060208301925067ffffffffffffffff82111561201457600080fd5b60018202360384131561202657600080fd5b509250929050565b60008235600160400383360303811261204657600080fd5b82810191505092915050565b6000612061602084018461137c565b905092915050565b600061207482612101565b915061207f83612101565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156120b8576120b761255e565b5b828202905092915050565b60006120ce826120e1565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6121236000826126ca565b50565b5b818110156121455761213a600082612793565b600181019050612127565b5050565b5b818110156121685761215d600082612775565b60028101905061214a565b5050565b8181101561218a5761217f600082612793565b60018101905061216c565b5050565b61219b6000808301612757565b6121a9600060018301612793565b50565b60006121b7826121d0565b9050919050565b60006121c98261210b565b9050919050565b60006121db826121e2565b9050919050565b60006121ed826120e1565b9050919050565b60006121ff82612101565b9050919050565b6122108383611dd5565b61221a8183612666565b61222383611d91565b61222c83611dab565b6000805b84811015612265576122428488611d00565b61224d818486612b16565b60208501945060028401935050600181019050612230565b5050505050505050565b6122798383611df6565b67ffffffffffffffff811115612292576122916125bc565b5b61229c8254612449565b600080601f8411601f841117156122b9576122b685611dc0565b90505b601f8311156122ec576020601f850104810160208510156122d8578190505b6122ea6020601f860104830182612126565b505b601f8411600181146123195760008515612307578388013590505b612311868261247b565b875550612371565b601f1985168260005b8281101561234757858a01358255600182019150602086019550602081019050612322565b8783101561236457858a0135612360601f8a1682612511565b8355505b6001600289020189555050505b5050505050505050565b82818337600083830152505050565b60005b838110156123a857808201518184015260208101905061238d565b838111156123b7576000848401525b50505050565b6000810160008301806123cf8161263a565b90506123db8184612aa2565b50505060018101602083016123f08185611c52565b6123fb818386612ac5565b505050505050565b60008101600083016124158185611ca9565b612420818386612ad5565b5050505060018101602083018061243681612650565b90506124428184612af3565b5050505050565b6000600282049050600182168061246157607f821691505b602082108114156124755761247461258d565b5b50919050565b60006124878383612511565b9150826002028217905092915050565b6124a08261271f565b810181811067ffffffffffffffff821117156124bf576124be6125bc565b5b80604052505050565b60006124d382612101565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156125065761250561255e565b5b600182019050919050565b60006125226000198460080261274a565b1980831691505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61261b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8360200360080261274a565b815481168255505050565b6000819050919050565b6000819050919050565b6000813561264781612b59565b80915050919050565b6000813561265d81612b70565b80915050919050565b680100000000000000008211156126805761267f6125bc565b5b61268981611deb565b828255808310156126c55761269d81611d7a565b6126a684611d7a565b6126af84611dab565b8181018382016126bf8183612149565b50505050505b505050565b680100000000000000008211156126e4576126e36125bc565b5b80546126ef81612449565b808411156127045761270384828486611f0d565b5b808410156127195761271884828486611e64565b5b50505050565b6000601f19601f8301169050919050565b60008160001b9050919050565b600082821b905092915050565b600082821c905092915050565b600082146127685761276761252f565b5b61277181612118565b5050565b600082146127865761278561252f565b5b61278f8161218e565b5050565b61279b612b87565b6127a6818484612b34565b505050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f6470696420616c72656164792075706772616465640000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f6d6967726174696f6e2069732066726f7a656e00000000000000000000000000600082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b7f73747265616d20616c7265616479206861732061206450494400000000000000600082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f756e617574686f72697a65642064706964207570677261646500000000000000600082015250565b6129c081611dc0565b6129cb83825461247b565b8083556000825550505050565b600073ffffffffffffffffffffffffffffffffffffffff6129f884612730565b9350801983169250808416831791505092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612a3a84612730565b9350801983169250808416831791505092915050565b600060088302612a807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261273d565b612a8a868361273d565b95508019841693508086168417925050509392505050565b612aab826121ac565b612abe612ab782612626565b83546129d8565b8255505050565b612ad0838383612206565b505050565b612ae083838361226f565b505050565b612aef82826123bd565b5050565b612afc826121f4565b612b0f612b0882612630565b8354612a0e565b8255505050565b8115612b2557612b2461252f565b5b612b2f8382612403565b505050565b612b3d836121f4565b612b51612b4982612630565b848454612a50565b825550505050565b612b62816120c3565b8114612b6d57600080fd5b50565b612b7981612101565b8114612b8457600080fd5b50565b60009056fea264697066735822122025321e8b3f610ad6d87a9b3497059176ff710a769edbe017d76013391f10763b64736f6c63430008040033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/desci-contracts/contracts/DpidAliasRegistry.sol b/desci-contracts/contracts/DpidAliasRegistry.sol index ba8b4809e..fc9aa2ff6 100644 --- a/desci-contracts/contracts/DpidAliasRegistry.sol +++ b/desci-contracts/contracts/DpidAliasRegistry.sol @@ -1,12 +1,11 @@ //SPDX-License-Identifier: MIT pragma solidity ^0.8.0; +import "@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; -contract DpidAliasRegistry is OwnableUpgradeable { - // Starting point of new aliases (set at initialization) - uint256 public firstDpid; - +contract DpidAliasRegistry is Initializable, OwnableUpgradeable, PausableUpgradeable { // Incremented on each dPID mint uint256 public nextDpid; @@ -24,10 +23,12 @@ contract DpidAliasRegistry is OwnableUpgradeable { _disableInitializers(); } - function initialize(uint256 _firstDpid) public initializer { + function initialize() public initializer { OwnableUpgradeable.__Ownable_init(); - firstDpid = _firstDpid; - nextDpid = _firstDpid; + PausableUpgradeable.__Pausable_init(); + + // Pause to allow owner to set nextDpid before activating minting + _pause(); } /** @@ -75,7 +76,7 @@ contract DpidAliasRegistry is OwnableUpgradeable { */ function mintDpid( string calldata streamId - ) public onlyUnaliasedStream(streamId) returns(uint256) { + ) public onlyUnaliasedStream(streamId) whenNotPaused returns(uint256) { uint256 thisDpid = nextDpid; // map this dPID to the passed stream ID @@ -167,7 +168,7 @@ contract DpidAliasRegistry is OwnableUpgradeable { function upgradeDpid( uint256 dpid, string calldata streamId - ) public onlyUnaliasedStream(streamId) { + ) public onlyUnaliasedStream(streamId) whenNotPaused { // Assert that this dPID has not been set in the main registry require(bytes(registry[dpid]).length == 0, "dpid already upgraded"); @@ -201,6 +202,8 @@ contract DpidAliasRegistry is OwnableUpgradeable { * the registry. This allows overwriting to correct migration errors, * but can be locked for further imports. * + * Note: this can be called when the contract is paused + * * @param dpid the dPID to import * @param entry the historical and ownership information */ @@ -216,8 +219,33 @@ contract DpidAliasRegistry is OwnableUpgradeable { /** * This permanently blocks importing/overwriting legacy dPID entries, * effectively freezing history. + * + * Note: this is irreversible */ function freezeMigration() public onlyOwner { migrationFrozen = true; } + + /** + * When the contract is paused, the owner can correct the next dPID. + * This is useful for making a seamless switch between new and old + * contracts. + */ + function setNextDpid(uint256 _nextDpid) public onlyOwner whenPaused { + nextDpid = _nextDpid; + } + + /** + * Pause minting new dPID's + */ + function pause() public onlyOwner whenNotPaused { + _pause(); + } + + /** + * Resume minting of new dPID's + */ + function unpause() public onlyOwner whenPaused { + _unpause(); + } } diff --git a/desci-contracts/scripts/deployDpidAliasRegistry.js b/desci-contracts/scripts/deployDpidAliasRegistry.js index e5f7740b2..5e821a43e 100644 --- a/desci-contracts/scripts/deployDpidAliasRegistry.js +++ b/desci-contracts/scripts/deployDpidAliasRegistry.js @@ -14,14 +14,18 @@ async function main() { console.log("[deployDpidAliasRegistry] Deploying DpidAliasRegistry..."); const proxy = await upgrades.deployProxy( DpidAliasRegistry, - [ - FIRST_DPID // firstDpid - ], + [], { initializer: "initialize" } ); await proxy.deployed(); + + let tx = await proxy.setNextDpid(FIRST_DPID); + await tx.wait(); + tx = await proxy.unpause(); + await tx.wait(); + console.log("[deployDpidRegistry] DpidAliasRegistry deployed to:", proxy.address); fs.renameSync( diff --git a/desci-contracts/test/DpidAliasRegistry.ts b/desci-contracts/test/DpidAliasRegistry.ts index 44151dfad..a8cb2ef3e 100644 --- a/desci-contracts/test/DpidAliasRegistry.ts +++ b/desci-contracts/test/DpidAliasRegistry.ts @@ -8,12 +8,9 @@ import { } from "../typechain-types"; import { TransactionReceipt } from "@ethersproject/abstract-provider"; import { SignerWithAddress } from "@nomiclabs/hardhat-ethers/signers"; -import { receiveMessageOnPort } from "worker_threads"; use(chaiAsPromised); -const FIRST_DPID = hhe.BigNumber.from(100); - describe("dPID", () => { let _accounts: SignerWithAddress[]; let owner: SignerWithAddress; @@ -34,24 +31,18 @@ describe("dPID", () => { dpidAliasRegistry = await upgrades.deployProxy( DpidAliasRegistryFactory, - [ - FIRST_DPID // firstDpid - ], + [], { initializer: "initialize", } ) as DpidAliasRegistry; await dpidAliasRegistry.deployed(); - - // Default instance to non-owner user - dpidAliasRegistry = dpidAliasRegistry.connect(user1); }); describe("deployment", () => { let reciept: TransactionReceipt; let proxyAddress: string; let implAddress: string; - let proxyAdmin: string; before(async () => { reciept = await dpidAliasRegistry.deployTransaction.wait(); @@ -81,20 +72,46 @@ describe("dPID", () => { expect(registryOwner).to.equal(owner.address); }); - it("respects initializer dpid offset", async () => { - const nextDpid = await dpidAliasRegistry.nextDpid(); - expect(nextDpid).to.equal(FIRST_DPID); - }) + it("deploys contract in paused state", async () => { + const isPaused = await dpidAliasRegistry.paused(); + expect(isPaused).to.equal(true); + }); }); describe("alias registry", () => { const STREAM_A = "kjzl6kcym7w8y7i5ugaq9a3vlm7hhuaf4bpl5o5qykeh4qtsa12c6rb5ekw6aaa"; + describe("admin", () => { + it("can set nextDpid when paused", async () => { + const tx = await dpidAliasRegistry.setNextDpid(100); + await tx.wait(); + const nextDpid = await dpidAliasRegistry.nextDpid(); + expect(nextDpid).to.equal(100); + }); + + it("can unpause contract", async () => { + const tx = await dpidAliasRegistry.unpause(); + await tx.wait(); + const isPaused = await dpidAliasRegistry.paused(); + expect(isPaused).to.equal(false); + }); + + it("can NOT set nextDpid when unpaused", async () => { + const liveResetNextDpid = async () => { + const tx = await dpidAliasRegistry.setNextDpid(500); + await tx.wait(); + }; + await expect(liveResetNextDpid()).to.be.rejectedWith("Pausable: not paused"); + }); + }); + describe("entry", () => { let tx: ContractTransaction; let res: ContractReceipt; before(async () => { + // Default instance to non-owner user + dpidAliasRegistry = dpidAliasRegistry.connect(user1); tx = await dpidAliasRegistry.mintDpid(STREAM_A); res = await tx.wait(); }); diff --git a/desci-contracts/typechain-types/DpidAliasRegistry.ts b/desci-contracts/typechain-types/DpidAliasRegistry.ts index efc29a831..7c100924d 100644 --- a/desci-contracts/typechain-types/DpidAliasRegistry.ts +++ b/desci-contracts/typechain-types/DpidAliasRegistry.ts @@ -43,26 +43,28 @@ export interface DpidAliasRegistryInterface extends utils.Interface { contractName: "DpidAliasRegistry"; functions: { "find(string)": FunctionFragment; - "firstDpid()": FunctionFragment; "freezeMigration()": FunctionFragment; "importLegacyDpid(uint256,(address,(string,uint256)[]))": FunctionFragment; - "initialize(uint256)": FunctionFragment; + "initialize()": FunctionFragment; "legacy(uint256)": FunctionFragment; "legacyLookup(uint256)": FunctionFragment; "migrationFrozen()": FunctionFragment; "mintDpid(string)": FunctionFragment; "nextDpid()": FunctionFragment; "owner()": FunctionFragment; + "pause()": FunctionFragment; + "paused()": FunctionFragment; "registry(uint256)": FunctionFragment; "renounceOwnership()": FunctionFragment; "resolve(uint256)": FunctionFragment; "reverseRegistry(string)": FunctionFragment; + "setNextDpid(uint256)": FunctionFragment; "transferOwnership(address)": FunctionFragment; + "unpause()": FunctionFragment; "upgradeDpid(uint256,string)": FunctionFragment; }; encodeFunctionData(functionFragment: "find", values: [string]): string; - encodeFunctionData(functionFragment: "firstDpid", values?: undefined): string; encodeFunctionData( functionFragment: "freezeMigration", values?: undefined @@ -73,7 +75,7 @@ export interface DpidAliasRegistryInterface extends utils.Interface { ): string; encodeFunctionData( functionFragment: "initialize", - values: [BigNumberish] + values?: undefined ): string; encodeFunctionData( functionFragment: "legacy", @@ -90,6 +92,8 @@ export interface DpidAliasRegistryInterface extends utils.Interface { encodeFunctionData(functionFragment: "mintDpid", values: [string]): string; encodeFunctionData(functionFragment: "nextDpid", values?: undefined): string; encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData(functionFragment: "pause", values?: undefined): string; + encodeFunctionData(functionFragment: "paused", values?: undefined): string; encodeFunctionData( functionFragment: "registry", values: [BigNumberish] @@ -106,17 +110,21 @@ export interface DpidAliasRegistryInterface extends utils.Interface { functionFragment: "reverseRegistry", values: [string] ): string; + encodeFunctionData( + functionFragment: "setNextDpid", + values: [BigNumberish] + ): string; encodeFunctionData( functionFragment: "transferOwnership", values: [string] ): string; + encodeFunctionData(functionFragment: "unpause", values?: undefined): string; encodeFunctionData( functionFragment: "upgradeDpid", values: [BigNumberish, string] ): string; decodeFunctionResult(functionFragment: "find", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "firstDpid", data: BytesLike): Result; decodeFunctionResult( functionFragment: "freezeMigration", data: BytesLike @@ -138,6 +146,8 @@ export interface DpidAliasRegistryInterface extends utils.Interface { decodeFunctionResult(functionFragment: "mintDpid", data: BytesLike): Result; decodeFunctionResult(functionFragment: "nextDpid", data: BytesLike): Result; decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "pause", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "paused", data: BytesLike): Result; decodeFunctionResult(functionFragment: "registry", data: BytesLike): Result; decodeFunctionResult( functionFragment: "renounceOwnership", @@ -148,10 +158,15 @@ export interface DpidAliasRegistryInterface extends utils.Interface { functionFragment: "reverseRegistry", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "setNextDpid", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "transferOwnership", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "unpause", data: BytesLike): Result; decodeFunctionResult( functionFragment: "upgradeDpid", data: BytesLike @@ -162,6 +177,8 @@ export interface DpidAliasRegistryInterface extends utils.Interface { "ImportedDpid(uint256,tuple)": EventFragment; "Initialized(uint8)": EventFragment; "OwnershipTransferred(address,address)": EventFragment; + "Paused(address)": EventFragment; + "Unpaused(address)": EventFragment; "UpgradedDpid(uint256,string)": EventFragment; }; @@ -169,6 +186,8 @@ export interface DpidAliasRegistryInterface extends utils.Interface { getEvent(nameOrSignatureOrTopic: "ImportedDpid"): EventFragment; getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Paused"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Unpaused"): EventFragment; getEvent(nameOrSignatureOrTopic: "UpgradedDpid"): EventFragment; } @@ -198,6 +217,14 @@ export type OwnershipTransferredEvent = TypedEvent< export type OwnershipTransferredEventFilter = TypedEventFilter; +export type PausedEvent = TypedEvent<[string], { account: string }>; + +export type PausedEventFilter = TypedEventFilter; + +export type UnpausedEvent = TypedEvent<[string], { account: string }>; + +export type UnpausedEventFilter = TypedEventFilter; + export type UpgradedDpidEvent = TypedEvent< [BigNumber, string], { dpid: BigNumber; streamId: string } @@ -235,8 +262,6 @@ export interface DpidAliasRegistry extends BaseContract { functions: { find(streamId: string, overrides?: CallOverrides): Promise<[BigNumber]>; - firstDpid(overrides?: CallOverrides): Promise<[BigNumber]>; - freezeMigration( overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -248,7 +273,6 @@ export interface DpidAliasRegistry extends BaseContract { ): Promise; initialize( - _firstDpid: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -273,6 +297,12 @@ export interface DpidAliasRegistry extends BaseContract { owner(overrides?: CallOverrides): Promise<[string]>; + pause( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + paused(overrides?: CallOverrides): Promise<[boolean]>; + registry(arg0: BigNumberish, overrides?: CallOverrides): Promise<[string]>; renounceOwnership( @@ -286,11 +316,20 @@ export interface DpidAliasRegistry extends BaseContract { overrides?: CallOverrides ): Promise<[BigNumber]>; + setNextDpid( + _nextDpid: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + transferOwnership( newOwner: string, overrides?: Overrides & { from?: string | Promise } ): Promise; + unpause( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + upgradeDpid( dpid: BigNumberish, streamId: string, @@ -300,8 +339,6 @@ export interface DpidAliasRegistry extends BaseContract { find(streamId: string, overrides?: CallOverrides): Promise; - firstDpid(overrides?: CallOverrides): Promise; - freezeMigration( overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -313,7 +350,6 @@ export interface DpidAliasRegistry extends BaseContract { ): Promise; initialize( - _firstDpid: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -335,6 +371,12 @@ export interface DpidAliasRegistry extends BaseContract { owner(overrides?: CallOverrides): Promise; + pause( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + paused(overrides?: CallOverrides): Promise; + registry(arg0: BigNumberish, overrides?: CallOverrides): Promise; renounceOwnership( @@ -345,11 +387,20 @@ export interface DpidAliasRegistry extends BaseContract { reverseRegistry(arg0: string, overrides?: CallOverrides): Promise; + setNextDpid( + _nextDpid: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + transferOwnership( newOwner: string, overrides?: Overrides & { from?: string | Promise } ): Promise; + unpause( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + upgradeDpid( dpid: BigNumberish, streamId: string, @@ -359,8 +410,6 @@ export interface DpidAliasRegistry extends BaseContract { callStatic: { find(streamId: string, overrides?: CallOverrides): Promise; - firstDpid(overrides?: CallOverrides): Promise; - freezeMigration(overrides?: CallOverrides): Promise; importLegacyDpid( @@ -369,10 +418,7 @@ export interface DpidAliasRegistry extends BaseContract { overrides?: CallOverrides ): Promise; - initialize( - _firstDpid: BigNumberish, - overrides?: CallOverrides - ): Promise; + initialize(overrides?: CallOverrides): Promise; legacy(arg0: BigNumberish, overrides?: CallOverrides): Promise; @@ -389,6 +435,10 @@ export interface DpidAliasRegistry extends BaseContract { owner(overrides?: CallOverrides): Promise; + pause(overrides?: CallOverrides): Promise; + + paused(overrides?: CallOverrides): Promise; + registry(arg0: BigNumberish, overrides?: CallOverrides): Promise; renounceOwnership(overrides?: CallOverrides): Promise; @@ -400,11 +450,18 @@ export interface DpidAliasRegistry extends BaseContract { overrides?: CallOverrides ): Promise; + setNextDpid( + _nextDpid: BigNumberish, + overrides?: CallOverrides + ): Promise; + transferOwnership( newOwner: string, overrides?: CallOverrides ): Promise; + unpause(overrides?: CallOverrides): Promise; + upgradeDpid( dpid: BigNumberish, streamId: string, @@ -437,6 +494,12 @@ export interface DpidAliasRegistry extends BaseContract { newOwner?: string | null ): OwnershipTransferredEventFilter; + "Paused(address)"(account?: null): PausedEventFilter; + Paused(account?: null): PausedEventFilter; + + "Unpaused(address)"(account?: null): UnpausedEventFilter; + Unpaused(account?: null): UnpausedEventFilter; + "UpgradedDpid(uint256,string)"( dpid?: null, streamId?: null @@ -447,8 +510,6 @@ export interface DpidAliasRegistry extends BaseContract { estimateGas: { find(streamId: string, overrides?: CallOverrides): Promise; - firstDpid(overrides?: CallOverrides): Promise; - freezeMigration( overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -460,7 +521,6 @@ export interface DpidAliasRegistry extends BaseContract { ): Promise; initialize( - _firstDpid: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -482,6 +542,12 @@ export interface DpidAliasRegistry extends BaseContract { owner(overrides?: CallOverrides): Promise; + pause( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + paused(overrides?: CallOverrides): Promise; + registry(arg0: BigNumberish, overrides?: CallOverrides): Promise; renounceOwnership( @@ -495,11 +561,20 @@ export interface DpidAliasRegistry extends BaseContract { overrides?: CallOverrides ): Promise; + setNextDpid( + _nextDpid: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + transferOwnership( newOwner: string, overrides?: Overrides & { from?: string | Promise } ): Promise; + unpause( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + upgradeDpid( dpid: BigNumberish, streamId: string, @@ -513,8 +588,6 @@ export interface DpidAliasRegistry extends BaseContract { overrides?: CallOverrides ): Promise; - firstDpid(overrides?: CallOverrides): Promise; - freezeMigration( overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -526,7 +599,6 @@ export interface DpidAliasRegistry extends BaseContract { ): Promise; initialize( - _firstDpid: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -551,6 +623,12 @@ export interface DpidAliasRegistry extends BaseContract { owner(overrides?: CallOverrides): Promise; + pause( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + paused(overrides?: CallOverrides): Promise; + registry( arg0: BigNumberish, overrides?: CallOverrides @@ -570,11 +648,20 @@ export interface DpidAliasRegistry extends BaseContract { overrides?: CallOverrides ): Promise; + setNextDpid( + _nextDpid: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + transferOwnership( newOwner: string, overrides?: Overrides & { from?: string | Promise } ): Promise; + unpause( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + upgradeDpid( dpid: BigNumberish, streamId: string, diff --git a/desci-contracts/typechain-types/PausableUpgradeable.ts b/desci-contracts/typechain-types/PausableUpgradeable.ts new file mode 100644 index 000000000..fd8f44dae --- /dev/null +++ b/desci-contracts/typechain-types/PausableUpgradeable.ts @@ -0,0 +1,105 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + BaseContract, + BigNumber, + BytesLike, + CallOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; +import { Listener, Provider } from "@ethersproject/providers"; +import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; + +export interface PausableUpgradeableInterface extends utils.Interface { + contractName: "PausableUpgradeable"; + functions: { + "paused()": FunctionFragment; + }; + + encodeFunctionData(functionFragment: "paused", values?: undefined): string; + + decodeFunctionResult(functionFragment: "paused", data: BytesLike): Result; + + events: { + "Initialized(uint8)": EventFragment; + "Paused(address)": EventFragment; + "Unpaused(address)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Paused"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Unpaused"): EventFragment; +} + +export type InitializedEvent = TypedEvent<[number], { version: number }>; + +export type InitializedEventFilter = TypedEventFilter; + +export type PausedEvent = TypedEvent<[string], { account: string }>; + +export type PausedEventFilter = TypedEventFilter; + +export type UnpausedEvent = TypedEvent<[string], { account: string }>; + +export type UnpausedEventFilter = TypedEventFilter; + +export interface PausableUpgradeable extends BaseContract { + contractName: "PausableUpgradeable"; + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: PausableUpgradeableInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + paused(overrides?: CallOverrides): Promise<[boolean]>; + }; + + paused(overrides?: CallOverrides): Promise; + + callStatic: { + paused(overrides?: CallOverrides): Promise; + }; + + filters: { + "Initialized(uint8)"(version?: null): InitializedEventFilter; + Initialized(version?: null): InitializedEventFilter; + + "Paused(address)"(account?: null): PausedEventFilter; + Paused(account?: null): PausedEventFilter; + + "Unpaused(address)"(account?: null): UnpausedEventFilter; + Unpaused(account?: null): UnpausedEventFilter; + }; + + estimateGas: { + paused(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + paused(overrides?: CallOverrides): Promise; + }; +} diff --git a/desci-contracts/typechain-types/factories/DpidAliasRegistry__factory.ts b/desci-contracts/typechain-types/factories/DpidAliasRegistry__factory.ts index 5339dc20e..a3f5dca0b 100644 --- a/desci-contracts/typechain-types/factories/DpidAliasRegistry__factory.ts +++ b/desci-contracts/typechain-types/factories/DpidAliasRegistry__factory.ts @@ -108,6 +108,32 @@ const _abi = [ name: "OwnershipTransferred", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "Paused", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "Unpaused", + type: "event", + }, { anonymous: false, inputs: [ @@ -146,19 +172,6 @@ const _abi = [ stateMutability: "view", type: "function", }, - { - inputs: [], - name: "firstDpid", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, { inputs: [], name: "freezeMigration", @@ -209,13 +222,7 @@ const _abi = [ type: "function", }, { - inputs: [ - { - internalType: "uint256", - name: "_firstDpid", - type: "uint256", - }, - ], + inputs: [], name: "initialize", outputs: [], stateMutability: "nonpayable", @@ -341,6 +348,26 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "pause", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "paused", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [ { @@ -405,6 +432,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [ + { + internalType: "uint256", + name: "_nextDpid", + type: "uint256", + }, + ], + name: "setNextDpid", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, { inputs: [ { @@ -418,6 +458,13 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, + { + inputs: [], + name: "unpause", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, { inputs: [ { @@ -439,7 +486,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b50620000226200002860201b60201c565b620001d3565b600060019054906101000a900460ff16156200007b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000729062000127565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff161015620000ed5760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff604051620000e4919062000149565b60405180910390a15b565b6000620000fe60278362000166565b91506200010b8262000184565b604082019050919050565b620001218162000177565b82525050565b600060208201905081810360008301526200014281620000ef565b9050919050565b600060208201905062000160600083018462000116565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b61281d80620001e36000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806382b7b500116100a2578063b9e2924111610071578063b9e29241146102cc578063cfb452b5146102ea578063ded8896b14610308578063f2fde38b14610324578063fe4b84df146103405761010b565b806382b7b500146102305780638da5cb5b14610260578063afc269111461027e578063b724de3a1461029c5761010b565b80635893253c116100de5780635893253c14610196578063715018a6146101c6578063788243d5146101d0578063810a9afa146102005761010b565b80630d70b3aa14610110578063144ae8551461011a5780634f896d4f14610136578063587a8cbf14610166575b600080fd5b61011861035c565b005b610134600480360381019061012f91906111f4565b610381565b005b610150600480360381019061014b9190611173565b61043f565b60405161015d919061173e565b60405180910390f35b610180600480360381019061017b9190611132565b6104e4565b60405161018d9190611882565b60405180910390f35b6101b060048036038101906101ab9190611173565b610512565b6040516101bd919061173e565b60405180910390f35b6101ce6105b2565b005b6101ea60048036038101906101e59190611173565b6105c6565b6040516101f791906116ed565b60405180910390f35b61021a60048036038101906102159190611173565b610604565b6040516102279190611860565b60405180910390f35b61024a600480360381019061024591906110ed565b610782565b6040516102579190611882565b60405180910390f35b6102686107ad565b60405161027591906116ed565b60405180910390f35b6102866107d7565b6040516102939190611882565b60405180910390f35b6102b660048036038101906102b191906110ed565b6107dd565b6040516102c39190611882565b60405180910390f35b6102d46108f2565b6040516102e19190611708565b60405180910390f35b6102f2610905565b6040516102ff9190611882565b60405180910390f35b610322600480360381019061031d919061119c565b61090b565b005b61033e600480360381019061033991906110c4565b610b00565b005b61035a60048036038101906103559190611173565b610b84565b005b610364610cd1565b6001606760006101000a81548160ff021916908315150217905550565b610389610cd1565b60001515606760009054906101000a900460ff161515146103df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d6906117a0565b60405180910390fd5b80606a600084815260200190815260200160002081816103ff9190612740565b9050507fa9c55ebaa1fada408bd72c2f0ea7c27f5444b105bcff12c5381baac912156ada82826040516104339291906118cf565b60405180910390a15050565b606060686000838152602001908152602001600020805461045f906120f6565b80601f016020809104026020016040519081016040528092919081815260200182805461048b906120f6565b80156104d85780601f106104ad576101008083540402835291602001916104d8565b820191906000526020600020905b8154815290600101906020018083116104bb57829003601f168201915b50505050509050919050565b6069818051602081018201805184825260208301602085012081835280955050505050506000915090505481565b60686020528060005260406000206000915090508054610531906120f6565b80601f016020809104026020016040519081016040528092919081815260200182805461055d906120f6565b80156105aa5780601f1061057f576101008083540402835291602001916105aa565b820191906000526020600020905b81548152906001019060200180831161058d57829003601f168201915b505050505081565b6105ba610cd1565b6105c46000610d4f565b565b606a6020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081565b61060c610efa565b606a60008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805480602002602001604051908101604052809291908181526020016000905b8282101561077357838290600052602060002090600202016040518060400160405290816000820180546106d8906120f6565b80601f0160208091040260200160405190810160405280929190818152602001828054610704906120f6565b80156107515780601f1061072657610100808354040283529160200191610751565b820191906000526020600020905b81548152906001019060200180831161073457829003601f168201915b50505050508152602001600182015481525050815260200190600101906106a5565b50505050815250509050919050565b6000606983836040516107969291906116d4565b908152602001604051809103902054905092915050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60665481565b600082826000606983836040516107f59291906116d4565b90815260200160405180910390205414610844576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083b906117c0565b60405180910390fd5b60006066549050858560686000848152602001908152602001600020919061086d929190610f2a565b5080606987876040516108819291906116d4565b9081526020016040518091039020819055507f96a65efbb6991f67fc8a4c7550fcfd08f1968737d2f5adcded5cd937b3cc0f3d8187876040516108c69392919061189d565b60405180910390a1606660008154809291906108e190612175565b919050555080935050505092915050565b606760009054906101000a900460ff1681565b60655481565b81816000606983836040516109219291906116d4565b90815260200160405180910390205414610970576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610967906117c0565b60405180910390fd5b6000606860008781526020019081526020016000208054610990906120f6565b9050146109d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c990611760565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16606a600087815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6d90611840565b60405180910390fd5b8383606860008881526020019081526020016000209190610a98929190610f2a565b508460698585604051610aac9291906116d4565b9081526020016040518091039020819055507f442b41840a10393534508176faee6f70b1870707dc24573b67d49f28cbac7f1c858585604051610af19392919061189d565b60405180910390a15050505050565b610b08610cd1565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6f90611780565b60405180910390fd5b610b8181610d4f565b50565b60008060019054906101000a900460ff16159050808015610bb55750600160008054906101000a900460ff1660ff16105b80610be25750610bc430610e15565b158015610be15750600160008054906101000a900460ff1660ff16145b5b610c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c18906117e0565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610c5e576001600060016101000a81548160ff0219169083151502179055505b610c66610e38565b81606581905550816066819055508015610ccd5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610cc49190611723565b60405180910390a15b5050565b610cd9610e91565b73ffffffffffffffffffffffffffffffffffffffff16610cf76107ad565b73ffffffffffffffffffffffffffffffffffffffff1614610d4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4490611800565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16610e87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7e90611820565b60405180910390fd5b610e8f610e99565b565b600033905090565b600060019054906101000a900460ff16610ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edf90611820565b60405180910390fd5b610ef8610ef3610e91565b610d4f565b565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b828054610f36906120f6565b90600052602060002090601f016020900481019282610f585760008555610f9f565b82601f10610f7157803560ff1916838001178555610f9f565b82800160010185558215610f9f579182015b82811115610f9e578235825591602001919060010190610f83565b5b509050610fac9190610fb0565b5090565b5b80821115610fc9576000816000905550600101610fb1565b5090565b6000610fe0610fdb846119f6565b6119d1565b905082815260208101848484011115610ff857600080fd5b611003848285612028565b509392505050565b60008135905061101a816127b4565b92915050565b60008083601f84011261103257600080fd5b8235905067ffffffffffffffff81111561104b57600080fd5b60208301915083600182028301111561106357600080fd5b9250929050565b600082601f83011261107b57600080fd5b813561108b848260208601610fcd565b91505092915050565b6000604082840312156110a657600080fd5b81905092915050565b6000813590506110be816127cb565b92915050565b6000602082840312156110d657600080fd5b60006110e48482850161100b565b91505092915050565b6000806020838503121561110057600080fd5b600083013567ffffffffffffffff81111561111a57600080fd5b61112685828601611020565b92509250509250929050565b60006020828403121561114457600080fd5b600082013567ffffffffffffffff81111561115e57600080fd5b61116a8482850161106a565b91505092915050565b60006020828403121561118557600080fd5b6000611193848285016110af565b91505092915050565b6000806000604084860312156111b157600080fd5b60006111bf868287016110af565b935050602084013567ffffffffffffffff8111156111dc57600080fd5b6111e886828701611020565b92509250509250925092565b6000806040838503121561120757600080fd5b6000611215858286016110af565b925050602083013567ffffffffffffffff81111561123257600080fd5b61123e85828601611094565b9150509250929050565b6000611254838361162a565b905092915050565b60006112688383611679565b905092915050565b61127981611d70565b82525050565b61128881611d70565b82525050565b600061129a8385611ad3565b9350836020840285016112ac84611a3e565b8060005b878110156112f05784840389526112c78284611cdb565b6112d18582611248565b94506112dc83611ab9565b925060208a019950506001810190506112b0565b50829750879450505050509392505050565b600061130d82611a8d565b6113178185611ad3565b93508360208202850161132985611a48565b8060005b858110156113655784840389528151611346858261125c565b945061135183611ac6565b925060208a0199505060018101905061132d565b50829750879550505050505092915050565b61138081611d82565b82525050565b61138f81611e6b565b82525050565b60006113a18385611ae4565b93506113ae838584612028565b6113b7836123cc565b840190509392505050565b60006113ce8385611af5565b93506113db838584612028565b6113e4836123cc565b840190509392505050565b60006113fb8385611b06565b9350611408838584612028565b82840190509392505050565b600061141f82611aae565b6114298185611ae4565b9350611439818560208601612037565b611442816123cc565b840191505092915050565b600061145882611aae565b6114628185611af5565b9350611472818560208601612037565b61147b816123cc565b840191505092915050565b6000611493601583611af5565b915061149e82612458565b602082019050919050565b60006114b6602683611af5565b91506114c182612481565b604082019050919050565b60006114d9601383611af5565b91506114e4826124d0565b602082019050919050565b60006114fc601983611af5565b9150611507826124f9565b602082019050919050565b600061151f602e83611af5565b915061152a82612522565b604082019050919050565b6000611542602083611af5565b915061154d82612571565b602082019050919050565b6000611565602b83611af5565b91506115708261259a565b604082019050919050565b6000611588601983611af5565b9150611593826125e9565b602082019050919050565b6000604083016115b16000840184611c16565b6115be6000860182611270565b506115cc6020840184611c2d565b85830360208701526115df83828461128e565b925050508091505092915050565b60006040830160008301516116056000860182611270565b506020830151848203602086015261161d8282611302565b9150508091505092915050565b60006040830161163d6000840184611c84565b8583036000870152611650838284611395565b925050506116616020840184611cff565b61166e60208601826116b6565b508091505092915050565b600060408301600083015184820360008601526116968282611414565b91505060208301516116ab60208601826116b6565b508091505092915050565b6116bf81611dae565b82525050565b6116ce81611dae565b82525050565b60006116e18284866113ef565b91508190509392505050565b6000602082019050611702600083018461127f565b92915050565b600060208201905061171d6000830184611377565b92915050565b60006020820190506117386000830184611386565b92915050565b60006020820190508181036000830152611758818461144d565b905092915050565b6000602082019050818103600083015261177981611486565b9050919050565b60006020820190508181036000830152611799816114a9565b9050919050565b600060208201905081810360008301526117b9816114cc565b9050919050565b600060208201905081810360008301526117d9816114ef565b9050919050565b600060208201905081810360008301526117f981611512565b9050919050565b6000602082019050818103600083015261181981611535565b9050919050565b6000602082019050818103600083015261183981611558565b9050919050565b600060208201905081810360008301526118598161157b565b9050919050565b6000602082019050818103600083015261187a81846115ed565b905092915050565b600060208201905061189760008301846116c5565b92915050565b60006040820190506118b260008301866116c5565b81810360208301526118c58184866113c2565b9050949350505050565b60006040820190506118e460008301856116c5565b81810360208301526118f6818461159e565b90509392505050565b6000808335600160200384360303811261191857600080fd5b80840192508235915067ffffffffffffffff82111561193657600080fd5b60208301925060208202360383131561194e57600080fd5b509250929050565b6000808335600160200384360303811261196f57600080fd5b80840192508235915067ffffffffffffffff82111561198d57600080fd5b6020830192506001820236038313156119a557600080fd5b509250929050565b6000823560016040038336030381126119c557600080fd5b80830191505092915050565b60006119db6119ec565b90506119e78282612144565b919050565b6000604051905090565b600067ffffffffffffffff821115611a1157611a10612269565b5b611a1a826123cc565b9050602081019050919050565b6000819050611a37826002611d16565b9050919050565b6000819050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b600082905092915050565b600081519050919050565b600081549050919050565b600082905092915050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6020841060008114611b6a57601f841160018114611b3a57611b338685612128565b8355611b64565b611b4383611a6d565b611b586020601f880104820160018301611dd3565b611b628785612612565b505b50611bb3565b611b7382611a6d565b6020601f8701048101601f87168015611b9457611b938160018403612298565b5b611ba66020601f890104840183611dd3565b6001886002021785555050505b5050505050565b6020831060008114611c05576020851060008114611be357611bdc8685612128565b8355611bff565b8360ff1916935083611bf484611a6d565b556001866002020183555b50611c0f565b6001856002020182555b5050505050565b6000611c25602084018461100b565b905092915050565b60008083356001602003843603038112611c4657600080fd5b83810192508235915060208301925067ffffffffffffffff821115611c6a57600080fd5b602082023603841315611c7c57600080fd5b509250929050565b60008083356001602003843603038112611c9d57600080fd5b83810192508235915060208301925067ffffffffffffffff821115611cc157600080fd5b600182023603841315611cd357600080fd5b509250929050565b600082356001604003833603038112611cf357600080fd5b82810191505092915050565b6000611d0e60208401846110af565b905092915050565b6000611d2182611dae565b9150611d2c83611dae565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611d6557611d6461220b565b5b828202905092915050565b6000611d7b82611d8e565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b611dd0600082612377565b50565b5b81811015611df257611de7600082612440565b600181019050611dd4565b5050565b5b81811015611e1557611e0a600082612422565b600281019050611df7565b5050565b81811015611e3757611e2c600082612440565b600181019050611e19565b5050565b611e486000808301612404565b611e56600060018301612440565b50565b6000611e6482611e7d565b9050919050565b6000611e7682611db8565b9050919050565b6000611e8882611e8f565b9050919050565b6000611e9a82611d8e565b9050919050565b6000611eac82611dae565b9050919050565b611ebd8383611a82565b611ec78183612313565b611ed083611a3e565b611ed983611a58565b6000805b84811015611f1257611eef84886119ad565b611efa818486612771565b60208501945060028401935050600181019050611edd565b5050505050505050565b611f268383611aa3565b67ffffffffffffffff811115611f3f57611f3e612269565b5b611f4982546120f6565b600080601f8411601f84111715611f6657611f6385611a6d565b90505b601f831115611f99576020601f85010481016020851015611f85578190505b611f976020601f860104830182611dd3565b505b601f841160018114611fc65760008515611fb4578388013590505b611fbe8682612128565b87555061201e565b601f1985168260005b82811015611ff457858a01358255600182019150602086019550602081019050611fcf565b8783101561201157858a013561200d601f8a16826121be565b8355505b6001600289020189555050505b5050505050505050565b82818337600083830152505050565b60005b8381101561205557808201518184015260208101905061203a565b83811115612064576000848401525b50505050565b60008101600083018061207c816122e7565b905061208881846126fd565b505050600181016020830161209d81856118ff565b6120a8818386612720565b505050505050565b60008101600083016120c28185611956565b6120cd818386612730565b505050506001810160208301806120e3816122fd565b90506120ef818461274e565b5050505050565b6000600282049050600182168061210e57607f821691505b602082108114156121225761212161223a565b5b50919050565b600061213483836121be565b9150826002028217905092915050565b61214d826123cc565b810181811067ffffffffffffffff8211171561216c5761216b612269565b5b80604052505050565b600061218082611dae565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156121b3576121b261220b565b5b600182019050919050565b60006121cf600019846008026123f7565b1980831691505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6122c87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff836020036008026123f7565b815481168255505050565b6000819050919050565b6000819050919050565b600081356122f4816127b4565b80915050919050565b6000813561230a816127cb565b80915050919050565b6801000000000000000082111561232d5761232c612269565b5b61233681611a98565b828255808310156123725761234a81611a27565b61235384611a27565b61235c84611a58565b81810183820161236c8183611df6565b50505050505b505050565b6801000000000000000082111561239157612390612269565b5b805461239c816120f6565b808411156123b1576123b084828486611bba565b5b808410156123c6576123c584828486611b11565b5b50505050565b6000601f19601f8301169050919050565b60008160001b9050919050565b600082821b905092915050565b600082821c905092915050565b60008214612415576124146121dc565b5b61241e81611dc5565b5050565b60008214612433576124326121dc565b5b61243c81611e3b565b5050565b6124486127e2565b61245381848461278f565b505050565b7f6470696420616c72656164792075706772616465640000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f6d6967726174696f6e2069732066726f7a656e00000000000000000000000000600082015250565b7f73747265616d20616c7265616479206861732061206450494400000000000000600082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f756e617574686f72697a65642064706964207570677261646500000000000000600082015250565b61261b81611a6d565b612626838254612128565b8083556000825550505050565b600073ffffffffffffffffffffffffffffffffffffffff612653846123dd565b9350801983169250808416831791505092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612695846123dd565b9350801983169250808416831791505092915050565b6000600883026126db7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826123ea565b6126e586836123ea565b95508019841693508086168417925050509392505050565b61270682611e59565b612719612712826122d3565b8354612633565b8255505050565b61272b838383611eb3565b505050565b61273b838383611f1c565b505050565b61274a828261206a565b5050565b61275782611ea1565b61276a612763826122dd565b8354612669565b8255505050565b81156127805761277f6121dc565b5b61278a83826120b0565b505050565b61279883611ea1565b6127ac6127a4826122dd565b8484546126ab565b825550505050565b6127bd81611d70565b81146127c857600080fd5b50565b6127d481611dae565b81146127df57600080fd5b50565b60009056fea26469706673582212203cd9493558aa831bec9e62a003cae25d442665c9c02edcb7c1725ad3e5bb65db64736f6c63430008040033"; + "0x60806040523480156200001157600080fd5b50620000226200002860201b60201c565b620001d3565b600060019054906101000a900460ff16156200007b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000729062000127565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff161015620000ed5760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff604051620000e4919062000149565b60405180910390a15b565b6000620000fe60278362000166565b91506200010b8262000184565b604082019050919050565b620001218162000177565b82525050565b600060208201905081810360008301526200014281620000ef565b9050919050565b600060208201905062000160600083018462000116565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b612bc280620001e36000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c80638129fc1c116100ad578063afc2691111610071578063afc26911146102f7578063b724de3a14610315578063b9e2924114610345578063ded8896b14610363578063f2fde38b1461037f5761012c565b80638129fc1c1461027957806382b7b500146102835780638456cb59146102b35780638da5cb5b146102bd578063a5ad8ac6146102db5761012c565b80635893253c116100f45780635893253c146101c15780635c975abb146101f1578063715018a61461020f578063788243d514610219578063810a9afa146102495761012c565b80630d70b3aa14610131578063144ae8551461013b5780633f4ba83a146101575780634f896d4f14610161578063587a8cbf14610191575b600080fd5b61013961039b565b005b610155600480360381019061015091906114c1565b6103c0565b005b61015f61047e565b005b61017b60048036038101906101769190611440565b610498565b6040516101889190611a51565b60405180910390f35b6101ab60048036038101906101a691906113ff565b61053d565b6040516101b89190611bd5565b60405180910390f35b6101db60048036038101906101d69190611440565b61056b565b6040516101e89190611a51565b60405180910390f35b6101f961060b565b6040516102069190611a1b565b60405180910390f35b610217610622565b005b610233600480360381019061022e9190611440565b610636565b6040516102409190611a00565b60405180910390f35b610263600480360381019061025e9190611440565b610674565b6040516102709190611bb3565b60405180910390f35b6102816107f2565b005b61029d600480360381019061029891906113ba565b610940565b6040516102aa9190611bd5565b60405180910390f35b6102bb61096b565b005b6102c5610985565b6040516102d29190611a00565b60405180910390f35b6102f560048036038101906102f09190611440565b6109af565b005b6102ff6109c9565b60405161030c9190611bd5565b60405180910390f35b61032f600480360381019061032a91906113ba565b6109cf565b60405161033c9190611bd5565b60405180910390f35b61034d610aec565b60405161035a9190611a1b565b60405180910390f35b61037d60048036038101906103789190611469565b610aff565b005b61039960048036038101906103949190611391565b610cfc565b005b6103a3610d80565b6001609860006101000a81548160ff021916908315150217905550565b6103c8610d80565b60001515609860009054906101000a900460ff1615151461041e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161041590611ad3565b60405180910390fd5b80609b6000848152602001908152602001600020818161043e9190612ae5565b9050507fa9c55ebaa1fada408bd72c2f0ea7c27f5444b105bcff12c5381baac912156ada8282604051610472929190611c22565b60405180910390a15050565b610486610d80565b61048e610dfe565b610496610e47565b565b60606099600083815260200190815260200160002080546104b890612449565b80601f01602080910402602001604051908101604052809291908181526020018280546104e490612449565b80156105315780601f1061050657610100808354040283529160200191610531565b820191906000526020600020905b81548152906001019060200180831161051457829003601f168201915b50505050509050919050565b609a818051602081018201805184825260208301602085012081835280955050505050506000915090505481565b6099602052806000526040600020600091509050805461058a90612449565b80601f01602080910402602001604051908101604052809291908181526020018280546105b690612449565b80156106035780601f106105d857610100808354040283529160200191610603565b820191906000526020600020905b8154815290600101906020018083116105e657829003601f168201915b505050505081565b6000606560009054906101000a900460ff16905090565b61062a610d80565b6106346000610eaa565b565b609b6020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081565b61067c6111c7565b609b60008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805480602002602001604051908101604052809291908181526020016000905b828210156107e3578382906000526020600020906002020160405180604001604052908160008201805461074890612449565b80601f016020809104026020016040519081016040528092919081815260200182805461077490612449565b80156107c15780601f10610796576101008083540402835291602001916107c1565b820191906000526020600020905b8154815290600101906020018083116107a457829003601f168201915b5050505050815260200160018201548152505081526020019060010190610715565b50505050815250509050919050565b60008060019054906101000a900460ff161590508080156108235750600160008054906101000a900460ff1660ff16105b80610850575061083230610f70565b15801561084f5750600160008054906101000a900460ff1660ff16145b5b61088f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088690611b33565b60405180910390fd5b60016000806101000a81548160ff021916908360ff16021790555080156108cc576001600060016101000a81548160ff0219169083151502179055505b6108d4610f93565b6108dc610fec565b6108e4611045565b801561093d5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516109349190611a36565b60405180910390a15b50565b6000609a83836040516109549291906119e7565b908152602001604051809103902054905092915050565b610973610d80565b61097b6110a8565b610983611045565b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6109b7610d80565b6109bf610dfe565b8060978190555050565b60975481565b600082826000609a83836040516109e79291906119e7565b90815260200160405180910390205414610a36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2d90611b13565b60405180910390fd5b610a3e6110a8565b600060975490508585609960008481526020019081526020016000209190610a679291906111f7565b5080609a8787604051610a7b9291906119e7565b9081526020016040518091039020819055507f96a65efbb6991f67fc8a4c7550fcfd08f1968737d2f5adcded5cd937b3cc0f3d818787604051610ac093929190611bf0565b60405180910390a160976000815480929190610adb906124c8565b919050555080935050505092915050565b609860009054906101000a900460ff1681565b81816000609a8383604051610b159291906119e7565b90815260200160405180910390205414610b64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5b90611b13565b60405180910390fd5b610b6c6110a8565b6000609960008781526020019081526020016000208054610b8c90612449565b905014610bce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc590611a93565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16609b600087815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6990611b93565b60405180910390fd5b8383609960008881526020019081526020016000209190610c949291906111f7565b5084609a8585604051610ca89291906119e7565b9081526020016040518091039020819055507f442b41840a10393534508176faee6f70b1870707dc24573b67d49f28cbac7f1c858585604051610ced93929190611bf0565b60405180910390a15050505050565b610d04610d80565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6b90611ab3565b60405180910390fd5b610d7d81610eaa565b50565b610d886110f2565b73ffffffffffffffffffffffffffffffffffffffff16610da6610985565b73ffffffffffffffffffffffffffffffffffffffff1614610dfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df390611b53565b60405180910390fd5b565b610e0661060b565b610e45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3c90611a73565b60405180910390fd5b565b610e4f610dfe565b6000606560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa610e936110f2565b604051610ea09190611a00565b60405180910390a1565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16610fe2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd990611b73565b60405180910390fd5b610fea6110fa565b565b600060019054906101000a900460ff1661103b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103290611b73565b60405180910390fd5b61104361115b565b565b61104d6110a8565b6001606560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586110916110f2565b60405161109e9190611a00565b60405180910390a1565b6110b061060b565b156110f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e790611af3565b60405180910390fd5b565b600033905090565b600060019054906101000a900460ff16611149576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114090611b73565b60405180910390fd5b6111596111546110f2565b610eaa565b565b600060019054906101000a900460ff166111aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a190611b73565b60405180910390fd5b6000606560006101000a81548160ff021916908315150217905550565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b82805461120390612449565b90600052602060002090601f016020900481019282611225576000855561126c565b82601f1061123e57803560ff191683800117855561126c565b8280016001018555821561126c579182015b8281111561126b578235825591602001919060010190611250565b5b509050611279919061127d565b5090565b5b8082111561129657600081600090555060010161127e565b5090565b60006112ad6112a884611d49565b611d24565b9050828152602081018484840111156112c557600080fd5b6112d084828561237b565b509392505050565b6000813590506112e781612b59565b92915050565b60008083601f8401126112ff57600080fd5b8235905067ffffffffffffffff81111561131857600080fd5b60208301915083600182028301111561133057600080fd5b9250929050565b600082601f83011261134857600080fd5b813561135884826020860161129a565b91505092915050565b60006040828403121561137357600080fd5b81905092915050565b60008135905061138b81612b70565b92915050565b6000602082840312156113a357600080fd5b60006113b1848285016112d8565b91505092915050565b600080602083850312156113cd57600080fd5b600083013567ffffffffffffffff8111156113e757600080fd5b6113f3858286016112ed565b92509250509250929050565b60006020828403121561141157600080fd5b600082013567ffffffffffffffff81111561142b57600080fd5b61143784828501611337565b91505092915050565b60006020828403121561145257600080fd5b60006114608482850161137c565b91505092915050565b60008060006040848603121561147e57600080fd5b600061148c8682870161137c565b935050602084013567ffffffffffffffff8111156114a957600080fd5b6114b5868287016112ed565b92509250509250925092565b600080604083850312156114d457600080fd5b60006114e28582860161137c565b925050602083013567ffffffffffffffff8111156114ff57600080fd5b61150b85828601611361565b9150509250929050565b6000611521838361193d565b905092915050565b6000611535838361198c565b905092915050565b611546816120c3565b82525050565b611555816120c3565b82525050565b60006115678385611e26565b93508360208402850161157984611d91565b8060005b878110156115bd578484038952611594828461202e565b61159e8582611515565b94506115a983611e0c565b925060208a0199505060018101905061157d565b50829750879450505050509392505050565b60006115da82611de0565b6115e48185611e26565b9350836020820285016115f685611d9b565b8060005b8581101561163257848403895281516116138582611529565b945061161e83611e19565b925060208a019950506001810190506115fa565b50829750879550505050505092915050565b61164d816120d5565b82525050565b61165c816121be565b82525050565b600061166e8385611e37565b935061167b83858461237b565b6116848361271f565b840190509392505050565b600061169b8385611e48565b93506116a883858461237b565b6116b18361271f565b840190509392505050565b60006116c88385611e59565b93506116d583858461237b565b82840190509392505050565b60006116ec82611e01565b6116f68185611e37565b935061170681856020860161238a565b61170f8161271f565b840191505092915050565b600061172582611e01565b61172f8185611e48565b935061173f81856020860161238a565b6117488161271f565b840191505092915050565b6000611760601483611e48565b915061176b826127ab565b602082019050919050565b6000611783601583611e48565b915061178e826127d4565b602082019050919050565b60006117a6602683611e48565b91506117b1826127fd565b604082019050919050565b60006117c9601383611e48565b91506117d48261284c565b602082019050919050565b60006117ec601083611e48565b91506117f782612875565b602082019050919050565b600061180f601983611e48565b915061181a8261289e565b602082019050919050565b6000611832602e83611e48565b915061183d826128c7565b604082019050919050565b6000611855602083611e48565b915061186082612916565b602082019050919050565b6000611878602b83611e48565b91506118838261293f565b604082019050919050565b600061189b601983611e48565b91506118a68261298e565b602082019050919050565b6000604083016118c46000840184611f69565b6118d1600086018261153d565b506118df6020840184611f80565b85830360208701526118f283828461155b565b925050508091505092915050565b6000604083016000830151611918600086018261153d565b506020830151848203602086015261193082826115cf565b9150508091505092915050565b6000604083016119506000840184611fd7565b8583036000870152611963838284611662565b925050506119746020840184612052565b61198160208601826119c9565b508091505092915050565b600060408301600083015184820360008601526119a982826116e1565b91505060208301516119be60208601826119c9565b508091505092915050565b6119d281612101565b82525050565b6119e181612101565b82525050565b60006119f48284866116bc565b91508190509392505050565b6000602082019050611a15600083018461154c565b92915050565b6000602082019050611a306000830184611644565b92915050565b6000602082019050611a4b6000830184611653565b92915050565b60006020820190508181036000830152611a6b818461171a565b905092915050565b60006020820190508181036000830152611a8c81611753565b9050919050565b60006020820190508181036000830152611aac81611776565b9050919050565b60006020820190508181036000830152611acc81611799565b9050919050565b60006020820190508181036000830152611aec816117bc565b9050919050565b60006020820190508181036000830152611b0c816117df565b9050919050565b60006020820190508181036000830152611b2c81611802565b9050919050565b60006020820190508181036000830152611b4c81611825565b9050919050565b60006020820190508181036000830152611b6c81611848565b9050919050565b60006020820190508181036000830152611b8c8161186b565b9050919050565b60006020820190508181036000830152611bac8161188e565b9050919050565b60006020820190508181036000830152611bcd8184611900565b905092915050565b6000602082019050611bea60008301846119d8565b92915050565b6000604082019050611c0560008301866119d8565b8181036020830152611c1881848661168f565b9050949350505050565b6000604082019050611c3760008301856119d8565b8181036020830152611c4981846118b1565b90509392505050565b60008083356001602003843603038112611c6b57600080fd5b80840192508235915067ffffffffffffffff821115611c8957600080fd5b602083019250602082023603831315611ca157600080fd5b509250929050565b60008083356001602003843603038112611cc257600080fd5b80840192508235915067ffffffffffffffff821115611ce057600080fd5b602083019250600182023603831315611cf857600080fd5b509250929050565b600082356001604003833603038112611d1857600080fd5b80830191505092915050565b6000611d2e611d3f565b9050611d3a8282612497565b919050565b6000604051905090565b600067ffffffffffffffff821115611d6457611d636125bc565b5b611d6d8261271f565b9050602081019050919050565b6000819050611d8a826002612069565b9050919050565b6000819050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b600082905092915050565b600081519050919050565b600081549050919050565b600082905092915050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6020841060008114611ebd57601f841160018114611e8d57611e86868561247b565b8355611eb7565b611e9683611dc0565b611eab6020601f880104820160018301612126565b611eb587856129b7565b505b50611f06565b611ec682611dc0565b6020601f8701048101601f87168015611ee757611ee681600184036125eb565b5b611ef96020601f890104840183612126565b6001886002021785555050505b5050505050565b6020831060008114611f58576020851060008114611f3657611f2f868561247b565b8355611f52565b8360ff1916935083611f4784611dc0565b556001866002020183555b50611f62565b6001856002020182555b5050505050565b6000611f7860208401846112d8565b905092915050565b60008083356001602003843603038112611f9957600080fd5b83810192508235915060208301925067ffffffffffffffff821115611fbd57600080fd5b602082023603841315611fcf57600080fd5b509250929050565b60008083356001602003843603038112611ff057600080fd5b83810192508235915060208301925067ffffffffffffffff82111561201457600080fd5b60018202360384131561202657600080fd5b509250929050565b60008235600160400383360303811261204657600080fd5b82810191505092915050565b6000612061602084018461137c565b905092915050565b600061207482612101565b915061207f83612101565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156120b8576120b761255e565b5b828202905092915050565b60006120ce826120e1565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6121236000826126ca565b50565b5b818110156121455761213a600082612793565b600181019050612127565b5050565b5b818110156121685761215d600082612775565b60028101905061214a565b5050565b8181101561218a5761217f600082612793565b60018101905061216c565b5050565b61219b6000808301612757565b6121a9600060018301612793565b50565b60006121b7826121d0565b9050919050565b60006121c98261210b565b9050919050565b60006121db826121e2565b9050919050565b60006121ed826120e1565b9050919050565b60006121ff82612101565b9050919050565b6122108383611dd5565b61221a8183612666565b61222383611d91565b61222c83611dab565b6000805b84811015612265576122428488611d00565b61224d818486612b16565b60208501945060028401935050600181019050612230565b5050505050505050565b6122798383611df6565b67ffffffffffffffff811115612292576122916125bc565b5b61229c8254612449565b600080601f8411601f841117156122b9576122b685611dc0565b90505b601f8311156122ec576020601f850104810160208510156122d8578190505b6122ea6020601f860104830182612126565b505b601f8411600181146123195760008515612307578388013590505b612311868261247b565b875550612371565b601f1985168260005b8281101561234757858a01358255600182019150602086019550602081019050612322565b8783101561236457858a0135612360601f8a1682612511565b8355505b6001600289020189555050505b5050505050505050565b82818337600083830152505050565b60005b838110156123a857808201518184015260208101905061238d565b838111156123b7576000848401525b50505050565b6000810160008301806123cf8161263a565b90506123db8184612aa2565b50505060018101602083016123f08185611c52565b6123fb818386612ac5565b505050505050565b60008101600083016124158185611ca9565b612420818386612ad5565b5050505060018101602083018061243681612650565b90506124428184612af3565b5050505050565b6000600282049050600182168061246157607f821691505b602082108114156124755761247461258d565b5b50919050565b60006124878383612511565b9150826002028217905092915050565b6124a08261271f565b810181811067ffffffffffffffff821117156124bf576124be6125bc565b5b80604052505050565b60006124d382612101565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156125065761250561255e565b5b600182019050919050565b60006125226000198460080261274a565b1980831691505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61261b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8360200360080261274a565b815481168255505050565b6000819050919050565b6000819050919050565b6000813561264781612b59565b80915050919050565b6000813561265d81612b70565b80915050919050565b680100000000000000008211156126805761267f6125bc565b5b61268981611deb565b828255808310156126c55761269d81611d7a565b6126a684611d7a565b6126af84611dab565b8181018382016126bf8183612149565b50505050505b505050565b680100000000000000008211156126e4576126e36125bc565b5b80546126ef81612449565b808411156127045761270384828486611f0d565b5b808410156127195761271884828486611e64565b5b50505050565b6000601f19601f8301169050919050565b60008160001b9050919050565b600082821b905092915050565b600082821c905092915050565b600082146127685761276761252f565b5b61277181612118565b5050565b600082146127865761278561252f565b5b61278f8161218e565b5050565b61279b612b87565b6127a6818484612b34565b505050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f6470696420616c72656164792075706772616465640000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f6d6967726174696f6e2069732066726f7a656e00000000000000000000000000600082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b7f73747265616d20616c7265616479206861732061206450494400000000000000600082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f756e617574686f72697a65642064706964207570677261646500000000000000600082015250565b6129c081611dc0565b6129cb83825461247b565b8083556000825550505050565b600073ffffffffffffffffffffffffffffffffffffffff6129f884612730565b9350801983169250808416831791505092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612a3a84612730565b9350801983169250808416831791505092915050565b600060088302612a807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261273d565b612a8a868361273d565b95508019841693508086168417925050509392505050565b612aab826121ac565b612abe612ab782612626565b83546129d8565b8255505050565b612ad0838383612206565b505050565b612ae083838361226f565b505050565b612aef82826123bd565b5050565b612afc826121f4565b612b0f612b0882612630565b8354612a0e565b8255505050565b8115612b2557612b2461252f565b5b612b2f8382612403565b505050565b612b3d836121f4565b612b51612b4982612630565b848454612a50565b825550505050565b612b62816120c3565b8114612b6d57600080fd5b50565b612b7981612101565b8114612b8457600080fd5b50565b60009056fea264697066735822122025321e8b3f610ad6d87a9b3497059176ff710a769edbe017d76013391f10763b64736f6c63430008040033"; type DpidAliasRegistryConstructorParams = | [signer?: Signer] diff --git a/desci-contracts/typechain-types/factories/PausableUpgradeable__factory.ts b/desci-contracts/typechain-types/factories/PausableUpgradeable__factory.ts new file mode 100644 index 000000000..8fd62b94a --- /dev/null +++ b/desci-contracts/typechain-types/factories/PausableUpgradeable__factory.ts @@ -0,0 +1,78 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import { Provider } from "@ethersproject/providers"; +import type { + PausableUpgradeable, + PausableUpgradeableInterface, +} from "../PausableUpgradeable"; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint8", + name: "version", + type: "uint8", + }, + ], + name: "Initialized", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "Paused", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "Unpaused", + type: "event", + }, + { + inputs: [], + name: "paused", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, +]; + +export class PausableUpgradeable__factory { + static readonly abi = _abi; + static createInterface(): PausableUpgradeableInterface { + return new utils.Interface(_abi) as PausableUpgradeableInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): PausableUpgradeable { + return new Contract(address, _abi, signerOrProvider) as PausableUpgradeable; + } +} diff --git a/desci-contracts/typechain-types/hardhat.d.ts b/desci-contracts/typechain-types/hardhat.d.ts index 116bf02cc..b99c3c379 100644 --- a/desci-contracts/typechain-types/hardhat.d.ts +++ b/desci-contracts/typechain-types/hardhat.d.ts @@ -20,6 +20,10 @@ declare module "hardhat/types/runtime" { name: "Initializable", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; + getContractFactory( + name: "PausableUpgradeable", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "ERC721Upgradeable", signerOrOptions?: ethers.Signer | FactoryOptions @@ -119,6 +123,11 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; + getContractAt( + name: "PausableUpgradeable", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( name: "ERC721Upgradeable", address: string, diff --git a/desci-contracts/typechain-types/index.ts b/desci-contracts/typechain-types/index.ts index 5b992f0f4..ce39e83c7 100644 --- a/desci-contracts/typechain-types/index.ts +++ b/desci-contracts/typechain-types/index.ts @@ -3,6 +3,7 @@ /* eslint-disable */ export type { OwnableUpgradeable } from "./OwnableUpgradeable"; export type { Initializable } from "./Initializable"; +export type { PausableUpgradeable } from "./PausableUpgradeable"; export type { ERC721Upgradeable } from "./ERC721Upgradeable"; export type { IERC721MetadataUpgradeable } from "./IERC721MetadataUpgradeable"; export type { IERC721ReceiverUpgradeable } from "./IERC721ReceiverUpgradeable"; @@ -28,6 +29,7 @@ export type { VersionedERC721V2 } from "./VersionedERC721V2"; export { OwnableUpgradeable__factory } from "./factories/OwnableUpgradeable__factory"; export { Initializable__factory } from "./factories/Initializable__factory"; +export { PausableUpgradeable__factory } from "./factories/PausableUpgradeable__factory"; export { ERC721Upgradeable__factory } from "./factories/ERC721Upgradeable__factory"; export { IERC721MetadataUpgradeable__factory } from "./factories/IERC721MetadataUpgradeable__factory"; export { IERC721ReceiverUpgradeable__factory } from "./factories/IERC721ReceiverUpgradeable__factory"; From 4000971b891b6a5f40a854b4126019e30e29c821 Mon Sep 17 00:00:00 2001 From: m0ar Date: Sun, 2 Jun 2024 12:00:58 +0200 Subject: [PATCH 10/34] contracts: alias registry migration scripts, expand tests --- .../scripts/migrateToAliasRegistry.mjs | 42 +++++++++++------ .../scripts/syncAliasRegistryMigration.mjs | 46 ++++++++++++++++--- desci-contracts/test/DpidAliasRegistry.ts | 19 +++++--- 3 files changed, 81 insertions(+), 26 deletions(-) diff --git a/desci-contracts/scripts/migrateToAliasRegistry.mjs b/desci-contracts/scripts/migrateToAliasRegistry.mjs index 0ac02c1dd..e650b4464 100644 --- a/desci-contracts/scripts/migrateToAliasRegistry.mjs +++ b/desci-contracts/scripts/migrateToAliasRegistry.mjs @@ -1,13 +1,31 @@ +/** + * ALIAS REGISTRY MIGRATION + * + * Deploys a new dPID alias registry, through proxy. Imports existing dPID's as + * legacy entries, and validates the correctness of these imports afterward. + * If the imports are interrupted, it can be continued using the syncAliasRegistryMigration.mjs + * script. The registry is initialized in a paused state, meaning minting new dPID's + * is disabled, but imports and other administration like configuring the dPID + * counter can still be done. + * + * The script performs the following actions: + * - Deploys new instance of the registry + * - Imports legacy dPID's, validating correctness + * - Immediately pauses minting of new dPID's + * + * Steps required to fully activate: + * - Admin calls `setNextDpid` to whatever is the next when legacy contract is disabled + * - Admin calls `unpause` to allow minting new dPID's + * + * Required arguments (env variables): + * 1. PRIVATE_KEY - Owner/admin identity (see hardhat.config.ts) + * 2. ENV - Environment to sync legacy entires from ("dev" or "prod") + */ import hardhat from "hardhat"; const { ethers, hardhatArguments } = hardhat; import axios from "axios"; import { writeFileSync } from "fs"; -const FIRST_DPID = process.env.FIRST_DPID; -if (FIRST_DPID === undefined) { - throw new Error("FIRST_DPID unset"); -}; - const ENV = process.env.ENV; if (ENV === undefined) { throw new Error("ENV unset"); @@ -37,7 +55,7 @@ const toImportEntry = (dpid) => [ dpid.dpid, { owner: dpid.researchObject.owner, - versions: dpid.researchObject.versions.map(v => ({cid: v.cid, time: v.time})) + versions: dpid.researchObject.versions.map(v => ({cid: v.cid, time: v.time})), }, ]; @@ -47,11 +65,9 @@ const DpidAliasRegistryFactory = await ethers.getContractFactory("DpidAliasRegis const registry = await upgrades.deployProxy( DpidAliasRegistryFactory, - [ - FIRST_DPID - ], + [], { - initializer: "initialize" + initializer: "initialize", } ); @@ -76,7 +92,7 @@ for (const [ dpid, entry ] of importEntries) { const imported = { dpid, owner: fromContract[0], - versions: fromContract[1].map(([cid, time]) => ({cid, time: ethers.BigNumber.from(time).toNumber() })) + versions: fromContract[1].map(([cid, time]) => ({cid, time: ethers.BigNumber.from(time).toNumber() })), }; console.log(`🔎 Verifying dPID ${dpid}:`); @@ -116,10 +132,10 @@ for (let i = 0; i < importEntries.length; i++) { }; }; -console.log(`❓ dPID's missing from original set: ${JSON.stringify(missingNumbers)}`) +console.log(`❓ dPID's missing from original set: ${JSON.stringify(missingNumbers)}`); const duration = Math.ceil((Date.now() - startTime) / 1000); -console.log(`🏁 migration done in ${duration}s for a total of ${totalGas} gas`) +console.log(`🏁 migration done in ${duration}s for a total of ${totalGas} gas`); const dateString = new Date().toUTCString().replaceAll(" ", "_"); const logFilePath = `migration-data/aliasRegistry_${dateString}.json`; diff --git a/desci-contracts/scripts/syncAliasRegistryMigration.mjs b/desci-contracts/scripts/syncAliasRegistryMigration.mjs index 36631517f..af523065d 100644 --- a/desci-contracts/scripts/syncAliasRegistryMigration.mjs +++ b/desci-contracts/scripts/syncAliasRegistryMigration.mjs @@ -1,3 +1,22 @@ +/** + * ALIAS REGISTRY MIGRATION SYNC + * + * For an already deployed alias registry, import missing delta of legacy dPID + * entries from the dpid.org API. This script is idempotent, and can hance be + * run many times. Existing entries are just validated, not edited. + * + * The script performs the following actions: + * - If an entry is missing, it is imported. + * - All entries, old and new, are be validated against the dPID API. + * - Owner address and full version history is checked. + * - If an entry fails validate, a warning is printed. The issue is not fixed. + * - Manually running import of the failing dPID overwrites the erroneous entry. + * + * + * Required arguments (env variables): + * 1. REGISTRY_ADDRESS - Address of existing alias registry (proxy) contract + * 2. ENV - Environment to sync legacy entires from ("dev" or "prod") + */ import hardhat from "hardhat"; const { ethers, hardhatArguments } = hardhat; import axios from "axios"; @@ -8,9 +27,23 @@ if (REGISTRY_ADDRESS === undefined) { throw new Error("REGISTRY_ADDRESS unset"); }; +const ENV = process.env.ENV; +if (ENV === undefined) { + throw new Error("ENV unset"); +}; + +let dpidApi; +if (ENV === "dev") { + dpidApi = "dev-beta"; +} else if (ENV === "prod") { + dpidApi = "beta"; +} else { + throw new Error(`Env "${ENV} unknown (use "dev" or "prod")`); +}; + const getDpidPage = async (page) => { const { data } = await axios.get( - `https://dev-beta.dpid.org/api/v1/dpid?size=100&page=${page}` + `https://${dpidApi}.dpid.org/api/v1/dpid?size=100&page=${page}` ); return data; }; @@ -23,7 +56,7 @@ const toImportEntry = (dpid) => [ dpid.dpid, { owner: dpid.researchObject.owner, - versions: dpid.researchObject.versions.map(v => ({cid: v.cid, time: v.time})) + versions: dpid.researchObject.versions.map(v => ({cid: v.cid, time: v.time})), } ]; @@ -53,7 +86,7 @@ for (const [ dpid, entry ] of importEntries) { const imported = { dpid, owner: fromContract[0], - versions: fromContract[1].map(([cid, time]) => ({cid, time: ethers.BigNumber.from(time).toNumber() })) + versions: fromContract[1].map(([cid, time]) => ({cid, time: ethers.BigNumber.from(time).toNumber() })), }; console.log(`🔎 Verifying dPID ${dpid}:`); @@ -81,17 +114,16 @@ for (const [ dpid, entry ] of importEntries) { }; }; - results.push({ dpid, owner: imported.owner, versions: imported.versions, importError: validationError }); }; const failures = results.filter(r => r.validationError); -console.log(`🚦 dPIDs which failed validation (manually import to overwrite): ${JSON.stringify(failures)}`) +console.log(`🚦 dPIDs which failed validation (manually import to overwrite): ${JSON.stringify(failures)}`); const duration = Math.ceil((Date.now() - startTime) / 1000); -console.log(`🏁 migration done in ${duration}s for a total of ${totalGas} gas`) +console.log(`🏁 sync done in ${duration}s for a total of ${totalGas} gas`); const dateString = new Date().toUTCString().replaceAll(" ", "_"); -const logFilePath = `migration-data/aliasRegistry_${dateString}.json`; +const logFilePath = `migration-data/aliasRegistrySync_${dateString}.json`; writeFileSync(logFilePath, JSON.stringify(results, undefined, 2)); console.log(`📝 migration data written to ${logFilePath}`); diff --git a/desci-contracts/test/DpidAliasRegistry.ts b/desci-contracts/test/DpidAliasRegistry.ts index a8cb2ef3e..737e7be9a 100644 --- a/desci-contracts/test/DpidAliasRegistry.ts +++ b/desci-contracts/test/DpidAliasRegistry.ts @@ -13,7 +13,7 @@ use(chaiAsPromised); describe("dPID", () => { let _accounts: SignerWithAddress[]; - let owner: SignerWithAddress; + let deployerAddress: SignerWithAddress; let user1: SignerWithAddress; let user2: SignerWithAddress; let DpidAliasRegistryFactory: DpidAliasRegistry__factory; @@ -21,7 +21,7 @@ describe("dPID", () => { before( async () => { _accounts = await hhe.getSigners() - owner = _accounts[0]; + deployerAddress = _accounts[0]; user1 = _accounts[1]; user2 = _accounts[2]; @@ -53,7 +53,7 @@ describe("dPID", () => { implAddress, proxyAddress, implOwner: await dpidAliasRegistry.owner(), - }) + }); }); it("costs a reasonable amount of gas", async () => { @@ -67,9 +67,16 @@ describe("dPID", () => { expect(proxyAddress).not.to.equal(implAddress); }); + it("allows deployer to call ownership transfer of ProxyAdmin contract", async () => { + // re-set to self + const doTransfer = async () => + await upgrades.admin.transferProxyAdminOwnership(proxyAddress, deployerAddress); + await expect(doTransfer()).not.to.be.rejected; + }); + it("deploys implementation with proxy owner as owner", async () => { const registryOwner = await dpidAliasRegistry.owner(); - expect(registryOwner).to.equal(owner.address); + expect(registryOwner).to.equal(deployerAddress.address); }); it("deploys contract in paused state", async () => { @@ -164,7 +171,7 @@ describe("dPID", () => { it("can be done by contract owner", async () => { const tx = await dpidAliasRegistry - .connect(owner) + .connect(deployerAddress) .importLegacyDpid(0, migrationEntry); successReceipt = await tx.wait(); }); @@ -210,7 +217,7 @@ describe("dPID", () => { it("can NOT be done by contract owner", async () => { const doUpgrade = async () => await dpidAliasRegistry - .connect(owner) + .connect(deployerAddress) .upgradeDpid(0, STREAM_C); await expect(doUpgrade()).to.be.rejectedWith("unauthorized dpid upgrade"); From b28cf83a3b889ad7fd1e12ad2820378622fd2c96 Mon Sep 17 00:00:00 2001 From: m0ar Date: Mon, 3 Jun 2024 14:39:20 +0200 Subject: [PATCH 11/34] contracts: make dev deployment to OP Sepolia, save migration data, export address from package --- .../opSepoliaDev-dpid-alias-registry.json | 209 + desci-contracts/index.ts | 3 +- ...ry_dev__Mon,_03_Jun_2024_11:21:28_GMT.json | 4878 +++++++++++++++++ desci-contracts/package.json | 2 +- .../scripts/migrateToAliasRegistry.mjs | 4 +- .../scripts/syncAliasRegistryMigration.mjs | 35 +- 6 files changed, 5119 insertions(+), 12 deletions(-) create mode 100644 desci-contracts/.openzeppelin/opSepoliaDev-dpid-alias-registry.json create mode 100644 desci-contracts/migration-data/aliasRegistry_dev__Mon,_03_Jun_2024_11:21:28_GMT.json diff --git a/desci-contracts/.openzeppelin/opSepoliaDev-dpid-alias-registry.json b/desci-contracts/.openzeppelin/opSepoliaDev-dpid-alias-registry.json new file mode 100644 index 000000000..6af451319 --- /dev/null +++ b/desci-contracts/.openzeppelin/opSepoliaDev-dpid-alias-registry.json @@ -0,0 +1,209 @@ +{ + "manifestVersion": "3.2", + "admin": { + "address": "0x64f1dE5b953135c5cEC03DB2B99ffcA0fe11eF88", + "txHash": "0xa1134fbf6b5e3bdfc450beafff59cfb7c3e978014396d52775a304dca2bffb97" + }, + "proxies": [ + { + "address": "0x7906AC53C2F59d0Eb36dC126336322d25Da15B62", + "txHash": "0xf583111b6d255339f06748889e3adbf9fc313bcdad0480b22f4767b179c673d7", + "kind": "transparent" + } + ], + "impls": { + "e48cadec43394f09ce202bd07138068396bd5f4bf01fcb81e0856ebd63ce19bc": { + "address": "0x5f8ffCbAeAB5F7749bc3Cb333e634265C2D3DF22", + "txHash": "0x996f85a02d3bd579767511ed14a00ebe74ef6ba40319f09f049ad32797dc8d0f", + "layout": { + "solcVersion": "0.8.4", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" + }, + { + "label": "_owner", + "offset": 0, + "slot": "51", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "52", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" + }, + { + "label": "_paused", + "offset": 0, + "slot": "101", + "type": "t_bool", + "contract": "PausableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol:29" + }, + { + "label": "__gap", + "offset": 0, + "slot": "102", + "type": "t_array(t_uint256)49_storage", + "contract": "PausableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol:116" + }, + { + "label": "nextDpid", + "offset": 0, + "slot": "151", + "type": "t_uint256", + "contract": "DpidAliasRegistry", + "src": "contracts/DpidAliasRegistry.sol:10" + }, + { + "label": "migrationFrozen", + "offset": 0, + "slot": "152", + "type": "t_bool", + "contract": "DpidAliasRegistry", + "src": "contracts/DpidAliasRegistry.sol:13" + }, + { + "label": "registry", + "offset": 0, + "slot": "153", + "type": "t_mapping(t_uint256,t_string_storage)", + "contract": "DpidAliasRegistry", + "src": "contracts/DpidAliasRegistry.sol:16" + }, + { + "label": "reverseRegistry", + "offset": 0, + "slot": "154", + "type": "t_mapping(t_string_memory_ptr,t_uint256)", + "contract": "DpidAliasRegistry", + "src": "contracts/DpidAliasRegistry.sol:19" + }, + { + "label": "legacy", + "offset": 0, + "slot": "155", + "type": "t_mapping(t_uint256,t_struct(LegacyDpidEntry)845_storage)", + "contract": "DpidAliasRegistry", + "src": "contracts/DpidAliasRegistry.sol:128" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_struct(LegacyVersion)838_storage)dyn_storage": { + "label": "struct DpidAliasRegistry.LegacyVersion[]", + "numberOfBytes": "32" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_mapping(t_string_memory_ptr,t_uint256)": { + "label": "mapping(string => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_string_storage)": { + "label": "mapping(uint256 => string)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(LegacyDpidEntry)845_storage)": { + "label": "mapping(uint256 => struct DpidAliasRegistry.LegacyDpidEntry)", + "numberOfBytes": "32" + }, + "t_string_memory_ptr": { + "label": "string", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(LegacyDpidEntry)845_storage": { + "label": "struct DpidAliasRegistry.LegacyDpidEntry", + "members": [ + { + "label": "owner", + "type": "t_address", + "offset": 0, + "slot": "0" + }, + { + "label": "versions", + "type": "t_array(t_struct(LegacyVersion)838_storage)dyn_storage", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_struct(LegacyVersion)838_storage": { + "label": "struct DpidAliasRegistry.LegacyVersion", + "members": [ + { + "label": "cid", + "type": "t_string_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "time", + "type": "t_uint256", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + } + } + } +} diff --git a/desci-contracts/index.ts b/desci-contracts/index.ts index 624df4a5f..960d0e4d1 100644 --- a/desci-contracts/index.ts +++ b/desci-contracts/index.ts @@ -6,6 +6,7 @@ import devDpidInfo from "./.openzeppelin/sepoliaDev-dpid.json"; import prodRoInfo from "./.openzeppelin/sepoliaProd-research-object.json"; import prodDpidInfo from "./.openzeppelin/sepoliaProd-dpid.json"; import localDpidAliasInfo from "./.openzeppelin/unknown-dpid-alias-registry.json"; +import devDpidAliasInfo from "./.openzeppelin/opSepoliaDev-dpid-alias-registry.json"; export const contracts = { localRoInfo, @@ -15,7 +16,7 @@ export const contracts = { prodRoInfo, prodDpidInfo, localDpidAliasInfo, + devDpidAliasInfo, // TODO update as soon as deployment is done - devDpidAliasInfo: localDpidAliasInfo, prodDpidAliasInfo: localDpidAliasInfo, }; diff --git a/desci-contracts/migration-data/aliasRegistry_dev__Mon,_03_Jun_2024_11:21:28_GMT.json b/desci-contracts/migration-data/aliasRegistry_dev__Mon,_03_Jun_2024_11:21:28_GMT.json new file mode 100644 index 000000000..bfec26fcd --- /dev/null +++ b/desci-contracts/migration-data/aliasRegistry_dev__Mon,_03_Jun_2024_11:21:28_GMT.json @@ -0,0 +1,4878 @@ +{ + "address": "0x7906AC53C2F59d0Eb36dC126336322d25Da15B62", + "dpids": [ + { + "dpid": "0", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreie2idd2yuwibppujafgtfc6cczopht4q47y563q4paml2me2dsh6y", + "time": 1675737468 + }, + { + "cid": "bafkreie2idd2yuwibppujafgtfc6cczopht4q47y563q4paml2me2dsh6y", + "time": 1675737468 + } + ], + "validationError": false + }, + { + "dpid": "1", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigbp7bahnrxujbz5uu3j6hzmyimq7wijkucwyi4bc5tbvka5xw3wq", + "time": 1675781796 + }, + { + "cid": "bafkreigbp7bahnrxujbz5uu3j6hzmyimq7wijkucwyi4bc5tbvka5xw3wq", + "time": 1675781796 + }, + { + "cid": "bafkreigwzsizb76b62ln5xnhhqeypxhyqwwyp56zcprl52siut2q7h2lky", + "time": 1682818404 + }, + { + "cid": "bafkreigwzsizb76b62ln5xnhhqeypxhyqwwyp56zcprl52siut2q7h2lky", + "time": 1682818404 + }, + { + "cid": "bafkreigwzsizb76b62ln5xnhhqeypxhyqwwyp56zcprl52siut2q7h2lky", + "time": 1682818608 + }, + { + "cid": "bafkreigwzsizb76b62ln5xnhhqeypxhyqwwyp56zcprl52siut2q7h2lky", + "time": 1682818608 + } + ], + "validationError": false + }, + { + "dpid": "2", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihlsxjw3gzrikm2att6sd2yty4qx37z3fgmzokrm6fd3oony2qqby", + "time": 1676095440 + }, + { + "cid": "bafkreihlsxjw3gzrikm2att6sd2yty4qx37z3fgmzokrm6fd3oony2qqby", + "time": 1676095440 + }, + { + "cid": "bafkreigvalv7basyqxn57b5ittssieecsccy7qaypmy6s7egr2o5tcqnda", + "time": 1676096820 + }, + { + "cid": "bafkreigvalv7basyqxn57b5ittssieecsccy7qaypmy6s7egr2o5tcqnda", + "time": 1676096820 + } + ], + "validationError": false + }, + { + "dpid": "3", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiancsq3yywjzkoyevwhn4hxyzgcfbdb72jspegmwy6uacd2cztpra", + "time": 1676725008 + }, + { + "cid": "bafkreiancsq3yywjzkoyevwhn4hxyzgcfbdb72jspegmwy6uacd2cztpra", + "time": 1676725008 + } + ], + "validationError": false + }, + { + "dpid": "4", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreick32zk4ennjwwy7vqva7wpjo2w5d4fkwhg7hkrdjk63xq5r6gup4", + "time": 1676988612 + }, + { + "cid": "bafkreick32zk4ennjwwy7vqva7wpjo2w5d4fkwhg7hkrdjk63xq5r6gup4", + "time": 1676988612 + } + ], + "validationError": false + }, + { + "dpid": "5", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihra4e2ejsm7yqra4wmo2ww43j4ndvylfsrv5obobkl2k666baram", + "time": 1676996292 + }, + { + "cid": "bafkreihra4e2ejsm7yqra4wmo2ww43j4ndvylfsrv5obobkl2k666baram", + "time": 1676996292 + } + ], + "validationError": false + }, + { + "dpid": "6", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiee7atuqdvq7dtxf2msslelz2ubst2g64oigetxunn352ryqvuoti", + "time": 1677066240 + }, + { + "cid": "bafkreiee7atuqdvq7dtxf2msslelz2ubst2g64oigetxunn352ryqvuoti", + "time": 1677066240 + } + ], + "validationError": false + }, + { + "dpid": "7", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidi2idvbbbg5y6iuf3bnbdo7gkyzgoz3hik2hghr3rl3gd7nplnwe", + "time": 1677080820 + }, + { + "cid": "bafkreidi2idvbbbg5y6iuf3bnbdo7gkyzgoz3hik2hghr3rl3gd7nplnwe", + "time": 1677080820 + }, + { + "cid": "bafkreicyvzgk632l2zn55dkbscjrwrlrxlckrxjhpxn6kiv4roegwzprpi", + "time": 1677081012 + }, + { + "cid": "bafkreicyvzgk632l2zn55dkbscjrwrlrxlckrxjhpxn6kiv4roegwzprpi", + "time": 1677081012 + } + ], + "validationError": false + }, + { + "dpid": "8", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibnhuq4tliestyutqxrfco4wwr3gxyrp7dlydxvgkddo6euet5yyu", + "time": 1677144720 + }, + { + "cid": "bafkreibnhuq4tliestyutqxrfco4wwr3gxyrp7dlydxvgkddo6euet5yyu", + "time": 1677144720 + } + ], + "validationError": false + }, + { + "dpid": "9", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigjjlyedw3l7yfunjhaooe226hemiqz7pkeqb3arfmwvujknaa7pe", + "time": 1677230328 + }, + { + "cid": "bafkreigjjlyedw3l7yfunjhaooe226hemiqz7pkeqb3arfmwvujknaa7pe", + "time": 1677230328 + } + ], + "validationError": false + }, + { + "dpid": "10", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihbcdgctujsajvlhbbcghfkg766pprlgatvujzkw6utteryn737wi", + "time": 1677510672 + }, + { + "cid": "bafkreihbcdgctujsajvlhbbcghfkg766pprlgatvujzkw6utteryn737wi", + "time": 1677510672 + }, + { + "cid": "bafkreif6omh6d2nosj7exr4gybupz3i6owb7ig7mfha23bebzbbzgtj3ty", + "time": 1677511224 + }, + { + "cid": "bafkreif6omh6d2nosj7exr4gybupz3i6owb7ig7mfha23bebzbbzgtj3ty", + "time": 1677511224 + } + ], + "validationError": false + }, + { + "dpid": "11", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreig75cxpsu2zhnkej7nwqszduw6l32luo3opikzsqa5wpfchnl7sua", + "time": 1678309056 + }, + { + "cid": "bafkreig75cxpsu2zhnkej7nwqszduw6l32luo3opikzsqa5wpfchnl7sua", + "time": 1678309056 + } + ], + "validationError": false + }, + { + "dpid": "12", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigvec6jtxth3eessemov7x62wjhtfpfihdleanekwx5l47rkxclcu", + "time": 1678771692 + }, + { + "cid": "bafkreigvec6jtxth3eessemov7x62wjhtfpfihdleanekwx5l47rkxclcu", + "time": 1678771692 + } + ], + "validationError": false + }, + { + "dpid": "13", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreienztazc23yp5ejvwymgekqf2kmx6foasxul7yzt6w5crjwceqsea", + "time": 1678814328 + }, + { + "cid": "bafkreienztazc23yp5ejvwymgekqf2kmx6foasxul7yzt6w5crjwceqsea", + "time": 1678814328 + }, + { + "cid": "bafkreid4yx77dkhlbmx2gqwwki6y2rjmuybnqkxqmxnoyjtx7uhgdkdeu4", + "time": 1680117252 + }, + { + "cid": "bafkreid4yx77dkhlbmx2gqwwki6y2rjmuybnqkxqmxnoyjtx7uhgdkdeu4", + "time": 1680117252 + } + ], + "validationError": false + }, + { + "dpid": "14", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiasx7tcckutok7a7yk7ej2pv6bolo5naihlk2gny6tpykcfvzxqm4", + "time": 1679014104 + }, + { + "cid": "bafkreiasx7tcckutok7a7yk7ej2pv6bolo5naihlk2gny6tpykcfvzxqm4", + "time": 1679014104 + } + ], + "validationError": false + }, + { + "dpid": "15", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifjuqlmsnnr2vlhwxrjsgu5zczwgodqjuzmo4kzgpzzu5zn42ivby", + "time": 1679219244 + }, + { + "cid": "bafkreifjuqlmsnnr2vlhwxrjsgu5zczwgodqjuzmo4kzgpzzu5zn42ivby", + "time": 1679219244 + }, + { + "cid": "bafkreiar3d6vkcyvfnk7kfhu4yrvul6hsn4fnjrwgq7wbl27t4e3ehfhwq", + "time": 1679219328 + }, + { + "cid": "bafkreiar3d6vkcyvfnk7kfhu4yrvul6hsn4fnjrwgq7wbl27t4e3ehfhwq", + "time": 1679219328 + }, + { + "cid": "bafkreiar3d6vkcyvfnk7kfhu4yrvul6hsn4fnjrwgq7wbl27t4e3ehfhwq", + "time": 1679219484 + }, + { + "cid": "bafkreiar3d6vkcyvfnk7kfhu4yrvul6hsn4fnjrwgq7wbl27t4e3ehfhwq", + "time": 1679219484 + } + ], + "validationError": false + }, + { + "dpid": "16", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreig27rnst73rqnqgtesyo32xhrhaqtdxbvtdohwnjdzua7cyapghbu", + "time": 1679343324 + }, + { + "cid": "bafkreig27rnst73rqnqgtesyo32xhrhaqtdxbvtdohwnjdzua7cyapghbu", + "time": 1679343324 + } + ], + "validationError": false + }, + { + "dpid": "17", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigggibyev5x4w3tcydslfl3j5g2fl2sabfcxvdzqeajzfg3tqignq", + "time": 1679409324 + }, + { + "cid": "bafkreigggibyev5x4w3tcydslfl3j5g2fl2sabfcxvdzqeajzfg3tqignq", + "time": 1679409324 + } + ], + "validationError": false + }, + { + "dpid": "18", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigghoctitgbpsjl6elgjkdlpu26t6zon7gqfx7cuhprsyykcjgvee", + "time": 1679409744 + }, + { + "cid": "bafkreigghoctitgbpsjl6elgjkdlpu26t6zon7gqfx7cuhprsyykcjgvee", + "time": 1679409744 + } + ], + "validationError": false + }, + { + "dpid": "19", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicvdmmzw7tyaa7dkaikb7dcowjjbu3cv76rhvxqdbzm7gcg4inrfq", + "time": 1679539764 + }, + { + "cid": "bafkreicvdmmzw7tyaa7dkaikb7dcowjjbu3cv76rhvxqdbzm7gcg4inrfq", + "time": 1679539764 + } + ], + "validationError": false + }, + { + "dpid": "20", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreie6bxf7u3z45sn2amk7ocsjihloiecfncmwsgvqoamqjnczfwnexy", + "time": 1679540424 + }, + { + "cid": "bafkreie6bxf7u3z45sn2amk7ocsjihloiecfncmwsgvqoamqjnczfwnexy", + "time": 1679540424 + }, + { + "cid": "bafkreibnxznsx2xwdasyhjr2epkypjohuvz5qy35iu2elyoygjnfbk7im4", + "time": 1680554796 + }, + { + "cid": "bafkreibnxznsx2xwdasyhjr2epkypjohuvz5qy35iu2elyoygjnfbk7im4", + "time": 1680554796 + } + ], + "validationError": false + }, + { + "dpid": "21", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiecholb67ldemsvyr7js2x6dewjnsylvpk47ejyhrokkbnqbl4i4y", + "time": 1679637204 + }, + { + "cid": "bafkreiecholb67ldemsvyr7js2x6dewjnsylvpk47ejyhrokkbnqbl4i4y", + "time": 1679637204 + }, + { + "cid": "bafkreih6jpxxvs5ruwhfms7t4kg3qv27x6cf4qn7rzoffcjhgctjjcn7my", + "time": 1679637252 + }, + { + "cid": "bafkreih6jpxxvs5ruwhfms7t4kg3qv27x6cf4qn7rzoffcjhgctjjcn7my", + "time": 1679637252 + }, + { + "cid": "bafkreih6jpxxvs5ruwhfms7t4kg3qv27x6cf4qn7rzoffcjhgctjjcn7my", + "time": 1679637288 + }, + { + "cid": "bafkreih6jpxxvs5ruwhfms7t4kg3qv27x6cf4qn7rzoffcjhgctjjcn7my", + "time": 1679637288 + } + ], + "validationError": false + }, + { + "dpid": "22", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreid4d4543faobctzfxh53tfa7u2q7jwqll7g3o52b6ko2vxbq6gya4", + "time": 1679658768 + }, + { + "cid": "bafkreid4d4543faobctzfxh53tfa7u2q7jwqll7g3o52b6ko2vxbq6gya4", + "time": 1679658768 + } + ], + "validationError": false + }, + { + "dpid": "23", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifzp4vuudwvek33rcft2rd2szjrimey7yezcsbm2awkx2tjsunwwi", + "time": 1680567024 + }, + { + "cid": "bafkreifzp4vuudwvek33rcft2rd2szjrimey7yezcsbm2awkx2tjsunwwi", + "time": 1680567024 + } + ], + "validationError": false + }, + { + "dpid": "24", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicqcgfswelv7jvt3o5mirsrwbegst354jzl5znfhsysfi5kwa5oem", + "time": 1681191960 + }, + { + "cid": "bafkreicqcgfswelv7jvt3o5mirsrwbegst354jzl5znfhsysfi5kwa5oem", + "time": 1681191960 + } + ], + "validationError": false + }, + { + "dpid": "25", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiai7ekqchod7c7na6bsc5aeicugtqr2ai4jhdyjal4ukzzjdoxdoi", + "time": 1681495752 + }, + { + "cid": "bafkreiai7ekqchod7c7na6bsc5aeicugtqr2ai4jhdyjal4ukzzjdoxdoi", + "time": 1681495752 + } + ], + "validationError": false + }, + { + "dpid": "26", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiasg744hrz2h6tkkw4a2z55orh33v5rs2j62mx3arsuqxa5dppyzq", + "time": 1681497684 + }, + { + "cid": "bafkreiasg744hrz2h6tkkw4a2z55orh33v5rs2j62mx3arsuqxa5dppyzq", + "time": 1681497684 + }, + { + "cid": "bafkreicbh5ytfk7ohfa7tw44q5nmjkzmqseiesoskwcjntwc6apx7ifyyi", + "time": 1681497900 + }, + { + "cid": "bafkreicbh5ytfk7ohfa7tw44q5nmjkzmqseiesoskwcjntwc6apx7ifyyi", + "time": 1681497900 + } + ], + "validationError": false + }, + { + "dpid": "27", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiehj4xqrpk5m6sdemt5nv6ktb5uxp6ihmg3apdwiu6xhkjzlcmuka", + "time": 1681505184 + }, + { + "cid": "bafkreiehj4xqrpk5m6sdemt5nv6ktb5uxp6ihmg3apdwiu6xhkjzlcmuka", + "time": 1681505184 + } + ], + "validationError": false + }, + { + "dpid": "28", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihmuuks36pyt5quuvjbxkhyu6lhdf3sfbqvfii6j2gemwpu2uc67q", + "time": 1681506588 + }, + { + "cid": "bafkreihmuuks36pyt5quuvjbxkhyu6lhdf3sfbqvfii6j2gemwpu2uc67q", + "time": 1681506588 + } + ], + "validationError": false + }, + { + "dpid": "29", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigifwmh35byvn2yzg2vojm6r6qpjyoce6dfdsacmch336adgqmyee", + "time": 1681736556 + }, + { + "cid": "bafkreigifwmh35byvn2yzg2vojm6r6qpjyoce6dfdsacmch336adgqmyee", + "time": 1681736556 + }, + { + "cid": "bafkreicxifdkouaya7pzrj2upqft2c637t6awklqjsbd76dfog42hxvlqu", + "time": 1681736628 + }, + { + "cid": "bafkreicxifdkouaya7pzrj2upqft2c637t6awklqjsbd76dfog42hxvlqu", + "time": 1681736628 + } + ], + "validationError": false + }, + { + "dpid": "30", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidtjqvqyoq7ehafmy7vvhjlewgtxkxaqr7anwtwtgkzvlogmfwaey", + "time": 1681761420 + }, + { + "cid": "bafkreidtjqvqyoq7ehafmy7vvhjlewgtxkxaqr7anwtwtgkzvlogmfwaey", + "time": 1681761420 + }, + { + "cid": "bafkreif6imae7ikphst6f2opahy2bn4qnm3srzj4rmnpdhrqtykwr6c4yu", + "time": 1681762272 + }, + { + "cid": "bafkreif6imae7ikphst6f2opahy2bn4qnm3srzj4rmnpdhrqtykwr6c4yu", + "time": 1681762272 + } + ], + "validationError": false + }, + { + "dpid": "31", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiahcqh7zzoz27gzh2chwto2u5kabmf2vmca3xbmzrlmgoqucrmfky", + "time": 1681805808 + }, + { + "cid": "bafkreiahcqh7zzoz27gzh2chwto2u5kabmf2vmca3xbmzrlmgoqucrmfky", + "time": 1681805808 + } + ], + "validationError": false + }, + { + "dpid": "32", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiaakpmpc5jr4bp3puzzpdjv5nh3maunzbaug2p335ngmdfsfekkxe", + "time": 1681830960 + }, + { + "cid": "bafkreiaakpmpc5jr4bp3puzzpdjv5nh3maunzbaug2p335ngmdfsfekkxe", + "time": 1681830960 + } + ], + "validationError": false + }, + { + "dpid": "33", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreic2zkjdknqf5kfelzzstfovdwuc2dolbaej7eduedn6md7rpfo27y", + "time": 1682014560 + }, + { + "cid": "bafkreic2zkjdknqf5kfelzzstfovdwuc2dolbaej7eduedn6md7rpfo27y", + "time": 1682014560 + } + ], + "validationError": false + }, + { + "dpid": "34", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibkbhhedb3yazc6rze6772ouoymv3yy5vqmilmwi6eq7yuw3n6tue", + "time": 1682144088 + }, + { + "cid": "bafkreibkbhhedb3yazc6rze6772ouoymv3yy5vqmilmwi6eq7yuw3n6tue", + "time": 1682144088 + } + ], + "validationError": false + }, + { + "dpid": "35", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreih4kylr5z5oppj6wprw2luiyngsn3xq324kfbiku4ehi42dess4oi", + "time": 1682534976 + }, + { + "cid": "bafkreih4kylr5z5oppj6wprw2luiyngsn3xq324kfbiku4ehi42dess4oi", + "time": 1682534976 + }, + { + "cid": "bafkreidasu577tdw76nprafzy7oa42nlr6gcyk45agx3tawrw3zyxu7mva", + "time": 1682746284 + }, + { + "cid": "bafkreidasu577tdw76nprafzy7oa42nlr6gcyk45agx3tawrw3zyxu7mva", + "time": 1682746284 + }, + { + "cid": "bafkreieaozkgywz6vonai3kmhr6cct5jjpeau3lhy2zrb2ft3dsnudaxym", + "time": 1682813004 + }, + { + "cid": "bafkreieaozkgywz6vonai3kmhr6cct5jjpeau3lhy2zrb2ft3dsnudaxym", + "time": 1682813004 + } + ], + "validationError": false + }, + { + "dpid": "36", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifc4so5xny7vpkj62oejlxlnh2zp6w76idbvx3mi2t5nkhxpbenbe", + "time": 1682670864 + }, + { + "cid": "bafkreifc4so5xny7vpkj62oejlxlnh2zp6w76idbvx3mi2t5nkhxpbenbe", + "time": 1682670864 + } + ], + "validationError": false + }, + { + "dpid": "37", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiadoa3b3hvlzpfliappjvhzoacqst2tnu5x7cjvhwcdjhplqakmmy", + "time": 1682793228 + }, + { + "cid": "bafkreiadoa3b3hvlzpfliappjvhzoacqst2tnu5x7cjvhwcdjhplqakmmy", + "time": 1682793228 + }, + { + "cid": "bafkreiad7vwyvhxpgy5i6azrynsnu5g2x5ef7iwjafbnnvukkbc7dvygru", + "time": 1682793408 + }, + { + "cid": "bafkreiad7vwyvhxpgy5i6azrynsnu5g2x5ef7iwjafbnnvukkbc7dvygru", + "time": 1682793408 + } + ], + "validationError": false + }, + { + "dpid": "38", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiagyoholq6ypx4pdby56vfzq7a44q3sn6esvho7wcf6m4eghpcjoa", + "time": 1682813880 + }, + { + "cid": "bafkreiagyoholq6ypx4pdby56vfzq7a44q3sn6esvho7wcf6m4eghpcjoa", + "time": 1682813880 + }, + { + "cid": "bafkreiapfszw7l5sysx2hgophrztwyeonpppem2xxwbujhhwa5kipypyky", + "time": 1682814000 + }, + { + "cid": "bafkreiapfszw7l5sysx2hgophrztwyeonpppem2xxwbujhhwa5kipypyky", + "time": 1682814000 + }, + { + "cid": "bafkreiapfszw7l5sysx2hgophrztwyeonpppem2xxwbujhhwa5kipypyky", + "time": 1682822136 + }, + { + "cid": "bafkreiapfszw7l5sysx2hgophrztwyeonpppem2xxwbujhhwa5kipypyky", + "time": 1682822136 + } + ], + "validationError": false + }, + { + "dpid": "39", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibtewpmyizn2rvgbd7yqzirfcunu264zqwjc6qmf32wwtocp57eta", + "time": 1682820372 + }, + { + "cid": "bafkreibtewpmyizn2rvgbd7yqzirfcunu264zqwjc6qmf32wwtocp57eta", + "time": 1682820372 + }, + { + "cid": "bafkreiayluo2hglsq2qfahpzwqopgwaad7bqxma5we6l2bqzs2zfvk6eka", + "time": 1682820648 + }, + { + "cid": "bafkreiayluo2hglsq2qfahpzwqopgwaad7bqxma5we6l2bqzs2zfvk6eka", + "time": 1682820648 + }, + { + "cid": "bafkreiayluo2hglsq2qfahpzwqopgwaad7bqxma5we6l2bqzs2zfvk6eka", + "time": 1682821080 + }, + { + "cid": "bafkreiayluo2hglsq2qfahpzwqopgwaad7bqxma5we6l2bqzs2zfvk6eka", + "time": 1682821080 + }, + { + "cid": "bafkreiero2ggetbv2g5voe4yg7lr53cl7aocrcdbn5ndz754ani2c4xwye", + "time": 1682849124 + }, + { + "cid": "bafkreiero2ggetbv2g5voe4yg7lr53cl7aocrcdbn5ndz754ani2c4xwye", + "time": 1682849124 + } + ], + "validationError": false + }, + { + "dpid": "40", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreih3uvxd3entelbnsrhijwkperswmy4d27cjvx2fnurjqqjzvp7v54", + "time": 1682821224 + }, + { + "cid": "bafkreih3uvxd3entelbnsrhijwkperswmy4d27cjvx2fnurjqqjzvp7v54", + "time": 1682821224 + }, + { + "cid": "bafkreih3uvxd3entelbnsrhijwkperswmy4d27cjvx2fnurjqqjzvp7v54", + "time": 1682821884 + }, + { + "cid": "bafkreih3uvxd3entelbnsrhijwkperswmy4d27cjvx2fnurjqqjzvp7v54", + "time": 1682821884 + } + ], + "validationError": false + }, + { + "dpid": "41", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihesv24wbwkhgjeplqi7lu2rm5d75o6es3krxbj4rfmhk3bcxavhe", + "time": 1682854224 + }, + { + "cid": "bafkreihesv24wbwkhgjeplqi7lu2rm5d75o6es3krxbj4rfmhk3bcxavhe", + "time": 1682854224 + }, + { + "cid": "bafkreifmd5ucm3ypfkph7klhghsgyvfinkrwxw6uuiwpdjoarmxotflwaa", + "time": 1682854344 + }, + { + "cid": "bafkreifmd5ucm3ypfkph7klhghsgyvfinkrwxw6uuiwpdjoarmxotflwaa", + "time": 1682854344 + } + ], + "validationError": false + }, + { + "dpid": "42", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreie46ed23xpsfgxasdbhzq4zrni5v4dv3lbohasnqkgmohq4g6bjam", + "time": 1682856480 + }, + { + "cid": "bafkreie46ed23xpsfgxasdbhzq4zrni5v4dv3lbohasnqkgmohq4g6bjam", + "time": 1682856480 + } + ], + "validationError": false + }, + { + "dpid": "43", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigumcdo4dafutywplrgg7xgo6swf2qygljyzwktsafuhvednvpmhy", + "time": 1682951112 + }, + { + "cid": "bafkreigumcdo4dafutywplrgg7xgo6swf2qygljyzwktsafuhvednvpmhy", + "time": 1682951112 + } + ], + "validationError": false + }, + { + "dpid": "44", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihqpbdqrgnp6mebwfcqqt3izgreiw4zgiw42zmkezipmktv777itu", + "time": 1682962248 + }, + { + "cid": "bafkreihqpbdqrgnp6mebwfcqqt3izgreiw4zgiw42zmkezipmktv777itu", + "time": 1682962248 + } + ], + "validationError": false + }, + { + "dpid": "45", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihfrfianmcigzvnnetxkzwlcgza75dsah7ab5anx43phu3mke3uky", + "time": 1682993892 + }, + { + "cid": "bafkreihfrfianmcigzvnnetxkzwlcgza75dsah7ab5anx43phu3mke3uky", + "time": 1682993892 + } + ], + "validationError": false + }, + { + "dpid": "46", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreia2nvcwknooiu6t6ywob4dhd6exb3aamogse4n7kkydybjaugdr6u", + "time": 1683053508 + }, + { + "cid": "bafkreia2nvcwknooiu6t6ywob4dhd6exb3aamogse4n7kkydybjaugdr6u", + "time": 1683053508 + }, + { + "cid": "bafkreih5koqw5nvxucidlihwfslknj674oeuroclit74rkaqpe4mq6xuka", + "time": 1683222132 + }, + { + "cid": "bafkreih5koqw5nvxucidlihwfslknj674oeuroclit74rkaqpe4mq6xuka", + "time": 1683222132 + }, + { + "cid": "bafkreif3d644utirvwvkmukcrhg64palp3r4xociwsn6b6o2hxmkdxalby", + "time": 1683227616 + }, + { + "cid": "bafkreif3d644utirvwvkmukcrhg64palp3r4xociwsn6b6o2hxmkdxalby", + "time": 1683227616 + }, + { + "cid": "bafkreibn3jhdlsdsonv25t7i2bwtrbkl3jzwjbnnwylpeih3jmmzdhsfmi", + "time": 1683298680 + }, + { + "cid": "bafkreibn3jhdlsdsonv25t7i2bwtrbkl3jzwjbnnwylpeih3jmmzdhsfmi", + "time": 1683298680 + }, + { + "cid": "bafkreiepot62powegf7tt73gyiz24facsdloywggattt2asz5y4eaqhkyi", + "time": 1683299940 + }, + { + "cid": "bafkreiepot62powegf7tt73gyiz24facsdloywggattt2asz5y4eaqhkyi", + "time": 1683299940 + }, + { + "cid": "bafkreihge5qw7sc3mqc4wkf4cgpv6udtvrgipfxwyph7dhlyu6bkkt7tfq", + "time": 1705420740 + }, + { + "cid": "bafkreihge5qw7sc3mqc4wkf4cgpv6udtvrgipfxwyph7dhlyu6bkkt7tfq", + "time": 1705420740 + } + ], + "validationError": false + }, + { + "dpid": "47", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreia7orsrr4pwxe5m2gnklknpc25kjs7gnzemofki3aeh6ydh4hkfju", + "time": 1683222948 + }, + { + "cid": "bafkreia7orsrr4pwxe5m2gnklknpc25kjs7gnzemofki3aeh6ydh4hkfju", + "time": 1683222948 + } + ], + "validationError": false + }, + { + "dpid": "48", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreieahbi5tzb2od7nb2j5up4ooiglvh2lty2bgcrwjc3km7fnsplaxu", + "time": 1683232692 + }, + { + "cid": "bafkreieahbi5tzb2od7nb2j5up4ooiglvh2lty2bgcrwjc3km7fnsplaxu", + "time": 1683232692 + } + ], + "validationError": false + }, + { + "dpid": "49", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiet6onaozwmqyflpbjsa7f6f5jkhou5n3vxxkxmkgalhnr54bzftu", + "time": 1683236460 + }, + { + "cid": "bafkreiet6onaozwmqyflpbjsa7f6f5jkhou5n3vxxkxmkgalhnr54bzftu", + "time": 1683236460 + }, + { + "cid": "bafkreibp3hplo3b2hfetbrargv2gv2dkx3kfqfsqbxhkuved2k2nebxcpa", + "time": 1683236760 + }, + { + "cid": "bafkreibp3hplo3b2hfetbrargv2gv2dkx3kfqfsqbxhkuved2k2nebxcpa", + "time": 1683236760 + }, + { + "cid": "bafkreigym3lzf2ruzd3r23mflxjzafqfxoi5bncru3t4ky35vfaubbke34", + "time": 1683236760 + }, + { + "cid": "bafkreigym3lzf2ruzd3r23mflxjzafqfxoi5bncru3t4ky35vfaubbke34", + "time": 1683236760 + }, + { + "cid": "bafkreife4uk2mkecur54sq774ybtrka5l4gd5777j5cjjscfmx4vcqnfbm", + "time": 1683237288 + }, + { + "cid": "bafkreife4uk2mkecur54sq774ybtrka5l4gd5777j5cjjscfmx4vcqnfbm", + "time": 1683237288 + } + ], + "validationError": false + }, + { + "dpid": "50", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibroag6m5tps4srrtdxbfq74sskvpfu4sbhadhkh3vfonjrlmsvda", + "time": 1683886968 + }, + { + "cid": "bafkreibroag6m5tps4srrtdxbfq74sskvpfu4sbhadhkh3vfonjrlmsvda", + "time": 1683886968 + } + ], + "validationError": false + }, + { + "dpid": "51", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiheezwrynuxo6gnjd2pmahkcw3wstooxs6fvaflpjouewmh4qi3aa", + "time": 1683930000 + }, + { + "cid": "bafkreiheezwrynuxo6gnjd2pmahkcw3wstooxs6fvaflpjouewmh4qi3aa", + "time": 1683930000 + }, + { + "cid": "bafkreiasjo5wzkkk2s56tvdkmbe56vj4j7gyq345vnqpwvnvwozzhtkxfq", + "time": 1683931428 + }, + { + "cid": "bafkreiasjo5wzkkk2s56tvdkmbe56vj4j7gyq345vnqpwvnvwozzhtkxfq", + "time": 1683931428 + } + ], + "validationError": false + }, + { + "dpid": "52", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicxw5tzwajvwa757ihut3hvlgnfbpu7fa4oxfvvlssu4rikfrtmv4", + "time": 1684412244 + }, + { + "cid": "bafkreicxw5tzwajvwa757ihut3hvlgnfbpu7fa4oxfvvlssu4rikfrtmv4", + "time": 1684412244 + } + ], + "validationError": false + }, + { + "dpid": "53", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreia7yjdhq6tdxjtwyr4ajfhxypq3jxbo5augryzzeos7cqrbyy6jmi", + "time": 1684862784 + }, + { + "cid": "bafkreia7yjdhq6tdxjtwyr4ajfhxypq3jxbo5augryzzeos7cqrbyy6jmi", + "time": 1684862784 + }, + { + "cid": "bafkreifutouvscu3pbsaabgxdxqfd6zaphkcuei6i3fibdeefmrh4oujby", + "time": 1686612108 + }, + { + "cid": "bafkreifutouvscu3pbsaabgxdxqfd6zaphkcuei6i3fibdeefmrh4oujby", + "time": 1686612108 + } + ], + "validationError": false + }, + { + "dpid": "54", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigtfrsogce5ixgj4dvjgvj2qgjsujs5g4sa64svziiyz6j2bajise", + "time": 1685098464 + }, + { + "cid": "bafkreigtfrsogce5ixgj4dvjgvj2qgjsujs5g4sa64svziiyz6j2bajise", + "time": 1685098464 + }, + { + "cid": "bafkreihocw2lexz7nz4sfwmy576guhbecxnzq4wfltnx5twqn2clng3ewu", + "time": 1685098776 + }, + { + "cid": "bafkreihocw2lexz7nz4sfwmy576guhbecxnzq4wfltnx5twqn2clng3ewu", + "time": 1685098776 + } + ], + "validationError": false + }, + { + "dpid": "55", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicup2qewrwovkkgk5bun4vpws7cbq3qnv2rbt7truyw54owvtwovm", + "time": 1685442360 + }, + { + "cid": "bafkreicup2qewrwovkkgk5bun4vpws7cbq3qnv2rbt7truyw54owvtwovm", + "time": 1685442360 + } + ], + "validationError": false + }, + { + "dpid": "56", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreieis5ac2evezkciy26fvswybmyyarfnrlvyh7p5acvbhcsceayorq", + "time": 1685444172 + }, + { + "cid": "bafkreieis5ac2evezkciy26fvswybmyyarfnrlvyh7p5acvbhcsceayorq", + "time": 1685444172 + }, + { + "cid": "bafkreid6ibvbiblu6vviuc3l6ivmpmpdbj2rzt625capmi4igns2r7k4ue", + "time": 1685448060 + }, + { + "cid": "bafkreid6ibvbiblu6vviuc3l6ivmpmpdbj2rzt625capmi4igns2r7k4ue", + "time": 1685448060 + } + ], + "validationError": false + }, + { + "dpid": "57", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiaulqrzufg3qnw55rwzqtn5h2cvsawdunrfwt4j32ywt6oswi5bfm", + "time": 1685525952 + }, + { + "cid": "bafkreiaulqrzufg3qnw55rwzqtn5h2cvsawdunrfwt4j32ywt6oswi5bfm", + "time": 1685525952 + } + ], + "validationError": false + }, + { + "dpid": "58", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidlxqbem5m3kgtntq6243vujhuyvt2s72ry2k5uy4f6hmjwbezdje", + "time": 1685526132 + }, + { + "cid": "bafkreidlxqbem5m3kgtntq6243vujhuyvt2s72ry2k5uy4f6hmjwbezdje", + "time": 1685526132 + }, + { + "cid": "bafkreib2gln7ztcpt6z7q7yo6isznl6lam4zv74hwslwhplh6g55re26lm", + "time": 1685536224 + }, + { + "cid": "bafkreib2gln7ztcpt6z7q7yo6isznl6lam4zv74hwslwhplh6g55re26lm", + "time": 1685536224 + } + ], + "validationError": false + }, + { + "dpid": "59", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigj2svt7njv2nxznzm42pisbjgpfjzhoorlcsryjlx5coa2klssku", + "time": 1685613060 + }, + { + "cid": "bafkreigvuao6ogwtnr2oknvxl3a5mtulhats7dqsiuturbxnnablevorai", + "time": 1685613240 + }, + { + "cid": "bafkreigvuao6ogwtnr2oknvxl3a5mtulhats7dqsiuturbxnnablevorai", + "time": 1685613240 + } + ], + "validationError": false + }, + { + "dpid": "60", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiefsjhlwr6bcq4nscdoz2q2tkca5i7ocxgtn5nxggkf2lr5a2z2lq", + "time": 1685613216 + }, + { + "cid": "bafkreifmohd57nd6xbcjrc3b6dxgpycgijleopks7hrmza4t23dvqxd2au", + "time": 1685613708 + } + ], + "validationError": false + }, + { + "dpid": "61", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreid5vwbe6ri74rgtdevbjznreexoedsocftjqgpopx3bih656jwzni", + "time": 1685614104 + }, + { + "cid": "bafkreid5vwbe6ri74rgtdevbjznreexoedsocftjqgpopx3bih656jwzni", + "time": 1685614104 + } + ], + "validationError": false + }, + { + "dpid": "62", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiapjbbsrowag6txt3wuilla2vp6dhhijkylklmvdzc4es3qb27buq", + "time": 1685615388 + }, + { + "cid": "bafkreiapjbbsrowag6txt3wuilla2vp6dhhijkylklmvdzc4es3qb27buq", + "time": 1685615388 + } + ], + "validationError": false + }, + { + "dpid": "63", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicjmhgi5sbjvo2i3nzwfkwfmahgipbyq6iasekibgqpl75cdiqdsi", + "time": 1685615724 + } + ], + "validationError": false + }, + { + "dpid": "64", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreib2rkswbatx7qqcnymxcajqrgrywfzlsiischsrfowhbd5vjfskfi", + "time": 1685719428 + } + ], + "validationError": false + }, + { + "dpid": "65", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifdylfaiep4lc4544mow5aiq4vg37buebiybfx5wyznfi4pov6qri", + "time": 1686220584 + } + ], + "validationError": false + }, + { + "dpid": "66", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibelil5fgqul2o3chxv7g7xmdqkv2krqkv6r6mdbiw72vcqp4wxky", + "time": 1687805292 + }, + { + "cid": "bafkreiefvtk6gcvlxq3hw3lkxcjjy5aqkaxyu4swucs2wd3imjhi2yfdpm", + "time": 1687805484 + } + ], + "validationError": false + }, + { + "dpid": "67", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiazlufpwemnsbzscuycou7gi5m7t2p4yxbxvozkvxex47uczuokba", + "time": 1687807524 + }, + { + "cid": "bafkreiazlufpwemnsbzscuycou7gi5m7t2p4yxbxvozkvxex47uczuokba", + "time": 1687807524 + }, + { + "cid": "bafkreidupix2c3fizisuv2z6tluypvssf6solprgnmev6ul6vp6dprwop4", + "time": 1687808232 + }, + { + "cid": "bafkreidupix2c3fizisuv2z6tluypvssf6solprgnmev6ul6vp6dprwop4", + "time": 1687808232 + } + ], + "validationError": false + }, + { + "dpid": "68", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihakt3w53hwvneg2o3e4xysgegwk5j5rs6mug6ywlwb2bmprm4wzy", + "time": 1687812132 + }, + { + "cid": "bafkreihakt3w53hwvneg2o3e4xysgegwk5j5rs6mug6ywlwb2bmprm4wzy", + "time": 1687812132 + } + ], + "validationError": false + }, + { + "dpid": "69", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigfelcudmytsq2s2j4wcy3j7tsyatpnffpcthf6zz7q5wa4snafdm", + "time": 1687812804 + }, + { + "cid": "bafkreigfelcudmytsq2s2j4wcy3j7tsyatpnffpcthf6zz7q5wa4snafdm", + "time": 1687812804 + } + ], + "validationError": false + }, + { + "dpid": "70", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicandi5eh3gwuxwlq6k6fpeuurnbpbx33q3ijndg44go2p5ekni3y", + "time": 1687817568 + }, + { + "cid": "bafkreicandi5eh3gwuxwlq6k6fpeuurnbpbx33q3ijndg44go2p5ekni3y", + "time": 1687817568 + } + ], + "validationError": false + }, + { + "dpid": "71", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibb5g5ujmxeve56ktnuolb7rrncmbgedtrjemeshn6rxbrhn4uepe", + "time": 1688024628 + }, + { + "cid": "bafkreibb5g5ujmxeve56ktnuolb7rrncmbgedtrjemeshn6rxbrhn4uepe", + "time": 1688024628 + }, + { + "cid": "bafkreiddtartrk6isrs3j5ltx6nkcv437jsu62vc6ew3cwvxk3msebzg5e", + "time": 1688024676 + }, + { + "cid": "bafkreiddtartrk6isrs3j5ltx6nkcv437jsu62vc6ew3cwvxk3msebzg5e", + "time": 1688024676 + } + ], + "validationError": false + }, + { + "dpid": "72", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicj4c44gghcoy2ztvwe32fmbv7cuvty2hv2y4ndrnd6ghrl3ciaea", + "time": 1688552688 + }, + { + "cid": "bafkreicj4c44gghcoy2ztvwe32fmbv7cuvty2hv2y4ndrnd6ghrl3ciaea", + "time": 1688552688 + } + ], + "validationError": false + }, + { + "dpid": "73", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifdgjfu3g4qddc7g5kvnk3lshkuyfau7o2qle5ut5msptulbxsqme", + "time": 1688720808 + }, + { + "cid": "bafkreifdgjfu3g4qddc7g5kvnk3lshkuyfau7o2qle5ut5msptulbxsqme", + "time": 1688720808 + }, + { + "cid": "bafkreifdgjfu3g4qddc7g5kvnk3lshkuyfau7o2qle5ut5msptulbxsqme", + "time": 1689009768 + }, + { + "cid": "bafkreifdgjfu3g4qddc7g5kvnk3lshkuyfau7o2qle5ut5msptulbxsqme", + "time": 1689009768 + } + ], + "validationError": false + }, + { + "dpid": "74", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifqxkjzypbtz7snjp3ghjrv56bd5umihchpwfppnoz67tcmhuq7wi", + "time": 1689041640 + }, + { + "cid": "bafkreifqxkjzypbtz7snjp3ghjrv56bd5umihchpwfppnoz67tcmhuq7wi", + "time": 1689041640 + } + ], + "validationError": false + }, + { + "dpid": "75", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibtsll3aq2bynvlxnqh6nxafzdm4cpiovr3bcncbkzjcy32xalp7i", + "time": 1689294216 + }, + { + "cid": "bafkreibtsll3aq2bynvlxnqh6nxafzdm4cpiovr3bcncbkzjcy32xalp7i", + "time": 1689294216 + } + ], + "validationError": false + }, + { + "dpid": "76", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiatjdpouudloenzdzb7d3e5pogruvwbhurcnm2g5h64jmkpk2uebe", + "time": 1689518988 + }, + { + "cid": "bafkreiatjdpouudloenzdzb7d3e5pogruvwbhurcnm2g5h64jmkpk2uebe", + "time": 1689518988 + }, + { + "cid": "bafkreigg3xk6ojueylnninvwsrw62nqpt7pyjnz6thaipbydb5ltclctly", + "time": 1692182952 + }, + { + "cid": "bafkreigg3xk6ojueylnninvwsrw62nqpt7pyjnz6thaipbydb5ltclctly", + "time": 1692182952 + }, + { + "cid": "bafkreicrggm7jpxgaj2vgydvefuravrs2bh4emlt6eadx3zsbubtpulmcq", + "time": 1692330000 + }, + { + "cid": "bafkreicrggm7jpxgaj2vgydvefuravrs2bh4emlt6eadx3zsbubtpulmcq", + "time": 1692330000 + }, + { + "cid": "bafkreifgfzjltrvcz3qixyjkiubgms2r3figm37euwxzbi6pvej2me6tje", + "time": 1701997248 + }, + { + "cid": "bafkreifgfzjltrvcz3qixyjkiubgms2r3figm37euwxzbi6pvej2me6tje", + "time": 1701997248 + }, + { + "cid": "bafkreic4wiuatha4wclfbwft4vaeeqifrbb2f3tqm4eoajommogudbvswu", + "time": 1702000140 + }, + { + "cid": "bafkreic4wiuatha4wclfbwft4vaeeqifrbb2f3tqm4eoajommogudbvswu", + "time": 1702000140 + }, + { + "cid": "bafkreicraffpobz3k5rzdmigl5tzklihwuim4kwe7xl5uulmfrkr4uvm2u", + "time": 1702045680 + }, + { + "cid": "bafkreicraffpobz3k5rzdmigl5tzklihwuim4kwe7xl5uulmfrkr4uvm2u", + "time": 1702045680 + }, + { + "cid": "bafkreidtkraxowlx26oz5g6qyfuawhx5nroil4a4mo6ywa7knfel7ft2dq", + "time": 1702045944 + }, + { + "cid": "bafkreidtkraxowlx26oz5g6qyfuawhx5nroil4a4mo6ywa7knfel7ft2dq", + "time": 1702045944 + } + ], + "validationError": false + }, + { + "dpid": "77", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiaqxrcrai2j2lpk2moare5abq4vtyhxk6m5jxo5fbqkrsy24kdm7q", + "time": 1691492520 + }, + { + "cid": "bafkreiaqxrcrai2j2lpk2moare5abq4vtyhxk6m5jxo5fbqkrsy24kdm7q", + "time": 1691492520 + }, + { + "cid": "bafkreihjozked2lgpgtdcuvzejanhnm65sccwglgblxfdg3cwi72vlrtvq", + "time": 1691493636 + }, + { + "cid": "bafkreihjozked2lgpgtdcuvzejanhnm65sccwglgblxfdg3cwi72vlrtvq", + "time": 1691493636 + }, + { + "cid": "bafkreieodz3e4kzbnlg4nka5pwrgafwuuemfuejxqa5dpdaqlgt6bjs7fm", + "time": 1691496348 + }, + { + "cid": "bafkreieodz3e4kzbnlg4nka5pwrgafwuuemfuejxqa5dpdaqlgt6bjs7fm", + "time": 1691496348 + } + ], + "validationError": false + }, + { + "dpid": "78", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifixmk6tierh6qompfouk63r6clg5jbeuvwherrxacq4uoedk4o5q", + "time": 1691501736 + }, + { + "cid": "bafkreifixmk6tierh6qompfouk63r6clg5jbeuvwherrxacq4uoedk4o5q", + "time": 1691501736 + } + ], + "validationError": false + }, + { + "dpid": "79", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibtuuiejhyxu4zr2od34biucedhlmqdmqem6v2ruqu6ov2kgsfnfa", + "time": 1692472464 + }, + { + "cid": "bafkreibtuuiejhyxu4zr2od34biucedhlmqdmqem6v2ruqu6ov2kgsfnfa", + "time": 1692472464 + } + ], + "validationError": false + }, + { + "dpid": "80", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiawwe6os5lxye3hojdmwgcdt4nrs7xwfqy3p3vuv7xolhbnc2nqaq", + "time": 1693245804 + }, + { + "cid": "bafkreiawwe6os5lxye3hojdmwgcdt4nrs7xwfqy3p3vuv7xolhbnc2nqaq", + "time": 1693245804 + }, + { + "cid": "bafkreichlzplxpphzyoo3mnjg6tm2e4uplpm4d2q667a6dbz6xhctvktai", + "time": 1693246872 + }, + { + "cid": "bafkreichlzplxpphzyoo3mnjg6tm2e4uplpm4d2q667a6dbz6xhctvktai", + "time": 1693246872 + } + ], + "validationError": false + }, + { + "dpid": "81", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreieefydw5dajtfgz5xqecgyyqxt7kzzyibihy4dvnrtwakaahkn34y", + "time": 1693246440 + }, + { + "cid": "bafkreieefydw5dajtfgz5xqecgyyqxt7kzzyibihy4dvnrtwakaahkn34y", + "time": 1693246440 + }, + { + "cid": "bafkreicpdjfhoxg3gyc2xn63ppbxf7a7wvehkl4h34dapqeqekfetwunme", + "time": 1700147784 + }, + { + "cid": "bafkreicpdjfhoxg3gyc2xn63ppbxf7a7wvehkl4h34dapqeqekfetwunme", + "time": 1700147784 + } + ], + "validationError": false + }, + { + "dpid": "82", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicmvrritjqe4eatfkix3k6kgxz7oxlxengyfhg7rkubpagmxymiqa", + "time": 1693247148 + }, + { + "cid": "bafkreicmvrritjqe4eatfkix3k6kgxz7oxlxengyfhg7rkubpagmxymiqa", + "time": 1693247148 + } + ], + "validationError": false + }, + { + "dpid": "83", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreia6ccnzt76b23xkq7slvzxgebltmlkmvcbvr77nzfyca7wpq6qkru", + "time": 1693247616 + }, + { + "cid": "bafkreia6ccnzt76b23xkq7slvzxgebltmlkmvcbvr77nzfyca7wpq6qkru", + "time": 1693247616 + }, + { + "cid": "bafkreidrb3cry4mh6fcik54rotatfnz2mapg3olcsxqpodgdbecrh5iu54", + "time": 1700147268 + }, + { + "cid": "bafkreidrb3cry4mh6fcik54rotatfnz2mapg3olcsxqpodgdbecrh5iu54", + "time": 1700147268 + } + ], + "validationError": false + }, + { + "dpid": "84", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibgfpmyizfiu6mpmdcn6aqvqrli72za72ccrxsim24nhtfv3cqb7m", + "time": 1693248192 + }, + { + "cid": "bafkreibgfpmyizfiu6mpmdcn6aqvqrli72za72ccrxsim24nhtfv3cqb7m", + "time": 1693248192 + }, + { + "cid": "bafkreidfksyvtp5vjzoczjupn6h6h72dcr2p2rm63l7l5qwn6sq6d2nyjy", + "time": 1700146980 + }, + { + "cid": "bafkreidfksyvtp5vjzoczjupn6h6h72dcr2p2rm63l7l5qwn6sq6d2nyjy", + "time": 1700146980 + } + ], + "validationError": false + }, + { + "dpid": "85", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreichgcyenem343rn3cgpyymyicdgoe7vgkev7z7bccskncaux7rxt4", + "time": 1693248672 + }, + { + "cid": "bafkreichgcyenem343rn3cgpyymyicdgoe7vgkev7z7bccskncaux7rxt4", + "time": 1693248672 + }, + { + "cid": "bafkreiejwrzg3vtvrvxm75dzgmk3736v4wrhl6uin64hzq76oekbkqi2ci", + "time": 1700146392 + }, + { + "cid": "bafkreiejwrzg3vtvrvxm75dzgmk3736v4wrhl6uin64hzq76oekbkqi2ci", + "time": 1700146392 + } + ], + "validationError": false + }, + { + "dpid": "86", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihxqrtbvhxg3w2nu3ahpcu2it6qvnmca4xb72vq4w27er3v4rsjgi", + "time": 1693249560 + }, + { + "cid": "bafkreihxqrtbvhxg3w2nu3ahpcu2it6qvnmca4xb72vq4w27er3v4rsjgi", + "time": 1693249560 + }, + { + "cid": "bafkreidlqc6jfns3ftpxoopx7etmfqp75xwoptd6es36xir2fl4nkvmx6i", + "time": 1700145552 + }, + { + "cid": "bafkreidlqc6jfns3ftpxoopx7etmfqp75xwoptd6es36xir2fl4nkvmx6i", + "time": 1700145552 + } + ], + "validationError": false + }, + { + "dpid": "87", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidlb227q7gvv622itmewvsdli726msbjgtsoufaepsaajrc66d27u", + "time": 1693249908 + }, + { + "cid": "bafkreidlb227q7gvv622itmewvsdli726msbjgtsoufaepsaajrc66d27u", + "time": 1693249908 + }, + { + "cid": "bafkreibaiviks6ed4yuwaidz4zzerlhmlkbdcxucky74ah4nu37cm443lm", + "time": 1700146176 + }, + { + "cid": "bafkreibaiviks6ed4yuwaidz4zzerlhmlkbdcxucky74ah4nu37cm443lm", + "time": 1700146176 + } + ], + "validationError": false + }, + { + "dpid": "88", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibdpyr6vlsifgi3cebv7ip26ynplllfzpekxz4zfj7xna7uolpjgy", + "time": 1693250244 + }, + { + "cid": "bafkreibdpyr6vlsifgi3cebv7ip26ynplllfzpekxz4zfj7xna7uolpjgy", + "time": 1693250244 + }, + { + "cid": "bafkreif7e3nkqyrpa6pkhlnv7sdrwkgyct7fhgzqsteo457kpa46wuflhe", + "time": 1700146776 + }, + { + "cid": "bafkreif7e3nkqyrpa6pkhlnv7sdrwkgyct7fhgzqsteo457kpa46wuflhe", + "time": 1700146776 + } + ], + "validationError": false + }, + { + "dpid": "89", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidp3ed42l6cizgero5c7zfmxpmwp5hkc4tx6uz7mgioxsep4wb6rm", + "time": 1693251900 + }, + { + "cid": "bafkreidp3ed42l6cizgero5c7zfmxpmwp5hkc4tx6uz7mgioxsep4wb6rm", + "time": 1693251900 + } + ], + "validationError": false + }, + { + "dpid": "90", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiaw34rnu36p2ccawj3gopyxgl64qj3dc3ip3pzvfh5anzrvmu4z5u", + "time": 1694114940 + }, + { + "cid": "bafkreiaw34rnu36p2ccawj3gopyxgl64qj3dc3ip3pzvfh5anzrvmu4z5u", + "time": 1694114940 + }, + { + "cid": "bafkreidk7ihar3swjjf46wtttjl52govxa256725urm5upcefu4wfvnxpm", + "time": 1694187648 + }, + { + "cid": "bafkreidk7ihar3swjjf46wtttjl52govxa256725urm5upcefu4wfvnxpm", + "time": 1694187648 + }, + { + "cid": "bafkreic6n2x6jlvss4iepnkkb4o4wre4nezbbff7kw46mz2egtzxast5xe", + "time": 1695653376 + }, + { + "cid": "bafkreic6n2x6jlvss4iepnkkb4o4wre4nezbbff7kw46mz2egtzxast5xe", + "time": 1695653376 + } + ], + "validationError": false + }, + { + "dpid": "91", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigpcnierfxljhffgj4d6oyuwec4pcbkbjys6goaggw75rcobd6vnu", + "time": 1694197140 + }, + { + "cid": "bafkreigpcnierfxljhffgj4d6oyuwec4pcbkbjys6goaggw75rcobd6vnu", + "time": 1694197140 + }, + { + "cid": "bafkreidtiuwpwyewgjp3r5a7shvzgir7pvbeguxlv6zebpdbxrraialhxu", + "time": 1695653220 + }, + { + "cid": "bafkreidtiuwpwyewgjp3r5a7shvzgir7pvbeguxlv6zebpdbxrraialhxu", + "time": 1695653220 + } + ], + "validationError": false + }, + { + "dpid": "92", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicqezpklsjtuszjnsekc2dcyadgtbcfouhlc57vclrwco45gzbul4", + "time": 1695218412 + }, + { + "cid": "bafkreicqezpklsjtuszjnsekc2dcyadgtbcfouhlc57vclrwco45gzbul4", + "time": 1695218412 + } + ], + "validationError": false + }, + { + "dpid": "93", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreie2p56t2d3i762v3bow3jweile6fmryt2qlcjq3cmkz7kpqtaic2a", + "time": 1695246144 + }, + { + "cid": "bafkreie2p56t2d3i762v3bow3jweile6fmryt2qlcjq3cmkz7kpqtaic2a", + "time": 1695246144 + } + ], + "validationError": false + }, + { + "dpid": "94", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiaqnt5raa6b4ujpkgd4veg73rtp5csn6fwxrckbhq4mkrl7ws63dy", + "time": 1695246324 + }, + { + "cid": "bafkreiaqnt5raa6b4ujpkgd4veg73rtp5csn6fwxrckbhq4mkrl7ws63dy", + "time": 1695246324 + } + ], + "validationError": false + }, + { + "dpid": "95", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreied6xbi65zwpzqiiaqnhq3cdq42c7yqrx6sd32ncv6avkovcb6f6y", + "time": 1695324696 + }, + { + "cid": "bafkreied6xbi65zwpzqiiaqnhq3cdq42c7yqrx6sd32ncv6avkovcb6f6y", + "time": 1695324696 + } + ], + "validationError": false + }, + { + "dpid": "96", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigurq54verb4sihjuonnx2pbo77lbjlviol2jfjxxgyzzko7o42ka", + "time": 1695816576 + }, + { + "cid": "bafkreigurq54verb4sihjuonnx2pbo77lbjlviol2jfjxxgyzzko7o42ka", + "time": 1695816576 + } + ], + "validationError": false + }, + { + "dpid": "97", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreig76u6of7za2h5pdphz2ztsl5xdsgg2vrsh2dximjx3q2aszfjq6m", + "time": 1696295376 + }, + { + "cid": "bafkreig76u6of7za2h5pdphz2ztsl5xdsgg2vrsh2dximjx3q2aszfjq6m", + "time": 1696295376 + }, + { + "cid": "bafkreig76u6of7za2h5pdphz2ztsl5xdsgg2vrsh2dximjx3q2aszfjq6m", + "time": 1696296012 + }, + { + "cid": "bafkreig76u6of7za2h5pdphz2ztsl5xdsgg2vrsh2dximjx3q2aszfjq6m", + "time": 1696296012 + }, + { + "cid": "bafkreigul3gpywn3nes5jjxsh2ddfue4lg37ftg7sdqctmzxqp7cxdw3iy", + "time": 1696299000 + }, + { + "cid": "bafkreigul3gpywn3nes5jjxsh2ddfue4lg37ftg7sdqctmzxqp7cxdw3iy", + "time": 1696299000 + }, + { + "cid": "bafkreigul3gpywn3nes5jjxsh2ddfue4lg37ftg7sdqctmzxqp7cxdw3iy", + "time": 1696299600 + }, + { + "cid": "bafkreigul3gpywn3nes5jjxsh2ddfue4lg37ftg7sdqctmzxqp7cxdw3iy", + "time": 1696299600 + }, + { + "cid": "bafkreigul3gpywn3nes5jjxsh2ddfue4lg37ftg7sdqctmzxqp7cxdw3iy", + "time": 1696299876 + }, + { + "cid": "bafkreigul3gpywn3nes5jjxsh2ddfue4lg37ftg7sdqctmzxqp7cxdw3iy", + "time": 1696299876 + }, + { + "cid": "bafkreigul3gpywn3nes5jjxsh2ddfue4lg37ftg7sdqctmzxqp7cxdw3iy", + "time": 1696299912 + }, + { + "cid": "bafkreigul3gpywn3nes5jjxsh2ddfue4lg37ftg7sdqctmzxqp7cxdw3iy", + "time": 1696299912 + }, + { + "cid": "bafkreigul3gpywn3nes5jjxsh2ddfue4lg37ftg7sdqctmzxqp7cxdw3iy", + "time": 1696299996 + }, + { + "cid": "bafkreigul3gpywn3nes5jjxsh2ddfue4lg37ftg7sdqctmzxqp7cxdw3iy", + "time": 1696299996 + }, + { + "cid": "bafkreigul3gpywn3nes5jjxsh2ddfue4lg37ftg7sdqctmzxqp7cxdw3iy", + "time": 1696440036 + }, + { + "cid": "bafkreigul3gpywn3nes5jjxsh2ddfue4lg37ftg7sdqctmzxqp7cxdw3iy", + "time": 1696440036 + }, + { + "cid": "bafkreigul3gpywn3nes5jjxsh2ddfue4lg37ftg7sdqctmzxqp7cxdw3iy", + "time": 1696440996 + }, + { + "cid": "bafkreigul3gpywn3nes5jjxsh2ddfue4lg37ftg7sdqctmzxqp7cxdw3iy", + "time": 1696440996 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696459560 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696459560 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696459584 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696459584 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696466724 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696466724 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696466820 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696466820 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696466964 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696466964 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696468416 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696468416 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696479552 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696479552 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696480608 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696480608 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696480764 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696480764 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696480884 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696480884 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696481172 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696481172 + }, + { + "cid": "bafkreiciddswj3e6ho5of7x7a7liaqehnwqeg35w3cp3l5knv6k2tdlswa", + "time": 1696594740 + }, + { + "cid": "bafkreiciddswj3e6ho5of7x7a7liaqehnwqeg35w3cp3l5knv6k2tdlswa", + "time": 1696594740 + } + ], + "validationError": false + }, + { + "dpid": "98", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicsn4qia64pf7eim7sjggvmnggqadmfmrrcm5gecbpfdzxwzlk7i4", + "time": 1696303560 + }, + { + "cid": "bafkreicsn4qia64pf7eim7sjggvmnggqadmfmrrcm5gecbpfdzxwzlk7i4", + "time": 1696303944 + }, + { + "cid": "bafkreicsn4qia64pf7eim7sjggvmnggqadmfmrrcm5gecbpfdzxwzlk7i4", + "time": 1696303944 + } + ], + "validationError": false + }, + { + "dpid": "99", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696336296 + }, + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696336296 + }, + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696469268 + }, + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696469268 + }, + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696536756 + }, + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696536756 + }, + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696536804 + }, + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696536828 + }, + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696536888 + }, + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696536912 + }, + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696536912 + }, + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696536936 + }, + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696536936 + }, + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696536972 + }, + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696536972 + } + ], + "validationError": false + }, + { + "dpid": "100", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreib2fs7g7yawpqeyjzatsv3bip5p6xr27pnblzjase3zyr4ixtbu6a", + "time": 1696506528 + }, + { + "cid": "bafkreib2fs7g7yawpqeyjzatsv3bip5p6xr27pnblzjase3zyr4ixtbu6a", + "time": 1696506528 + }, + { + "cid": "bafkreihirj6fsasmvqmzngnyqitl6fpt3ljapgwx7dpfelgvruqsu7smw4", + "time": 1696507296 + }, + { + "cid": "bafkreihirj6fsasmvqmzngnyqitl6fpt3ljapgwx7dpfelgvruqsu7smw4", + "time": 1696507296 + }, + { + "cid": "bafkreid5osij2amlc67sm7uzqp22j7y3dn6lseyuy72oh64z5rqoh5qity", + "time": 1696840824 + }, + { + "cid": "bafkreid5osij2amlc67sm7uzqp22j7y3dn6lseyuy72oh64z5rqoh5qity", + "time": 1696840824 + } + ], + "validationError": false + }, + { + "dpid": "101", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiaoby2dmz4sljyhxsizjj2yd2jvbzz2vsywii3vp6xqi4rjefxl4q", + "time": 1696589760 + }, + { + "cid": "bafkreiaoby2dmz4sljyhxsizjj2yd2jvbzz2vsywii3vp6xqi4rjefxl4q", + "time": 1696589760 + } + ], + "validationError": false + }, + { + "dpid": "102", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiceiefmvnwozgtpvvwv5exwsdxm36yl5ovunmcnjx5kjtcqvm6lwe", + "time": 1696605300 + }, + { + "cid": "bafkreiceiefmvnwozgtpvvwv5exwsdxm36yl5ovunmcnjx5kjtcqvm6lwe", + "time": 1696605300 + } + ], + "validationError": false + }, + { + "dpid": "103", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreif6p22atw6ekbaxkrnfmetfdqtnhldaqw6qtqiqc7lqbus6aizru4", + "time": 1696841976 + }, + { + "cid": "bafkreif6p22atw6ekbaxkrnfmetfdqtnhldaqw6qtqiqc7lqbus6aizru4", + "time": 1696841976 + } + ], + "validationError": false + }, + { + "dpid": "104", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiautwruptenrd4xbq5actpbmirrxprmnnxyxf37ixblmcynebjaqq", + "time": 1696842144 + }, + { + "cid": "bafkreiautwruptenrd4xbq5actpbmirrxprmnnxyxf37ixblmcynebjaqq", + "time": 1696842144 + }, + { + "cid": "bafkreie37zoipwpgqrupcmxfnhqfqpztumhcurzb27rfasa5ipao32w3ia", + "time": 1697792352 + }, + { + "cid": "bafkreie37zoipwpgqrupcmxfnhqfqpztumhcurzb27rfasa5ipao32w3ia", + "time": 1697792352 + }, + { + "cid": "bafkreiebcm7batu7zyp4aw6pzisbkldtlqsghh5jhczhkh63lxgjxp5wte", + "time": 1698779592 + }, + { + "cid": "bafkreiebcm7batu7zyp4aw6pzisbkldtlqsghh5jhczhkh63lxgjxp5wte", + "time": 1698779592 + } + ], + "validationError": false + }, + { + "dpid": "105", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreig33qp67gaov32ibvtb5gqtcnfrntrsrbzst2lcgrgnkbu4hbtcj4", + "time": 1696842444 + }, + { + "cid": "bafkreig33qp67gaov32ibvtb5gqtcnfrntrsrbzst2lcgrgnkbu4hbtcj4", + "time": 1696842444 + }, + { + "cid": "bafkreig33qp67gaov32ibvtb5gqtcnfrntrsrbzst2lcgrgnkbu4hbtcj4", + "time": 1698911760 + }, + { + "cid": "bafkreig33qp67gaov32ibvtb5gqtcnfrntrsrbzst2lcgrgnkbu4hbtcj4", + "time": 1698911760 + } + ], + "validationError": false + }, + { + "dpid": "106", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibbbm7623bsdoftewbedqd3peny6zhqpt6tjgx67ouf6hhvbv2idi", + "time": 1696941732 + }, + { + "cid": "bafkreibbbm7623bsdoftewbedqd3peny6zhqpt6tjgx67ouf6hhvbv2idi", + "time": 1696941732 + }, + { + "cid": "bafkreihemsbpld4yuzrn4ckrlriyq5ortlkycxx74ayfugnoce7oetsmam", + "time": 1696942104 + }, + { + "cid": "bafkreihemsbpld4yuzrn4ckrlriyq5ortlkycxx74ayfugnoce7oetsmam", + "time": 1696942104 + }, + { + "cid": "bafkreic4gpc3k5mrttk57w6k5fvtgvubvh6xfwgmubecx53b55xsxoavxe", + "time": 1696944228 + }, + { + "cid": "bafkreic4gpc3k5mrttk57w6k5fvtgvubvh6xfwgmubecx53b55xsxoavxe", + "time": 1696944228 + }, + { + "cid": "bafkreickteh2tt3oy43o42ikwei6tppghmtbkockk22a3niovi57ugor7q", + "time": 1696961232 + }, + { + "cid": "bafkreickteh2tt3oy43o42ikwei6tppghmtbkockk22a3niovi57ugor7q", + "time": 1696961232 + } + ], + "validationError": false + }, + { + "dpid": "107", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicgst5gqckb4bzduzxqhn2v5an2xjnmhv6qwscwtn3gjhuplpv3jm", + "time": 1697040396 + }, + { + "cid": "bafkreicgst5gqckb4bzduzxqhn2v5an2xjnmhv6qwscwtn3gjhuplpv3jm", + "time": 1697040396 + } + ], + "validationError": false + }, + { + "dpid": "108", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifzh36eve7dsmbebnvxhpalxdgcjcur7anxllzyfwnmetlsvq2f54", + "time": 1697792640 + }, + { + "cid": "bafkreifzh36eve7dsmbebnvxhpalxdgcjcur7anxllzyfwnmetlsvq2f54", + "time": 1697792640 + } + ], + "validationError": false + }, + { + "dpid": "109", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibiziudxe62de7g443yl453tpnky25ujrcdhuaudtwq7hxrrr6q3m", + "time": 1698054684 + }, + { + "cid": "bafkreibiziudxe62de7g443yl453tpnky25ujrcdhuaudtwq7hxrrr6q3m", + "time": 1698054684 + } + ], + "validationError": false + }, + { + "dpid": "110", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreic65maz27f7atu7a4euzl6jv4c2kz66ddvcxuhdajl4i4l27uwwii", + "time": 1698079308 + }, + { + "cid": "bafkreic65maz27f7atu7a4euzl6jv4c2kz66ddvcxuhdajl4i4l27uwwii", + "time": 1698079308 + }, + { + "cid": "bafkreic65maz27f7atu7a4euzl6jv4c2kz66ddvcxuhdajl4i4l27uwwii", + "time": 1698323460 + }, + { + "cid": "bafkreic65maz27f7atu7a4euzl6jv4c2kz66ddvcxuhdajl4i4l27uwwii", + "time": 1698323460 + } + ], + "validationError": false + }, + { + "dpid": "111", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiejskdyqkcsnvcl6njkivjvptts656x3qvr64nsjdnx6pcn6bdht4", + "time": 1698177444 + }, + { + "cid": "bafkreiejskdyqkcsnvcl6njkivjvptts656x3qvr64nsjdnx6pcn6bdht4", + "time": 1698177444 + }, + { + "cid": "bafkreialaclllbtsaxzdhbbut4mk57xh4r7bsj56cb44fockdxokcznbk4", + "time": 1698178344 + }, + { + "cid": "bafkreialaclllbtsaxzdhbbut4mk57xh4r7bsj56cb44fockdxokcznbk4", + "time": 1698178344 + } + ], + "validationError": false + }, + { + "dpid": "112", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreictzmcsbe3bkmb7vyludvy7q37brvsw6q7xayblyn45r23n7ru224", + "time": 1698747720 + }, + { + "cid": "bafkreictzmcsbe3bkmb7vyludvy7q37brvsw6q7xayblyn45r23n7ru224", + "time": 1698747720 + }, + { + "cid": "bafkreifpbperacf57typaumiauqsf3kcmljgm7ehu2vjmlflwepddpeth4", + "time": 1698747864 + }, + { + "cid": "bafkreifpbperacf57typaumiauqsf3kcmljgm7ehu2vjmlflwepddpeth4", + "time": 1698747864 + } + ], + "validationError": false + }, + { + "dpid": "113", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreig2nlksggv4ghb24xw7ng23klrttx3kiu3tdlnsa2gcn2zacpmxa4", + "time": 1698782484 + }, + { + "cid": "bafkreig2nlksggv4ghb24xw7ng23klrttx3kiu3tdlnsa2gcn2zacpmxa4", + "time": 1698782484 + } + ], + "validationError": false + }, + { + "dpid": "114", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibsaosbasq6er4o2mkovemlp6tgppyeudue6lsx6dbznba56omd6e", + "time": 1698782652 + }, + { + "cid": "bafkreibsaosbasq6er4o2mkovemlp6tgppyeudue6lsx6dbznba56omd6e", + "time": 1698782652 + } + ], + "validationError": false + }, + { + "dpid": "115", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiaqt4amqtdha2affz4caq6qrl3uzk4zutwfnzcc6ba5ziw6itc2ty", + "time": 1699355412 + }, + { + "cid": "bafkreiaqt4amqtdha2affz4caq6qrl3uzk4zutwfnzcc6ba5ziw6itc2ty", + "time": 1699355412 + }, + { + "cid": "bafkreichmxylugiwhtrhomfjc7njdmp6isfivmdsflhmuzenzxnyl76m5i", + "time": 1699355784 + }, + { + "cid": "bafkreichmxylugiwhtrhomfjc7njdmp6isfivmdsflhmuzenzxnyl76m5i", + "time": 1699355784 + } + ], + "validationError": false + }, + { + "dpid": "116", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreid4spqoyg2mk2r7bcju6vkxsgtcx2fl27tyivtvrvnwlqgn26udn4", + "time": 1699608000 + }, + { + "cid": "bafkreid4spqoyg2mk2r7bcju6vkxsgtcx2fl27tyivtvrvnwlqgn26udn4", + "time": 1699608000 + }, + { + "cid": "bafkreiejv6ymnxxum5c67qpkvp2eevgy7rgksq7vhzgyfxg5riwl33lzqe", + "time": 1699887960 + }, + { + "cid": "bafkreiejv6ymnxxum5c67qpkvp2eevgy7rgksq7vhzgyfxg5riwl33lzqe", + "time": 1699887960 + }, + { + "cid": "bafkreibechybrdrnwlsg3unh2pgxg2jgekg653h37e4xzc3wazyzcjzegq", + "time": 1699954776 + }, + { + "cid": "bafkreibechybrdrnwlsg3unh2pgxg2jgekg653h37e4xzc3wazyzcjzegq", + "time": 1699954776 + } + ], + "validationError": false + }, + { + "dpid": "117", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiepbbtkhudgspd6dr4rnckaqwdenedehsvppkyakute6z36bplgpy", + "time": 1699954800 + }, + { + "cid": "bafkreiepbbtkhudgspd6dr4rnckaqwdenedehsvppkyakute6z36bplgpy", + "time": 1699954800 + }, + { + "cid": "bafkreids7cf6gagvaxbmammx6ekl4e3xwhcyw33vkqmy5ml2m4epvpjwua", + "time": 1700053860 + }, + { + "cid": "bafkreids7cf6gagvaxbmammx6ekl4e3xwhcyw33vkqmy5ml2m4epvpjwua", + "time": 1700053860 + } + ], + "validationError": false + }, + { + "dpid": "118", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihv7uzjstazrksvrdwrt6j3oqiw73oqi2krvwlzojbo5yhrfrpcu4", + "time": 1699979532 + }, + { + "cid": "bafkreihv7uzjstazrksvrdwrt6j3oqiw73oqi2krvwlzojbo5yhrfrpcu4", + "time": 1699979532 + }, + { + "cid": "bafkreifwnjaykar4vdhcpyimr73hklty7nqnm77u37rzmdyhldtlleycfy", + "time": 1702053972 + }, + { + "cid": "bafkreifwnjaykar4vdhcpyimr73hklty7nqnm77u37rzmdyhldtlleycfy", + "time": 1702053972 + } + ], + "validationError": false + }, + { + "dpid": "119", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifisxmqzztc3zgleheiakn4xn5w7ze6ap5iynom46djxue54nvk5i", + "time": 1699983900 + }, + { + "cid": "bafkreifisxmqzztc3zgleheiakn4xn5w7ze6ap5iynom46djxue54nvk5i", + "time": 1699983900 + }, + { + "cid": "bafkreihhg6k56gey42vldxac36u3ueleq4nzrm2zw5fxfcdmwcdrfyjpci", + "time": 1699984152 + }, + { + "cid": "bafkreihhg6k56gey42vldxac36u3ueleq4nzrm2zw5fxfcdmwcdrfyjpci", + "time": 1699984152 + } + ], + "validationError": false + }, + { + "dpid": "120", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifonv6z5enzbl44kwvh3i3m5stmagckblhfp4skmilmt72ff3dthe", + "time": 1699984440 + }, + { + "cid": "bafkreifonv6z5enzbl44kwvh3i3m5stmagckblhfp4skmilmt72ff3dthe", + "time": 1699984440 + } + ], + "validationError": false + }, + { + "dpid": "121", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreig7g2zbirxw3spdxicv6igvu4t2frzdbipzh4q2lp7a7vzsnktdym", + "time": 1699984896 + }, + { + "cid": "bafkreig7g2zbirxw3spdxicv6igvu4t2frzdbipzh4q2lp7a7vzsnktdym", + "time": 1699984896 + } + ], + "validationError": false + }, + { + "dpid": "122", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidhtfpm7qcv36eklavzuhq7dxbfq7a2o3ovv6q55qubyr7xnvpnm4", + "time": 1700005716 + }, + { + "cid": "bafkreidhtfpm7qcv36eklavzuhq7dxbfq7a2o3ovv6q55qubyr7xnvpnm4", + "time": 1700005716 + } + ], + "validationError": false + }, + { + "dpid": "123", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifuyc6nxavordwnewceq6tdzbzs4u5u7eiohs2lflwabdmhrrcxtm", + "time": 1700006352 + }, + { + "cid": "bafkreifuyc6nxavordwnewceq6tdzbzs4u5u7eiohs2lflwabdmhrrcxtm", + "time": 1700006352 + } + ], + "validationError": false + }, + { + "dpid": "124", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiccwsruwcne5ctm4bdarr6772xgxqdcy3jg66rthmd5iaq2hnexgi", + "time": 1700046408 + }, + { + "cid": "bafkreiccwsruwcne5ctm4bdarr6772xgxqdcy3jg66rthmd5iaq2hnexgi", + "time": 1700046408 + }, + { + "cid": "bafkreihi36k65e6jlytud7hcvtxru2xbkphtxbdu3xx2pkm53qwb5mjzge", + "time": 1700046432 + }, + { + "cid": "bafkreihi36k65e6jlytud7hcvtxru2xbkphtxbdu3xx2pkm53qwb5mjzge", + "time": 1700046432 + }, + { + "cid": "bafkreiezsp3ibhch3wf4arb4ies65exfex2isowpfsrrlq6pyvatiexr5q", + "time": 1700046552 + }, + { + "cid": "bafkreiezsp3ibhch3wf4arb4ies65exfex2isowpfsrrlq6pyvatiexr5q", + "time": 1700046552 + } + ], + "validationError": false + }, + { + "dpid": "125", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidsdl7s6pqakmfhfvcauof7ovylegxa5nwp2dxuxd5rbb27vsk4d4", + "time": 1700057772 + }, + { + "cid": "bafkreidsdl7s6pqakmfhfvcauof7ovylegxa5nwp2dxuxd5rbb27vsk4d4", + "time": 1700057772 + }, + { + "cid": "bafkreidjcemwjx3ljeuja3lety52fksvk2ojukxkxudbnwu7kgse2zz3tm", + "time": 1700058384 + }, + { + "cid": "bafkreidjcemwjx3ljeuja3lety52fksvk2ojukxkxudbnwu7kgse2zz3tm", + "time": 1700058384 + } + ], + "validationError": false + }, + { + "dpid": "126", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreib6z6ysfnyw6k6ly7cpdp7qjcjbbvjoffn4ppiarimmk33sbxuoy4", + "time": 1700059584 + }, + { + "cid": "bafkreib6z6ysfnyw6k6ly7cpdp7qjcjbbvjoffn4ppiarimmk33sbxuoy4", + "time": 1700059584 + } + ], + "validationError": false + }, + { + "dpid": "127", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibqnmfw4jhrjk4ggz63kqtti7rzxroutotrrey2j37a3ad2wfuojm", + "time": 1700063400 + }, + { + "cid": "bafkreibqnmfw4jhrjk4ggz63kqtti7rzxroutotrrey2j37a3ad2wfuojm", + "time": 1700063400 + }, + { + "cid": "bafkreifgaoapp6ku2zt3awb3svh3ol75stczvu2bon373bit4whaneb2lm", + "time": 1700063832 + }, + { + "cid": "bafkreifgaoapp6ku2zt3awb3svh3ol75stczvu2bon373bit4whaneb2lm", + "time": 1700063832 + }, + { + "cid": "bafkreibbb2gkxihablys2fjtrecr2tvfbujyulblivfqn4jsl6hyx5dghy", + "time": 1708492476 + }, + { + "cid": "bafkreibbb2gkxihablys2fjtrecr2tvfbujyulblivfqn4jsl6hyx5dghy", + "time": 1708492476 + } + ], + "validationError": false + }, + { + "dpid": "128", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihjgheci62x27bgduapkcmwbxldpwyk5af5kqvbpq2nmfmtfxdmmm", + "time": 1700063832 + }, + { + "cid": "bafkreihjgheci62x27bgduapkcmwbxldpwyk5af5kqvbpq2nmfmtfxdmmm", + "time": 1700063832 + } + ], + "validationError": false + }, + { + "dpid": "129", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigtnznzipcb6j4ufpnmde3e66pzl53n7etkxjj4waorkc2vfzban4", + "time": 1700754096 + }, + { + "cid": "bafkreigtnznzipcb6j4ufpnmde3e66pzl53n7etkxjj4waorkc2vfzban4", + "time": 1700754096 + } + ], + "validationError": false + }, + { + "dpid": "130", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiaiwepaj5h3ueggcvsp7rs6zsu5emvcbxg4aantq43mjrvkb46t5i", + "time": 1701434724 + }, + { + "cid": "bafkreiaiwepaj5h3ueggcvsp7rs6zsu5emvcbxg4aantq43mjrvkb46t5i", + "time": 1701434724 + } + ], + "validationError": false + }, + { + "dpid": "131", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidw5k6li7ex6goxdky37t6obgd3472rbgygmvu5rnf6iiptrqkmiy", + "time": 1701702708 + }, + { + "cid": "bafkreidw5k6li7ex6goxdky37t6obgd3472rbgygmvu5rnf6iiptrqkmiy", + "time": 1701702708 + }, + { + "cid": "bafkreiaa4eh2bmuwlutgnvnbbd64npfqdlzxzc75li5pzhlmdkrvj5qjrq", + "time": 1701703056 + }, + { + "cid": "bafkreiaa4eh2bmuwlutgnvnbbd64npfqdlzxzc75li5pzhlmdkrvj5qjrq", + "time": 1701703056 + } + ], + "validationError": false + }, + { + "dpid": "132", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifqxy2ie6a5gwqwjdrjzpuer3d5dwb4sauljj6coojnzprlvfes2e", + "time": 1701788316 + }, + { + "cid": "bafkreifqxy2ie6a5gwqwjdrjzpuer3d5dwb4sauljj6coojnzprlvfes2e", + "time": 1701788316 + } + ], + "validationError": false + }, + { + "dpid": "133", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifyxvaek2nsdtke62wviupn7qqtgzeucrpe5c66lrycvtvestkkau", + "time": 1701795900 + }, + { + "cid": "bafkreifyxvaek2nsdtke62wviupn7qqtgzeucrpe5c66lrycvtvestkkau", + "time": 1701795900 + } + ], + "validationError": false + }, + { + "dpid": "134", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigu4xxysvqtf6cicat3iheugi6g45vsgnptbrht6p6om3txvsttye", + "time": 1701872976 + }, + { + "cid": "bafkreigu4xxysvqtf6cicat3iheugi6g45vsgnptbrht6p6om3txvsttye", + "time": 1701872976 + } + ], + "validationError": false + }, + { + "dpid": "135", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihf45jsg5rnkpv2mz2wwpf5w3u6ixu765a5hckam3j3fbl5i2tgbq", + "time": 1701875664 + }, + { + "cid": "bafkreihf45jsg5rnkpv2mz2wwpf5w3u6ixu765a5hckam3j3fbl5i2tgbq", + "time": 1701875664 + } + ], + "validationError": false + }, + { + "dpid": "136", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreih5g3pbinh264nuwgvsuerueucgpacv5ytill4sbxt7zsexgfntqi", + "time": 1702142316 + }, + { + "cid": "bafkreih5g3pbinh264nuwgvsuerueucgpacv5ytill4sbxt7zsexgfntqi", + "time": 1702142316 + }, + { + "cid": "bafkreiaitokvbuwllmihafculxuniwiydtl2cuuuhqbmkuvpk62uuhmu4e", + "time": 1702145736 + }, + { + "cid": "bafkreiaitokvbuwllmihafculxuniwiydtl2cuuuhqbmkuvpk62uuhmu4e", + "time": 1702145736 + }, + { + "cid": "bafkreifyo3tzgp3bp7a7zwxym6lskt567rdvjn4t334dczglkvgbpglla4", + "time": 1702202688 + }, + { + "cid": "bafkreifyo3tzgp3bp7a7zwxym6lskt567rdvjn4t334dczglkvgbpglla4", + "time": 1702202688 + }, + { + "cid": "bafkreif4yaj5za2adpy3wmklbstwpaciobl3j4uwcwrwcri7bbkcvwik6q", + "time": 1708382904 + }, + { + "cid": "bafkreif4yaj5za2adpy3wmklbstwpaciobl3j4uwcwrwcri7bbkcvwik6q", + "time": 1708382904 + } + ], + "validationError": false + }, + { + "dpid": "137", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiebtockthsjrwsikbjshzdikjsa3j35avolyabw2zl5nxd4np2qa4", + "time": 1702430448 + }, + { + "cid": "bafkreiebtockthsjrwsikbjshzdikjsa3j35avolyabw2zl5nxd4np2qa4", + "time": 1702430448 + }, + { + "cid": "bafkreig5muvzq5a5whji264zbzpkd452kqiswo4on3b3waibrwcte6n2jq", + "time": 1702439796 + }, + { + "cid": "bafkreig5muvzq5a5whji264zbzpkd452kqiswo4on3b3waibrwcte6n2jq", + "time": 1702439796 + } + ], + "validationError": false + }, + { + "dpid": "138", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiezlcl57kasksq7hwdqxsffpqloek4jbr4vrvausbg6ozsrnwnkfq", + "time": 1702512600 + }, + { + "cid": "bafkreiezlcl57kasksq7hwdqxsffpqloek4jbr4vrvausbg6ozsrnwnkfq", + "time": 1702512600 + }, + { + "cid": "bafkreifxevx7yu5noaquu4bojmyl6pubqotkp4wsbjpd6vbz3neuk7nlxu", + "time": 1707153744 + }, + { + "cid": "bafkreifxevx7yu5noaquu4bojmyl6pubqotkp4wsbjpd6vbz3neuk7nlxu", + "time": 1707153744 + } + ], + "validationError": false + }, + { + "dpid": "139", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreictkrrk3arfcy4rstvjjtpwrw3yf7wdgxepf5z2cmjuiv2igkdlnm", + "time": 1702512876 + }, + { + "cid": "bafkreictkrrk3arfcy4rstvjjtpwrw3yf7wdgxepf5z2cmjuiv2igkdlnm", + "time": 1702512876 + } + ], + "validationError": false + }, + { + "dpid": "140", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibz4nvkwdmqxmtxefklebrqrhbbhias3bvt7moko5jgw6hopkhwga", + "time": 1702513068 + }, + { + "cid": "bafkreibz4nvkwdmqxmtxefklebrqrhbbhias3bvt7moko5jgw6hopkhwga", + "time": 1702513068 + }, + { + "cid": "bafkreifbhbxfm6s6djz5taz5buthqlpy2cruaysfnixojzubwgkprsbq4i", + "time": 1708801020 + }, + { + "cid": "bafkreifbhbxfm6s6djz5taz5buthqlpy2cruaysfnixojzubwgkprsbq4i", + "time": 1708801020 + } + ], + "validationError": false + }, + { + "dpid": "141", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifkjw3mjt4ib4dhjjpn2sbv3oqf4c5mcf5n7zlggynvvqlwksdxay", + "time": 1702513164 + }, + { + "cid": "bafkreifkjw3mjt4ib4dhjjpn2sbv3oqf4c5mcf5n7zlggynvvqlwksdxay", + "time": 1702513164 + }, + { + "cid": "bafkreiabv34brs4dnbivmzfyggc2ryaxs7zlb3x3zh2ynie53suktlitva", + "time": 1708802436 + }, + { + "cid": "bafkreiabv34brs4dnbivmzfyggc2ryaxs7zlb3x3zh2ynie53suktlitva", + "time": 1708802436 + }, + { + "cid": "bafkreiabv34brs4dnbivmzfyggc2ryaxs7zlb3x3zh2ynie53suktlitva", + "time": 1708802436 + }, + { + "cid": "bafkreiabv34brs4dnbivmzfyggc2ryaxs7zlb3x3zh2ynie53suktlitva", + "time": 1708802436 + } + ], + "validationError": false + }, + { + "dpid": "142", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidll4iaylvaplqqqotp3e7bolx3qgqnjkzliplbhdz7v7dcrdn65q", + "time": 1702513344 + }, + { + "cid": "bafkreidll4iaylvaplqqqotp3e7bolx3qgqnjkzliplbhdz7v7dcrdn65q", + "time": 1702513344 + }, + { + "cid": "bafkreieszmyc5ph43ft77gk4pj5emhuy53if6vjbeejzxbrtusxb3ouq54", + "time": 1708802160 + }, + { + "cid": "bafkreieszmyc5ph43ft77gk4pj5emhuy53if6vjbeejzxbrtusxb3ouq54", + "time": 1708802160 + } + ], + "validationError": false + }, + { + "dpid": "143", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidjonu3vhm5vd5fogs3zrjzq3qcajjkpvwwj43gdqn2swiops5glm", + "time": 1702513392 + }, + { + "cid": "bafkreidjonu3vhm5vd5fogs3zrjzq3qcajjkpvwwj43gdqn2swiops5glm", + "time": 1702513392 + }, + { + "cid": "bafkreih25vwbntxxybpsxctpg5eqi6f7ewcwzqzpklifbfqffcrbs65k64", + "time": 1708802052 + }, + { + "cid": "bafkreih25vwbntxxybpsxctpg5eqi6f7ewcwzqzpklifbfqffcrbs65k64", + "time": 1708802052 + } + ], + "validationError": false + }, + { + "dpid": "144", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreieogvypbmg7vgut2f76b33kql6cw4vstzm4f7asoenfzh2rudpekm", + "time": 1702513452 + }, + { + "cid": "bafkreieogvypbmg7vgut2f76b33kql6cw4vstzm4f7asoenfzh2rudpekm", + "time": 1702513452 + }, + { + "cid": "bafkreib3b6ztd5tyebhjtxsj4dpl2nw3bipejak5n3zz7u7ta3et2ghyoq", + "time": 1708801908 + }, + { + "cid": "bafkreib3b6ztd5tyebhjtxsj4dpl2nw3bipejak5n3zz7u7ta3et2ghyoq", + "time": 1708801908 + } + ], + "validationError": false + }, + { + "dpid": "145", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibbu3bk7ucli5yaikmcwdduigaien2dqb2bzq4af6ufzrmu6vswty", + "time": 1702513524 + }, + { + "cid": "bafkreibbu3bk7ucli5yaikmcwdduigaien2dqb2bzq4af6ufzrmu6vswty", + "time": 1702513524 + }, + { + "cid": "bafkreig2mtcbf6eu2vraqmy5ftukn4i6fgeiwfou2znswwss5sarsotmcm", + "time": 1708801680 + }, + { + "cid": "bafkreig2mtcbf6eu2vraqmy5ftukn4i6fgeiwfou2znswwss5sarsotmcm", + "time": 1708801680 + } + ], + "validationError": false + }, + { + "dpid": "146", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreied3q6xs3itsgvjgeybu5cnmuuds2puklksrhfvy4ofjddo3nkyle", + "time": 1702513584 + }, + { + "cid": "bafkreied3q6xs3itsgvjgeybu5cnmuuds2puklksrhfvy4ofjddo3nkyle", + "time": 1702513584 + } + ], + "validationError": false + }, + { + "dpid": "147", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiapkcqpkavfwqc4id5mb7e46n3f5nr5uig4ik7bwaxk7a5tox2ztq", + "time": 1702513620 + }, + { + "cid": "bafkreiapkcqpkavfwqc4id5mb7e46n3f5nr5uig4ik7bwaxk7a5tox2ztq", + "time": 1702513620 + }, + { + "cid": "bafkreifxvagntjqfpzrigsjfajflqatzk4dogq56lqotaqjv7d3iugdrtm", + "time": 1708801212 + }, + { + "cid": "bafkreifxvagntjqfpzrigsjfajflqatzk4dogq56lqotaqjv7d3iugdrtm", + "time": 1708801212 + }, + { + "cid": "bafkreifxvagntjqfpzrigsjfajflqatzk4dogq56lqotaqjv7d3iugdrtm", + "time": 1708801236 + }, + { + "cid": "bafkreifxvagntjqfpzrigsjfajflqatzk4dogq56lqotaqjv7d3iugdrtm", + "time": 1708801236 + } + ], + "validationError": false + }, + { + "dpid": "148", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibgprhlr22zfwgrm7y3kx4jxslpozqp4pmofsrj5tbqpkaxi5glpe", + "time": 1702559448 + }, + { + "cid": "bafkreibgprhlr22zfwgrm7y3kx4jxslpozqp4pmofsrj5tbqpkaxi5glpe", + "time": 1702559448 + }, + { + "cid": "bafkreieqjqllffddjuraswoq4pm5d5cd5eu2knqe6yie7rj6aufujtct4e", + "time": 1702907160 + }, + { + "cid": "bafkreieqjqllffddjuraswoq4pm5d5cd5eu2knqe6yie7rj6aufujtct4e", + "time": 1702907160 + } + ], + "validationError": false + }, + { + "dpid": "149", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigcc2l7aay34i5zeot5wjvpspdpwp6ipfzffs3cnnpbpt7c2gqu6i", + "time": 1703003448 + }, + { + "cid": "bafkreigcc2l7aay34i5zeot5wjvpspdpwp6ipfzffs3cnnpbpt7c2gqu6i", + "time": 1703003448 + }, + { + "cid": "bafkreig6lp6265u42llqh6hkzxc54hmyfea7ax7gewg7tdyvthieotmwpy", + "time": 1703003868 + }, + { + "cid": "bafkreig6lp6265u42llqh6hkzxc54hmyfea7ax7gewg7tdyvthieotmwpy", + "time": 1703003868 + }, + { + "cid": "bafkreici3wzz7njqigyo7ebzwn3kibxgwjr43ihowwebl4exmfy75tkpjm", + "time": 1703072388 + }, + { + "cid": "bafkreici3wzz7njqigyo7ebzwn3kibxgwjr43ihowwebl4exmfy75tkpjm", + "time": 1703072388 + }, + { + "cid": "bafkreicgxdcypaq5tmmrrva3tl7k2un47pfolg3mox72j5k65zitsukfii", + "time": 1707406116 + }, + { + "cid": "bafkreicgxdcypaq5tmmrrva3tl7k2un47pfolg3mox72j5k65zitsukfii", + "time": 1707406116 + }, + { + "cid": "bafkreie7j6ji7ynh5d5yoldoxfevak55nkmcx5h7v3c6h4xy7le25sbgke", + "time": 1709143824 + }, + { + "cid": "bafkreie7j6ji7ynh5d5yoldoxfevak55nkmcx5h7v3c6h4xy7le25sbgke", + "time": 1709143824 + } + ], + "validationError": false + }, + { + "dpid": "150", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreif3aoauxavq7sxibkysi4kemqdwbcez4cjtmzoou46bj44r2rc3sa", + "time": 1703205816 + }, + { + "cid": "bafkreif3aoauxavq7sxibkysi4kemqdwbcez4cjtmzoou46bj44r2rc3sa", + "time": 1703205816 + } + ], + "validationError": false + }, + { + "dpid": "151", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicqe2blgjarm3bg6jon5sjvmu773bnuajfnkmlnvo5hd5uj2yr234", + "time": 1703212224 + }, + { + "cid": "bafkreicqe2blgjarm3bg6jon5sjvmu773bnuajfnkmlnvo5hd5uj2yr234", + "time": 1703212224 + } + ], + "validationError": false + }, + { + "dpid": "152", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifiy2ipxllse5z6kspsspgt247eadivoij736j3yehwe6cy5rn6ny", + "time": 1705091376 + }, + { + "cid": "bafkreifiy2ipxllse5z6kspsspgt247eadivoij736j3yehwe6cy5rn6ny", + "time": 1705091376 + }, + { + "cid": "bafkreihvutuhtiehsoyc66u7a7bncnqfhoosynejagkykkfwa7gkr2rsta", + "time": 1705091496 + }, + { + "cid": "bafkreihvutuhtiehsoyc66u7a7bncnqfhoosynejagkykkfwa7gkr2rsta", + "time": 1705091496 + }, + { + "cid": "bafkreiekobyktiisailjk2sauqxembzyqe26z7i7mxkl6xidhhlb62wnyi", + "time": 1706832732 + }, + { + "cid": "bafkreiekobyktiisailjk2sauqxembzyqe26z7i7mxkl6xidhhlb62wnyi", + "time": 1706832732 + } + ], + "validationError": false + }, + { + "dpid": "153", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigr54hmercrddm2nnyo46yfn3w466zeoawph7k23swzr5v6lobcjm", + "time": 1705491780 + }, + { + "cid": "bafkreigr54hmercrddm2nnyo46yfn3w466zeoawph7k23swzr5v6lobcjm", + "time": 1705491780 + } + ], + "validationError": false + }, + { + "dpid": "154", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidzawjc7uaskxy2a55gfd3pjqssl5v6nfqj4ghziglbdfuk3arfri", + "time": 1705579488 + }, + { + "cid": "bafkreidzawjc7uaskxy2a55gfd3pjqssl5v6nfqj4ghziglbdfuk3arfri", + "time": 1705579488 + } + ], + "validationError": false + }, + { + "dpid": "155", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreieqqvt2bx34g44zombuj254dzqng5l4bjc33vnuduiaklfjf7jrza", + "time": 1706550924 + }, + { + "cid": "bafkreieqqvt2bx34g44zombuj254dzqng5l4bjc33vnuduiaklfjf7jrza", + "time": 1706550924 + } + ], + "validationError": false + }, + { + "dpid": "156", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibhuuogniwgsozq6zqgpfg622ktaz4e4xtspvxv6be7zoaknlp7oi", + "time": 1706735148 + }, + { + "cid": "bafkreibhuuogniwgsozq6zqgpfg622ktaz4e4xtspvxv6be7zoaknlp7oi", + "time": 1706735148 + }, + { + "cid": "bafkreicmyxjhueivvlucnysc5sgmdnxgsmn5wryaodmdwl7xhku5o4dwki", + "time": 1706737632 + }, + { + "cid": "bafkreicmyxjhueivvlucnysc5sgmdnxgsmn5wryaodmdwl7xhku5o4dwki", + "time": 1706737632 + } + ], + "validationError": false + }, + { + "dpid": "157", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreificypwhqbtu4acdrxgbzdrpbw5dncxrcwtskrebhv53trsk23ive", + "time": 1706738172 + }, + { + "cid": "bafkreificypwhqbtu4acdrxgbzdrpbw5dncxrcwtskrebhv53trsk23ive", + "time": 1706738172 + } + ], + "validationError": false + }, + { + "dpid": "158", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigmgjpsfxzshdvozllx3m6s5ubiulcx7yumhe7armganzdiu42feu", + "time": 1706834520 + }, + { + "cid": "bafkreigmgjpsfxzshdvozllx3m6s5ubiulcx7yumhe7armganzdiu42feu", + "time": 1706834520 + } + ], + "validationError": false + }, + { + "dpid": "159", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifl7hhai6p5podahrcse5ocklgf2qdayw33raeaugk4cjgugroupq", + "time": 1707473772 + }, + { + "cid": "bafkreifl7hhai6p5podahrcse5ocklgf2qdayw33raeaugk4cjgugroupq", + "time": 1707473772 + } + ], + "validationError": false + }, + { + "dpid": "160", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifjtpqkpatgmy4jpmhsepfvpv2gmiofgyh6qpinfnstyrsufickua", + "time": 1707644916 + }, + { + "cid": "bafkreifjtpqkpatgmy4jpmhsepfvpv2gmiofgyh6qpinfnstyrsufickua", + "time": 1707644916 + }, + { + "cid": "bafkreif2hl47drgqwb6qay5dbdmmm4ivbcfus3wromwaho2wxine6niudm", + "time": 1707645552 + }, + { + "cid": "bafkreif2hl47drgqwb6qay5dbdmmm4ivbcfus3wromwaho2wxine6niudm", + "time": 1707645552 + }, + { + "cid": "bafkreihopqbkiidgwszltgcx3cp3n5m3vkfcyqf5tktaf7zpikdwqkpkmu", + "time": 1707646572 + }, + { + "cid": "bafkreihopqbkiidgwszltgcx3cp3n5m3vkfcyqf5tktaf7zpikdwqkpkmu", + "time": 1707646572 + } + ], + "validationError": false + }, + { + "dpid": "161", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreialnzhaztvhuvwkzpqlst7w3yttviws5tcpdnwvggdmxnx2ydzere", + "time": 1707848244 + }, + { + "cid": "bafkreialnzhaztvhuvwkzpqlst7w3yttviws5tcpdnwvggdmxnx2ydzere", + "time": 1707848244 + } + ], + "validationError": false + }, + { + "dpid": "162", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreieowcw35rvuvocaupds5fsremm4h6j3cris5sscfjun4o2e4bccla", + "time": 1707967356 + }, + { + "cid": "bafkreieowcw35rvuvocaupds5fsremm4h6j3cris5sscfjun4o2e4bccla", + "time": 1707967356 + } + ], + "validationError": false + }, + { + "dpid": "163", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreif4554qs4ppds7364pfeqla623ebon5nlvs5m53ecw4jhdkmtnfre", + "time": 1707967740 + }, + { + "cid": "bafkreif4554qs4ppds7364pfeqla623ebon5nlvs5m53ecw4jhdkmtnfre", + "time": 1707967740 + } + ], + "validationError": false + }, + { + "dpid": "164", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidn5fdrmh62nc4r3g5paqija32flksc23evsc5akqoqftkwfeqm2i", + "time": 1708094712 + }, + { + "cid": "bafkreidn5fdrmh62nc4r3g5paqija32flksc23evsc5akqoqftkwfeqm2i", + "time": 1708094712 + }, + { + "cid": "bafkreibpaflwrfhygpheciwlemvahtkkwdgg35dnevu25rid46iae2ws6i", + "time": 1708453920 + }, + { + "cid": "bafkreibpaflwrfhygpheciwlemvahtkkwdgg35dnevu25rid46iae2ws6i", + "time": 1708453920 + }, + { + "cid": "bafkreif7javbr3hrnuwmoggv7dtprs7axcsdldsqpwmpfcdizy5bk2tfxa", + "time": 1708514124 + }, + { + "cid": "bafkreif7javbr3hrnuwmoggv7dtprs7axcsdldsqpwmpfcdizy5bk2tfxa", + "time": 1708514124 + } + ], + "validationError": false + }, + { + "dpid": "165", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicv2zf35h43m656h2734du5ynp2zctedwxkgwtbhubg34oenhhexa", + "time": 1708109700 + }, + { + "cid": "bafkreicv2zf35h43m656h2734du5ynp2zctedwxkgwtbhubg34oenhhexa", + "time": 1708109700 + } + ], + "validationError": false + }, + { + "dpid": "166", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibfvwqckon265lpmjuinzlg6ebzo4s6dtgh7invz2prf766bvuodm", + "time": 1708372176 + }, + { + "cid": "bafkreibfvwqckon265lpmjuinzlg6ebzo4s6dtgh7invz2prf766bvuodm", + "time": 1708372176 + } + ], + "validationError": false + }, + { + "dpid": "167", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreige2oxxkk4rboadjcxlvwbvlun3e4xmrxp4qtqvdmjdfzhptuyf5a", + "time": 1708458984 + }, + { + "cid": "bafkreige2oxxkk4rboadjcxlvwbvlun3e4xmrxp4qtqvdmjdfzhptuyf5a", + "time": 1708458984 + } + ], + "validationError": false + }, + { + "dpid": "168", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiftjc6urzlqlcffupjwnezhfash4tlvgy2qnstu2vpp6tdk4zpmma", + "time": 1708493796 + }, + { + "cid": "bafkreiftjc6urzlqlcffupjwnezhfash4tlvgy2qnstu2vpp6tdk4zpmma", + "time": 1708493796 + }, + { + "cid": "bafkreic4hj66auaehgtgoz6zzks2w2r7lsxhrisjuh7dbfipvgmkhfpace", + "time": 1708690584 + }, + { + "cid": "bafkreic4hj66auaehgtgoz6zzks2w2r7lsxhrisjuh7dbfipvgmkhfpace", + "time": 1708690584 + } + ], + "validationError": false + }, + { + "dpid": "169", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidguz57tkqtmta44oov6jkgxxeg635asddp2belouydyxjndukspi", + "time": 1708495980 + }, + { + "cid": "bafkreidguz57tkqtmta44oov6jkgxxeg635asddp2belouydyxjndukspi", + "time": 1708495980 + } + ], + "validationError": false + }, + { + "dpid": "170", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidyakyvrrmovwk4ddfw2fxtgkl3f4coef75pybncmoa55jnlxx6tm", + "time": 1708501884 + }, + { + "cid": "bafkreidyakyvrrmovwk4ddfw2fxtgkl3f4coef75pybncmoa55jnlxx6tm", + "time": 1708501884 + }, + { + "cid": "bafkreiddvndkkcaqwdmetqxfl2vhfag45c4cug6aubsnlrl7uk66y3pzrq", + "time": 1710843672 + }, + { + "cid": "bafkreibsbid5gceknfrbun76wrdq73vzglgxq25yy2pg7fnpflfuucem6e", + "time": 1710844824 + }, + { + "cid": "bafkreibsbid5gceknfrbun76wrdq73vzglgxq25yy2pg7fnpflfuucem6e", + "time": 1710845520 + }, + { + "cid": "bafkreiav726womo5gxdii7ootir2uuhdn34fzej3f6ala7xynge6ag543a", + "time": 1710846540 + } + ], + "validationError": false + }, + { + "dpid": "171", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibtajzmf7ty7hhyclz4aj5f74mktbj4liyhobvs3qr7nebqprl2yi", + "time": 1708516896 + }, + { + "cid": "bafkreibtajzmf7ty7hhyclz4aj5f74mktbj4liyhobvs3qr7nebqprl2yi", + "time": 1708516896 + } + ], + "validationError": false + }, + { + "dpid": "172", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicenejlzy2ygk6vflo4xhr7hjqe22nz5f354afoo5pc65d6qf2ojq", + "time": 1708523184 + }, + { + "cid": "bafkreicenejlzy2ygk6vflo4xhr7hjqe22nz5f354afoo5pc65d6qf2ojq", + "time": 1708523184 + }, + { + "cid": "bafkreibhvfaxoampgahsqavwoc3r5qwsmb23cg5lavkgoak77x4htgjism", + "time": 1712669388 + }, + { + "cid": "bafkreiab7zb4iwbnd6atuukrzkjcph7hbc763rqxnhrl3xtk7c73c3ofsi", + "time": 1712679120 + }, + { + "cid": "bafkreifxjj6yjggeno26fceojxb3ibuoaszeettsqwumuw337owiu2goaq", + "time": 1712758368 + }, + { + "cid": "bafkreic5tnpaovahue6zvswongz52o2kog7ngwiawcmwcq63xskxfwltdm", + "time": 1712854176 + }, + { + "cid": "bafkreic5tnpaovahue6zvswongz52o2kog7ngwiawcmwcq63xskxfwltdm", + "time": 1712859180 + }, + { + "cid": "bafkreignqmhx4yaaaqytcf2q7hhvbhyz5nrsqq4sv23jbenzs65luutaqu", + "time": 1713200220 + }, + { + "cid": "bafkreihv4owtfk4yfhljptkfrcsnt6nnaobbgsfl4h2ivxgi3kbtvzspc4", + "time": 1713212124 + } + ], + "validationError": false + }, + { + "dpid": "173", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreie23vmvink27bqo7qzzsdng4ho22uhrgoscencr7s4itekrzreahy", + "time": 1708531344 + }, + { + "cid": "bafkreie23vmvink27bqo7qzzsdng4ho22uhrgoscencr7s4itekrzreahy", + "time": 1708531344 + }, + { + "cid": "bafkreie23vmvink27bqo7qzzsdng4ho22uhrgoscencr7s4itekrzreahy", + "time": 1708531620 + }, + { + "cid": "bafkreie23vmvink27bqo7qzzsdng4ho22uhrgoscencr7s4itekrzreahy", + "time": 1708531620 + }, + { + "cid": "bafkreie23vmvink27bqo7qzzsdng4ho22uhrgoscencr7s4itekrzreahy", + "time": 1708531992 + }, + { + "cid": "bafkreie23vmvink27bqo7qzzsdng4ho22uhrgoscencr7s4itekrzreahy", + "time": 1708531992 + }, + { + "cid": "bafkreie23vmvink27bqo7qzzsdng4ho22uhrgoscencr7s4itekrzreahy", + "time": 1708532064 + }, + { + "cid": "bafkreie23vmvink27bqo7qzzsdng4ho22uhrgoscencr7s4itekrzreahy", + "time": 1708532064 + } + ], + "validationError": false + }, + { + "dpid": "174", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidobtwdrk7dulyc6dghfr6zylbfisjwbs6l6ahd6qfkfdavs76dpa", + "time": 1708602732 + }, + { + "cid": "bafkreidobtwdrk7dulyc6dghfr6zylbfisjwbs6l6ahd6qfkfdavs76dpa", + "time": 1708602732 + } + ], + "validationError": false + }, + { + "dpid": "175", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreignopdmerljfo6nzpq2hj5zr5g7h3wajjxthpuikxjpsdbco4tavm", + "time": 1708619376 + }, + { + "cid": "bafkreignopdmerljfo6nzpq2hj5zr5g7h3wajjxthpuikxjpsdbco4tavm", + "time": 1708619376 + }, + { + "cid": "bafkreiae65pw54dt5vx75oenehagushpi2sh42c3zqld7der3ircmfyqam", + "time": 1708653516 + }, + { + "cid": "bafkreiae65pw54dt5vx75oenehagushpi2sh42c3zqld7der3ircmfyqam", + "time": 1708653516 + }, + { + "cid": "bafkreihm7iuibrdzlr5uyrhhkyijboyheeujettcihcgmegrna43mmvs6a", + "time": 1708672332 + }, + { + "cid": "bafkreihm7iuibrdzlr5uyrhhkyijboyheeujettcihcgmegrna43mmvs6a", + "time": 1708672332 + }, + { + "cid": "bafkreicjzr7d4odl6dzvx3acnng3cwq5sptcjn5wbqeep4juymadohagfi", + "time": 1708674912 + }, + { + "cid": "bafkreicjzr7d4odl6dzvx3acnng3cwq5sptcjn5wbqeep4juymadohagfi", + "time": 1708674912 + }, + { + "cid": "bafkreihdgbp3rrimo3sfayouabpfy5awspr6lues5rj5pjld2mcwi5ftsm", + "time": 1708729500 + }, + { + "cid": "bafkreihdgbp3rrimo3sfayouabpfy5awspr6lues5rj5pjld2mcwi5ftsm", + "time": 1708729500 + }, + { + "cid": "bafkreidpouvko3ht6dkhplrx44r4cbycx4irvw6mnunven3x2mll5kgaie", + "time": 1708890600 + }, + { + "cid": "bafkreidpouvko3ht6dkhplrx44r4cbycx4irvw6mnunven3x2mll5kgaie", + "time": 1708890600 + } + ], + "validationError": false + }, + { + "dpid": "176", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidwx6vv43n4vyd2gvnc7a7hoalg3nj6ncuxtzete7bay6lgkdjrji", + "time": 1708695348 + }, + { + "cid": "bafkreidwx6vv43n4vyd2gvnc7a7hoalg3nj6ncuxtzete7bay6lgkdjrji", + "time": 1708695348 + }, + { + "cid": "bafkreibjcr22ex3uibpoxf3fpzriafscmbivizzkqrjx7iqh5qbkg4oizq", + "time": 1708695612 + }, + { + "cid": "bafkreibjcr22ex3uibpoxf3fpzriafscmbivizzkqrjx7iqh5qbkg4oizq", + "time": 1708695612 + } + ], + "validationError": false + }, + { + "dpid": "177", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihnul5baol6hg5vsq6sokqwbm5txyb5honlphs3rpjklc4d7pj4qi", + "time": 1708882260 + }, + { + "cid": "bafkreihnul5baol6hg5vsq6sokqwbm5txyb5honlphs3rpjklc4d7pj4qi", + "time": 1708882260 + }, + { + "cid": "bafkreidp7tepg63xchd2sxngslv6douzhg53j7ndnf4bwbxgwthvjxgmhq", + "time": 1715951676 + } + ], + "validationError": false + }, + { + "dpid": "178", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibnvu2kmntm4p2ttebfqukas5hdzzthyahkkgxizihb4f3fwvszoy", + "time": 1708900272 + }, + { + "cid": "bafkreibnvu2kmntm4p2ttebfqukas5hdzzthyahkkgxizihb4f3fwvszoy", + "time": 1708900272 + }, + { + "cid": "bafkreibax2nwfvcmewzi4muxbtywulni6zvvihnipob3hvweohuu3lmawu", + "time": 1708900680 + }, + { + "cid": "bafkreibax2nwfvcmewzi4muxbtywulni6zvvihnipob3hvweohuu3lmawu", + "time": 1708900680 + }, + { + "cid": "bafkreiaicia5j7xdpo5gr3nukomg7kylxpnyfiguflr7ff5z6v45rbg3om", + "time": 1708909188 + }, + { + "cid": "bafkreiaicia5j7xdpo5gr3nukomg7kylxpnyfiguflr7ff5z6v45rbg3om", + "time": 1708909188 + } + ], + "validationError": false + }, + { + "dpid": "179", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiekmumtbr6fg6ksitwx3744knbituhthjis3mnd5facdbqc6526fy", + "time": 1708930572 + }, + { + "cid": "bafkreiekmumtbr6fg6ksitwx3744knbituhthjis3mnd5facdbqc6526fy", + "time": 1708930572 + } + ], + "validationError": false + }, + { + "dpid": "180", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihyn2pm7mqzcjabytkoszcetquu4q6zouwaeqhp6bavvlmijqvj2m", + "time": 1708965960 + }, + { + "cid": "bafkreihyn2pm7mqzcjabytkoszcetquu4q6zouwaeqhp6bavvlmijqvj2m", + "time": 1708965960 + }, + { + "cid": "bafkreigksvcw5f67h2kzbxnndwf47ch74nb4vbniepacjt6y5nm74ote4m", + "time": 1708966848 + }, + { + "cid": "bafkreigksvcw5f67h2kzbxnndwf47ch74nb4vbniepacjt6y5nm74ote4m", + "time": 1708966848 + }, + { + "cid": "bafkreifhzq76yqo66hcvcj2e7554odbcppblavfrobmyuxynaj2wv2ydlm", + "time": 1708974048 + }, + { + "cid": "bafkreifhzq76yqo66hcvcj2e7554odbcppblavfrobmyuxynaj2wv2ydlm", + "time": 1708974048 + } + ], + "validationError": false + }, + { + "dpid": "181", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreieqzlofquf3yakkfcqwzzg77ea6qrirnbli6iedpeo5zk2hktedfe", + "time": 1709032560 + }, + { + "cid": "bafkreieqzlofquf3yakkfcqwzzg77ea6qrirnbli6iedpeo5zk2hktedfe", + "time": 1709032560 + } + ], + "validationError": false + }, + { + "dpid": "182", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidjaowinhp5e3m6ikq32mfgqg5mqw6ttzccngl5aa2imyryscenjq", + "time": 1709070444 + }, + { + "cid": "bafkreidjaowinhp5e3m6ikq32mfgqg5mqw6ttzccngl5aa2imyryscenjq", + "time": 1709070444 + }, + { + "cid": "bafkreidjaowinhp5e3m6ikq32mfgqg5mqw6ttzccngl5aa2imyryscenjq", + "time": 1709070600 + }, + { + "cid": "bafkreidjaowinhp5e3m6ikq32mfgqg5mqw6ttzccngl5aa2imyryscenjq", + "time": 1709070600 + } + ], + "validationError": false + }, + { + "dpid": "183", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihfy4ibvcrdxlq3n6y6ahskxglvyhskwugy7xwi4amk4dcek7hvvi", + "time": 1709074644 + }, + { + "cid": "bafkreihfy4ibvcrdxlq3n6y6ahskxglvyhskwugy7xwi4amk4dcek7hvvi", + "time": 1709074644 + } + ], + "validationError": false + }, + { + "dpid": "184", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreif4pg7ph3qxuj4yoapw4tez3jxt52m5fhp7nkd3q2ai4xrwva46oq", + "time": 1709709132 + }, + { + "cid": "bafkreif4pg7ph3qxuj4yoapw4tez3jxt52m5fhp7nkd3q2ai4xrwva46oq", + "time": 1709709132 + } + ], + "validationError": false + }, + { + "dpid": "185", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibbt24dc64gwzwhcjtyha5qsdvmj4ztlkbhg7p7s74hjpdlrveo5a", + "time": 1709710296 + }, + { + "cid": "bafkreibbt24dc64gwzwhcjtyha5qsdvmj4ztlkbhg7p7s74hjpdlrveo5a", + "time": 1709710296 + } + ], + "validationError": false + }, + { + "dpid": "186", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiezmycqcs3426uhlpamwfidxlt72njmc22cuma47fxx5e3oi7zrpq", + "time": 1709713596 + }, + { + "cid": "bafkreiezmycqcs3426uhlpamwfidxlt72njmc22cuma47fxx5e3oi7zrpq", + "time": 1709713596 + } + ], + "validationError": false + }, + { + "dpid": "187", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiemcbfxzi5v3sjiztw4zqs7ngbbirmbcza2sxag4ur4gx3jc57weu", + "time": 1709713968 + }, + { + "cid": "bafkreiemcbfxzi5v3sjiztw4zqs7ngbbirmbcza2sxag4ur4gx3jc57weu", + "time": 1709713968 + } + ], + "validationError": false + }, + { + "dpid": "188", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifc7blw4sfdrqqyinooyk2zajg4kvobazfpxmmyxhky67xyrtg2bi", + "time": 1709717856 + }, + { + "cid": "bafkreifc7blw4sfdrqqyinooyk2zajg4kvobazfpxmmyxhky67xyrtg2bi", + "time": 1709717856 + } + ], + "validationError": false + }, + { + "dpid": "189", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreib5w5wqatnhuuekzdmqe33ci4jmczwtcw235mdugsk6sbjkewhycq", + "time": 1709718156 + }, + { + "cid": "bafkreib5w5wqatnhuuekzdmqe33ci4jmczwtcw235mdugsk6sbjkewhycq", + "time": 1709718156 + } + ], + "validationError": false + }, + { + "dpid": "190", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidlwnin6u3lbb5me7gsaomtrz3xfxruteb3oqvng2isup6dq2md2u", + "time": 1710044316 + }, + { + "cid": "bafkreidlwnin6u3lbb5me7gsaomtrz3xfxruteb3oqvng2isup6dq2md2u", + "time": 1710044316 + } + ], + "validationError": false + }, + { + "dpid": "191", + "owner": "0x371e269bff1aaA342b43b74Cf1Ad9789BaF183F7", + "versions": [ + { + "cid": "bafkreif7hsizhhb3pe5onhq7lnteu65c4wjdlhlh2yhokzsssnjiqhbizy", + "time": 1710848280 + }, + { + "cid": "bafkreif7hsizhhb3pe5onhq7lnteu65c4wjdlhlh2yhokzsssnjiqhbizy", + "time": 1710848496 + } + ], + "validationError": false + }, + { + "dpid": "192", + "owner": "0x371e269bff1aaA342b43b74Cf1Ad9789BaF183F7", + "versions": [ + { + "cid": "bafkreifup6tri42y77u4cyu5dtceve4hbesvkfhwod6cnlwnworm5kg5jy", + "time": 1710934908 + } + ], + "validationError": false + }, + { + "dpid": "193", + "owner": "0xec29aCa1a8740B8C5e2e06EBB52290700B9a2c40", + "versions": [ + { + "cid": "bafkreibs5jouyrflaifdy5h46qcao4ifl6k2uxkkdbjjhztowrzrdi7uey", + "time": 1711110348 + } + ], + "validationError": false + }, + { + "dpid": "194", + "owner": "0xec29aCa1a8740B8C5e2e06EBB52290700B9a2c40", + "versions": [ + { + "cid": "bafkreie4ql2xrlaaa3gydydecs62q6llw6ph3nql4wtv4vrvk7qlry5mii", + "time": 1711112832 + }, + { + "cid": "bafkreie4ql2xrlaaa3gydydecs62q6llw6ph3nql4wtv4vrvk7qlry5mii", + "time": 1711112916 + }, + { + "cid": "bafkreie4ql2xrlaaa3gydydecs62q6llw6ph3nql4wtv4vrvk7qlry5mii", + "time": 1711112964 + }, + { + "cid": "bafkreie4ql2xrlaaa3gydydecs62q6llw6ph3nql4wtv4vrvk7qlry5mii", + "time": 1711113060 + } + ], + "validationError": false + }, + { + "dpid": "195", + "owner": "0x4d0EC1B776aE7d57AFa42294cd6F5fa8Ab659819", + "versions": [ + { + "cid": "bafkreigl33hhuzyxtipdx26wsu4u775m47ceu7aryim3dbkquzxdzxw2cm", + "time": 1711250184 + } + ], + "validationError": false + }, + { + "dpid": "196", + "owner": "0x4d0EC1B776aE7d57AFa42294cd6F5fa8Ab659819", + "versions": [ + { + "cid": "bafkreicrbew4z2xa5msag2xqluych2cqvu4q37if7c4myrlgrso7clyr5m", + "time": 1711283700 + } + ], + "validationError": false + }, + { + "dpid": "197", + "owner": "0x711E9b9e8aD75CBD3AC024a8e4Aeeff59AfBae6c", + "versions": [ + { + "cid": "bafkreihzdyg7sncus6iiyywrmq3ieg6jpanwhopp3nermvdbj6twldqz4a", + "time": 1711484460 + } + ], + "validationError": false + }, + { + "dpid": "198", + "owner": "0xDAF8752DDcCE8a6B709aa271e7Efc60F75CDDF64", + "versions": [ + { + "cid": "bafkreifnbtsbubgr4igy3d2bdfm3t7wglonaefcpb6hltgx5ddemoirxbq", + "time": 1711485360 + } + ], + "validationError": false + }, + { + "dpid": "199", + "owner": "0xE713c665AC962155Ce2230b67034FBbc68Aa001E", + "versions": [ + { + "cid": "bafkreidrgw7m3dqhrhtkv3oof2tbuyaspmo3j7mfbyt4mcoiwsfzrelntm", + "time": 1712586828 + }, + { + "cid": "bafkreie6idsoipa3agkyg3widjx2qkqhyqesw7a4inbtf3v5bjwqmgvbu4", + "time": 1712746296 + }, + { + "cid": "bafkreifxbvttafs77huxssiyh7cia2aeds44qn7u3i6mo37rv5ok4n3yx4", + "time": 1712849196 + } + ], + "validationError": false + }, + { + "dpid": "200", + "owner": "0xb7633a1C95CDeFf14Fe90A18C61eA2EeA56ADd6F", + "versions": [ + { + "cid": "bafkreibr74kptq3taaq6vkk5ncliqjlaxfudeteoapwfj5dbk7lvabpa7a", + "time": 1712589912 + }, + { + "cid": "bafkreiehg2co367mlvhwga322q27m6k6ed3cll3jfhbeotrjr5uji4vuvy", + "time": 1712590308 + } + ], + "validationError": false + }, + { + "dpid": "201", + "owner": "0xbC4f75a4579c55B3b347C316159e03Ad9A233346", + "versions": [ + { + "cid": "bafkreigaex4kn6t5jtwjvfg6fhvu5ernugv4c2oyijj5c6sitlp7feyz4i", + "time": 1712699136 + }, + { + "cid": "bafkreibbutjlx6mftck5cdrghtnec7pupin5tmocw3jjnltk5b6ymepreu", + "time": 1712758008 + }, + { + "cid": "bafkreiasprpssrqrmt6csyxvp6h2hosczpnuhy5yet3ebdmp44nwqmnnxa", + "time": 1712910312 + }, + { + "cid": "bafkreiaml7ltpqcdawuri4pgze6lwst74dlwkkrxvu7ycxwcmucm54pzw4", + "time": 1712924748 + }, + { + "cid": "bafkreie44bdq6au5k544axgyh3t5u557sgojmk77jo6iebd2nuxdoboale", + "time": 1713181740 + }, + { + "cid": "bafkreifz6sboaziz6ozlws755w4xfa3agxerpcqfz2x3tyzpardhte57lu", + "time": 1713202788 + }, + { + "cid": "bafkreieebhdtnluia3gdhpi7cm3gskmnytq2vfmgi6mc7hkv3kqakcjqku", + "time": 1713210492 + }, + { + "cid": "bafkreicazrs2upqf67gb5z57oyoqd5p2ffsn3w4m4mpib5ttk4skwsoha4", + "time": 1713820044 + }, + { + "cid": "bafkreif33f5fja4xlt5hfng7au7u56pqxmhq7cwbsqqbo74kvh4dfmzt3a", + "time": 1713876336 + }, + { + "cid": "bafkreiffrskcqxf6sxlgi4vyfc6i7ppvsqd6fak5fr5azzxwurobetsvtm", + "time": 1713910788 + }, + { + "cid": "bafkreiffrskcqxf6sxlgi4vyfc6i7ppvsqd6fak5fr5azzxwurobetsvtm", + "time": 1713912876 + }, + { + "cid": "bafkreidymyibcfrjg6gjfdwdrsfxt2veregxrbxeilcqwawz5jstr2wgje", + "time": 1713966252 + }, + { + "cid": "bafkreiczragradkmshlydspr2hbkuj2ze5jptfrvh3ahygx2fvwxmx3eia", + "time": 1714743048 + }, + { + "cid": "bafkreicwl624bosttcswwvtkyisg2uqs2c5n65rsakaxa4c56xlxqwbnc4", + "time": 1715089932 + }, + { + "cid": "bafkreibomeyu2ha74ghyeargxgmne3zccrq3laf2hl5moilp62u5imaktq", + "time": 1715093316 + } + ], + "validationError": false + }, + { + "dpid": "202", + "owner": "0x371e269bff1aaA342b43b74Cf1Ad9789BaF183F7", + "versions": [ + { + "cid": "bafkreiblksmeh2h2rukdd3yyw2qpm2fspl233fccd3dmnjycukacslxtlu", + "time": 1712828544 + } + ], + "validationError": false + }, + { + "dpid": "203", + "owner": "0xbC4f75a4579c55B3b347C316159e03Ad9A233346", + "versions": [ + { + "cid": "bafkreieyuphulyypkgqyrenp5bsa4fmhdyjm6sxupuazdzdjr7bck3b6t4", + "time": 1712905908 + } + ], + "validationError": false + }, + { + "dpid": "204", + "owner": "0x29E9454e1Ee1bAf582403E1Dd3352134b044d6c6", + "versions": [ + { + "cid": "bafkreia3hv332uc5hjtjufiaptgqccnirp6glgqlp3kkmqqxzckk2wtque", + "time": 1714895436 + }, + { + "cid": "bafkreia3hv332uc5hjtjufiaptgqccnirp6glgqlp3kkmqqxzckk2wtque", + "time": 1714899456 + }, + { + "cid": "bafkreicedcwhhshszz4yorw4dsc67juu4eywrkfr2viacv3awmcvt7xroi", + "time": 1714902324 + } + ], + "validationError": false + }, + { + "dpid": "205", + "owner": "0x5249a44B2abEa543b2C441AC4964A08deB3Ed3CB", + "versions": [ + { + "cid": "bafkreihjkupfxvnrf5rgtwrrwacpatea6p6rfkpptk7tbyqug2yey56vmm", + "time": 1714902900 + }, + { + "cid": "bafkreifj7ps2uj2ovgbdx73j2rjrdgbsv5v52vsqbku73jk57mfo36e4ea", + "time": 1715097528 + } + ], + "validationError": false + }, + { + "dpid": "206", + "owner": "0x42d4fF8298dfcDCbb70823B146D0a1a3AF128a45", + "versions": [ + { + "cid": "bafkreibwzk6k24vak2utess6b4g3ymvoduf2wmmjq5ckp74zffetkvtp7y", + "time": 1715105532 + } + ], + "validationError": false + }, + { + "dpid": "207", + "owner": "0x29E9454e1Ee1bAf582403E1Dd3352134b044d6c6", + "versions": [ + { + "cid": "bafkreifsokpngt7o5nnf3svrjwq52a4jfmpsbo5dxrtfu7gxutn5b35zdq", + "time": 1715324136 + }, + { + "cid": "bafkreief5hvxfazsnkfzeuebbbyrqgrncfvzs62ixodku5bd2es7dxafmy", + "time": 1717411476 + } + ], + "validationError": false + }, + { + "dpid": "208", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreiecniqyzhz3ydgr6qalq2v64cptmc75ziriagcqumrg5mmldqs6ui", + "time": 1715706588 + } + ], + "validationError": false + }, + { + "dpid": "209", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreibcnzl5mhvil6ossyaldtmhvci3pgrop34rodde6nsqo4seymk35u", + "time": 1715754924 + } + ], + "validationError": false + }, + { + "dpid": "210", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreice6ojx5rphjrv3ghcwpmyceb4ftvogpjgueis7oysx4iwofux7tq", + "time": 1715756148 + } + ], + "validationError": false + }, + { + "dpid": "211", + "owner": "0xE713c665AC962155Ce2230b67034FBbc68Aa001E", + "versions": [ + { + "cid": "bafkreifxkw7fxmqs73xjkvpqib25ogct6sh7j5ult7ouemn27eyus6vteq", + "time": 1715758284 + } + ], + "validationError": false + }, + { + "dpid": "212", + "owner": "0xE713c665AC962155Ce2230b67034FBbc68Aa001E", + "versions": [ + { + "cid": "bafkreibd6z4ez67iorgtngwjgyzunrfafqp6ckd4rzxqcdkldsynzircbq", + "time": 1715758332 + } + ], + "validationError": false + }, + { + "dpid": "213", + "owner": "0xE713c665AC962155Ce2230b67034FBbc68Aa001E", + "versions": [ + { + "cid": "bafkreiftabtiwceukykjj7djbll6o7vj2b5nqljq2ayqos7a4q5bfj26qe", + "time": 1715759052 + } + ], + "validationError": false + }, + { + "dpid": "214", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreib4lne5chotkvctuooguqtknxwcu62tcg2f3czrhekq55yopr326y", + "time": 1715759664 + } + ], + "validationError": false + }, + { + "dpid": "215", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreidlca6x7or4cu26j42ujpauito7lu36sgrnkzikwtbblhxxj7ou5q", + "time": 1715783532 + } + ], + "validationError": false + }, + { + "dpid": "216", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreidxpaqx4emlzuyny7nwptse7v43fnldv6scxwerzf52ifwtj2zpmq", + "time": 1715846040 + }, + { + "cid": "bafkreidxpaqx4emlzuyny7nwptse7v43fnldv6scxwerzf52ifwtj2zpmq", + "time": 1715846232 + } + ], + "validationError": false + }, + { + "dpid": "217", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreielmjyyh4huzlvdfq5zpkq4yfynqkir7nzyw2hraph34z6pk6vpta", + "time": 1715852172 + } + ], + "validationError": false + }, + { + "dpid": "218", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreial2hxxfcpzkm474ommsvbywgkoz7giyai5y2vnzt2yuswt3qwvhe", + "time": 1715852724 + } + ], + "validationError": false + }, + { + "dpid": "219", + "owner": "0x42d4fF8298dfcDCbb70823B146D0a1a3AF128a45", + "versions": [ + { + "cid": "bafkreih5rxnqa74dgehy5vlzf2c3bjpdd4d37wjsmd6umklvtpravrymii", + "time": 1715852904 + }, + { + "cid": "bafkreif7bdndzubravkpbgllcz2uejzxvuagbrxw4kg3afvzqcz5u2epji", + "time": 1715853012 + } + ], + "validationError": false + }, + { + "dpid": "220", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreihdis2gtow2vyjw3lfrrk75nwhimvr3mol5tw2yg5m6yb4qkfzusm", + "time": 1715853288 + } + ], + "validationError": false + }, + { + "dpid": "221", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreieykztli6himlvsp66y4eq5e6olhmd57mq3ff7q5lpkl3h57gdzhy", + "time": 1715854884 + } + ], + "validationError": false + }, + { + "dpid": "222", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreigduiq7h6qo3eszrpbgfaxllcboxxa7isr35ajf3qkax2522stlhu", + "time": 1715857896 + } + ], + "validationError": false + }, + { + "dpid": "223", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreifz5uvrar2vdxtcmd2sh3xhibyansyg2joqmnclce6spwopswo7qm", + "time": 1715858892 + } + ], + "validationError": false + }, + { + "dpid": "224", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreihjdwdspwjdptweikwbzpzthv2b3vkaablm6yrgzg2syf34ay5zo4", + "time": 1715858988 + } + ], + "validationError": false + }, + { + "dpid": "225", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreibd4v3nmp6n652mrgmuha6q65cul6pq625gzirsrka4wiftdrbxkm", + "time": 1715859360 + } + ], + "validationError": false + }, + { + "dpid": "226", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreicikabkude4odfkc3h55d7tbma527qzcbq5f7urusu2f65jy2qdr4", + "time": 1715862000 + } + ], + "validationError": false + }, + { + "dpid": "227", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreickxvmqpwkg3hoiqaibcsz5mxgcquhoivflzgqloupgfvgxiahgmm", + "time": 1715862264 + } + ], + "validationError": false + }, + { + "dpid": "228", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreigpxc4535atofw53qhlwy5ljmku7cgvi64yzohjaqllh63e75iigm", + "time": 1715862396 + } + ], + "validationError": false + }, + { + "dpid": "229", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreibyqg4efuc4je3szq6augfzrlknk4kyo56jvmtlv6v3u34olfjw5q", + "time": 1715862828 + } + ], + "validationError": false + }, + { + "dpid": "230", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreice2sc42ahkjmt2fdkgrdgbpr2jbb462swclyamdykpc6guyigg3e", + "time": 1715863632 + } + ], + "validationError": false + }, + { + "dpid": "231", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreihdynlkgw62oeknjc6cpbibmk6hmql46haes3sw77twqxzxj4p7dy", + "time": 1715863932 + } + ], + "validationError": false + }, + { + "dpid": "232", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreidbb6rj2zcaufmhdqf2ioqa4ub573fsjwve3xsqtihz4t2mu7mfvm", + "time": 1715864112 + } + ], + "validationError": false + }, + { + "dpid": "233", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreih3wosdxfpkdajepb6fr6mpnbzotvx3757aapwh5jc4uj5ki4nsb4", + "time": 1715864796 + } + ], + "validationError": false + }, + { + "dpid": "234", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreieaqwjyk5oueqxkhoqbmh4priqdl2d5htgyp7euofym22t2vup2n4", + "time": 1715864856 + } + ], + "validationError": false + }, + { + "dpid": "235", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreicegqhkh77pjlaffif4jptccfjcug4x2v6uzkuhgzk7mvkp3h3pje", + "time": 1715864988 + } + ], + "validationError": false + }, + { + "dpid": "236", + "owner": "0x371e269bff1aaA342b43b74Cf1Ad9789BaF183F7", + "versions": [ + { + "cid": "bafkreiaovnmdbwprrbe2ol5wmsiohpepr74eobdzp7mnhmolazca6rmk3u", + "time": 1715945640 + } + ], + "validationError": false + }, + { + "dpid": "237", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreia5h5rgnj3tckolwznad5ufivrdkrfcwwb7ybvhauqy3tpvsanxbe", + "time": 1715966676 + } + ], + "validationError": false + }, + { + "dpid": "238", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreihna43pr26bwxltihgzpby4pfamdojeyuusiikodzsfx2cx4nizwi", + "time": 1716044616 + }, + { + "cid": "bafkreiawwiamv3sm7ujwtusakl33ncwprbmvgqygsugcjc63e57o4qedrm", + "time": 1716195456 + }, + { + "cid": "bafkreifsn65szz2c7oigkpaj7zf5vveme2bdvyimhikvcthzpfamx4amqa", + "time": 1716195624 + }, + { + "cid": "bafkreiffpqp5eqhtb5twcggyfdwxd6zciqqrm43356m5g64tkozw6ox2um", + "time": 1716196968 + }, + { + "cid": "bafkreibhvf342535vnaxqpjvapnfvuh563g6fqq26ifmmks3edyig2bqje", + "time": 1716197688 + } + ], + "validationError": false + }, + { + "dpid": "239", + "owner": "0xbC4f75a4579c55B3b347C316159e03Ad9A233346", + "versions": [ + { + "cid": "bafkreida4e3jtx44nqujveh7qstktsiwvmgvqvdrxfp6oxwtgtj3yt7rtq", + "time": 1716299616 + } + ], + "validationError": false + }, + { + "dpid": "240", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreicc35sby7tw62yixogr7cdyb74ogud2oks7ucxoqm2dxl2ns7iqxe", + "time": 1716455376 + }, + { + "cid": "bafkreih4fwgcdcuanlvqrfe23gtssi2ry5qn5aiartyyxnrgwie47vogjq", + "time": 1716456924 + }, + { + "cid": "bafkreibmiu4or57a3zt2oqwpyo55sxilbohbekoio7ar6xctre4rplmctm", + "time": 1716457200 + }, + { + "cid": "bafkreig2frbnikhvo7ybhocvvtcxemjqjkzausxmea75mj4yes4vrh3ly4", + "time": 1716457332 + }, + { + "cid": "bafkreibrhymhxsjll5amkbh4xqpi3ndr5bp5lbs6vs5x43aqzdynbzrlxa", + "time": 1716559284 + }, + { + "cid": "bafkreidwe7ueatapvutqf34m6sdvqt2deyhmzgnkme45filbvjxcqhnhya", + "time": 1717161096 + }, + { + "cid": "bafkreiaipcdk567t72ftbuvqeuyec64zw57ed4ttaftjazoy3how25y254", + "time": 1717161504 + }, + { + "cid": "bafkreiglntmzkq4nhkaqjkukhdyngilz33lmqmlclyeich6kbx6h5cayau", + "time": 1717393608 + } + ], + "validationError": false + }, + { + "dpid": "241", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreici76b6bx7smkkihhzjpv7hj26q4uowye5vnmia36gn6lkaa65f6a", + "time": 1716458616 + } + ], + "validationError": false + }, + { + "dpid": "242", + "owner": "0x29E9454e1Ee1bAf582403E1Dd3352134b044d6c6", + "versions": [ + { + "cid": "bafkreibzcu3iwi7buqwy2ibujh2sbe4gmbyhycil7w4xeuvldsa2mrbypy", + "time": 1716464784 + } + ], + "validationError": false + }, + { + "dpid": "243", + "owner": "0x008292E57A2d9B34525d82876068652e639e61D8", + "versions": [ + { + "cid": "bafkreiaxbwjw2cp7mvfaul4xlxkguafmfkxxhym7ik5bty7dfehxff3tgu", + "time": 1716551616 + } + ], + "validationError": false + }, + { + "dpid": "244", + "owner": "0xb4096E016F162d10EfC8C20F8Db22a54D80935c8", + "versions": [ + { + "cid": "bafkreiflayannh3vsjxn2khne5gjtupt3mtso4rd6x4dnmfh3rhxzkvhfm", + "time": 1717158900 + } + ], + "validationError": false + }, + { + "dpid": "245", + "owner": "0x371e269bff1aaA342b43b74Cf1Ad9789BaF183F7", + "versions": [ + { + "cid": "bafkreic56m4scp5t7fdb2zajue3tupjevoxlwaly2skqbdbncy5zbydike", + "time": 1717159332 + } + ], + "validationError": false + }, + { + "dpid": "246", + "owner": "0x42d4fF8298dfcDCbb70823B146D0a1a3AF128a45", + "versions": [ + { + "cid": "bafkreib23oradn74sxmdji6ofw4iffliheytyq7kq3ge3bnz2tooz764cu", + "time": 1717160400 + } + ], + "validationError": false + } + ] +} \ No newline at end of file diff --git a/desci-contracts/package.json b/desci-contracts/package.json index 38beb3db0..ed04dd72b 100644 --- a/desci-contracts/package.json +++ b/desci-contracts/package.json @@ -1,7 +1,7 @@ { "name": "@desci-labs/desci-contracts", "description": "Smart contracts implementing DeSci Nodes on-chain state and logic", - "version": "0.2.5-rc4", + "version": "0.2.5-rc5", "license": "MIT", "scripts": { "test": "hardhat clean && hardhat test", diff --git a/desci-contracts/scripts/migrateToAliasRegistry.mjs b/desci-contracts/scripts/migrateToAliasRegistry.mjs index e650b4464..7c4008c08 100644 --- a/desci-contracts/scripts/migrateToAliasRegistry.mjs +++ b/desci-contracts/scripts/migrateToAliasRegistry.mjs @@ -119,7 +119,7 @@ for (const [ dpid, entry ] of importEntries) { validationError = true; }; }; - results.dpids.push({ dpid, owner: imported.owner, versions: imported.versions, importError: validationError }); + results.dpids.push({ dpid, owner: imported.owner, versions: imported.versions, validationError }); }; const failures = results.dpids.filter(r => r.validationError); @@ -138,6 +138,6 @@ const duration = Math.ceil((Date.now() - startTime) / 1000); console.log(`🏁 migration done in ${duration}s for a total of ${totalGas} gas`); const dateString = new Date().toUTCString().replaceAll(" ", "_"); -const logFilePath = `migration-data/aliasRegistry_${dateString}.json`; +const logFilePath = `migration-data/aliasRegistry_${ENV}_${dateString}.json`; writeFileSync(logFilePath, JSON.stringify(results, undefined, 2)); console.log(`📝 migration data written to ${logFilePath}`); diff --git a/desci-contracts/scripts/syncAliasRegistryMigration.mjs b/desci-contracts/scripts/syncAliasRegistryMigration.mjs index af523065d..637b36718 100644 --- a/desci-contracts/scripts/syncAliasRegistryMigration.mjs +++ b/desci-contracts/scripts/syncAliasRegistryMigration.mjs @@ -16,6 +16,7 @@ * Required arguments (env variables): * 1. REGISTRY_ADDRESS - Address of existing alias registry (proxy) contract * 2. ENV - Environment to sync legacy entires from ("dev" or "prod") + * 3. PRIVATE_KEY - Admin pkey, to allow calling onlyOwner methods */ import hardhat from "hardhat"; const { ethers, hardhatArguments } = hardhat; @@ -89,12 +90,24 @@ for (const [ dpid, entry ] of importEntries) { versions: fromContract[1].map(([cid, time]) => ({cid, time: ethers.BigNumber.from(time).toNumber() })), }; - console.log(`🔎 Verifying dPID ${dpid}:`); - const originalDpid = allDpids.find(e => e.dpid === dpid); const originalOwner = originalDpid.researchObject.owner; const originalVersions = originalDpid.researchObject.versions; + if (imported.versions.length < originalVersions.length) { + console.log(`👷 Found new versions of dPID ${dpid}, updating import...`); + const tx = await registry.importLegacyDpid(dpid, entry); + const receipt = await tx.wait(); + totalGas += ethers.BigNumber.from(receipt.gasUsed).toNumber(); + + // Refresh information from contract after updating + const refreshedFromContract = await registry.legacyLookup(dpid); + imported.owner = refreshedFromContract[0]; + imported.versions = refreshedFromContract[1].map(([cid, time]) => ({cid, time: ethers.BigNumber.from(time).toNumber() })); + }; + + console.log(`🔎 Verifying dPID ${dpid}:`); + let validationError = false; const ownerCorrect = originalOwner === imported.owner.toLowerCase(); @@ -103,27 +116,33 @@ for (const [ dpid, entry ] of importEntries) { console.log(` - History:`) for (let i = 0; i < originalVersions.length; i++) { - console.log(` - v${i}:`) - const cidCorrect = originalVersions[i].cid === imported.versions[i].cid; - const timeCorrect = originalVersions[i].time === imported.versions[i].time; + if (!imported.versions[i]) { + console.log(` - v${i}: (missing in imported history)`); + } else { + console.log(` - v${i}:`); + }; + + const cidCorrect = originalVersions[i].cid === imported.versions[i]?.cid; + const timeCorrect = originalVersions[i].time === imported.versions[i]?.time; console.log(` - cid: ${cidCorrect ? "✅" : "❌"} (${originalVersions[i].cid})`); console.log(` - time: ${timeCorrect ? "✅" : "❌"} (${originalVersions[i].time})`); + if (!(cidCorrect && timeCorrect)) { validationError = true; }; }; - results.push({ dpid, owner: imported.owner, versions: imported.versions, importError: validationError }); + results.push({ dpid, owner: imported.owner, versions: imported.versions, validationError }); }; const failures = results.filter(r => r.validationError); -console.log(`🚦 dPIDs which failed validation (manually import to overwrite): ${JSON.stringify(failures)}`); +console.log(`🚦 dPIDs which failed validation (manually import to overwrite): ${JSON.stringify(failures, undefined, 2)}`); const duration = Math.ceil((Date.now() - startTime) / 1000); console.log(`🏁 sync done in ${duration}s for a total of ${totalGas} gas`); const dateString = new Date().toUTCString().replaceAll(" ", "_"); -const logFilePath = `migration-data/aliasRegistrySync_${dateString}.json`; +const logFilePath = `migration-data/aliasRegistrySync_${ENV}_${dateString}.json`; writeFileSync(logFilePath, JSON.stringify(results, undefined, 2)); console.log(`📝 migration data written to ${logFilePath}`); From a962f6c116f7dcf352551725b4c8e6418fdd19ab Mon Sep 17 00:00:00 2001 From: m0ar Date: Sat, 1 Jun 2024 14:43:32 +0200 Subject: [PATCH 12/34] dockerfile: slim down build closure --- .dockerignore | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.dockerignore b/.dockerignore index 1e31546e2..29465bbd7 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,11 +1,12 @@ +**/node_modules +**/dist +**/.vscode +desci-server/log config dist -./node_modules .git .env desci-art-viewer desci-dapp -desci-server/node_modules local-data database -desci-server/log \ No newline at end of file From 9196831f98285150023dca5ba7ae2b61ea292c01 Mon Sep 17 00:00:00 2001 From: m0ar Date: Tue, 4 Jun 2024 16:35:28 +0200 Subject: [PATCH 13/34] [wip] separate publish functionality for codex-first --- nodes-lib/package-lock.json | 18 ++--- nodes-lib/package.json | 4 +- nodes-lib/src/api.ts | 115 +++++++++++++++++++++++++++++-- nodes-lib/src/chain.ts | 76 ++++++++++++++++---- nodes-lib/src/codex.ts | 37 ++++++++-- nodes-lib/src/config/chain.ts | 60 ++++++++++++++-- nodes-lib/src/config/index.ts | 19 +++-- nodes-lib/src/publish.ts | 44 +++++++++++- nodes-lib/src/util/converting.ts | 24 +++++-- nodes-lib/src/util/signing.ts | 7 +- 10 files changed, 347 insertions(+), 57 deletions(-) diff --git a/nodes-lib/package-lock.json b/nodes-lib/package-lock.json index f45c6184c..38a0798bb 100644 --- a/nodes-lib/package-lock.json +++ b/nodes-lib/package-lock.json @@ -1,16 +1,16 @@ { "name": "@desci-labs/nodes-lib", - "version": "0.0.5-rc9", + "version": "0.0.7-rc0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@desci-labs/nodes-lib", - "version": "0.0.5-rc9", + "version": "0.0.7-rc0", "license": "MIT", "dependencies": { "@desci-labs/desci-codex-lib": "^1.1.7", - "@desci-labs/desci-contracts": "^0.2.3-rc3", + "@desci-labs/desci-contracts": "^0.2.5-rc1", "@desci-labs/desci-models": "^0.2.3-rc1", "@didtools/cacao": "^3.0.1", "@didtools/pkh-ethereum": "^0.5.0", @@ -1010,9 +1010,9 @@ } }, "node_modules/@desci-labs/desci-contracts": { - "version": "0.2.3-rc3", - "resolved": "https://registry.npmjs.org/@desci-labs/desci-contracts/-/desci-contracts-0.2.3-rc3.tgz", - "integrity": "sha512-3OmnrMa+L9qK/iNkuPS2HS/ihsNFKly3X8vjQK0cHhTH2qh6/FBbcIK77uOF9yi0ldOm+VfPSL2p7s8BC+bKow==" + "version": "0.2.5-rc1", + "resolved": "https://registry.npmjs.org/@desci-labs/desci-contracts/-/desci-contracts-0.2.5-rc1.tgz", + "integrity": "sha512-wA4zDRp3GT3ZKo0/qFT2fKuLElQFXgycBnuaa2RPCOEfxQXFOqDYOyaqnhbklnutjit1MjwitiO6E6SFWzk6zg==" }, "node_modules/@desci-labs/desci-models": { "version": "0.2.3-rc1", @@ -10840,9 +10840,9 @@ } }, "@desci-labs/desci-contracts": { - "version": "0.2.3-rc3", - "resolved": "https://registry.npmjs.org/@desci-labs/desci-contracts/-/desci-contracts-0.2.3-rc3.tgz", - "integrity": "sha512-3OmnrMa+L9qK/iNkuPS2HS/ihsNFKly3X8vjQK0cHhTH2qh6/FBbcIK77uOF9yi0ldOm+VfPSL2p7s8BC+bKow==" + "version": "0.2.5-rc1", + "resolved": "https://registry.npmjs.org/@desci-labs/desci-contracts/-/desci-contracts-0.2.5-rc1.tgz", + "integrity": "sha512-wA4zDRp3GT3ZKo0/qFT2fKuLElQFXgycBnuaa2RPCOEfxQXFOqDYOyaqnhbklnutjit1MjwitiO6E6SFWzk6zg==" }, "@desci-labs/desci-models": { "version": "0.2.3-rc1", diff --git a/nodes-lib/package.json b/nodes-lib/package.json index 4964b363d..1d4017f29 100644 --- a/nodes-lib/package.json +++ b/nodes-lib/package.json @@ -1,6 +1,6 @@ { "name": "@desci-labs/nodes-lib", - "version": "0.0.6", + "version": "0.0.7-rc0", "homepage": "https://github.com/desci-labs/nodes#readme", "description": "Stand-alone client library for interacting with desci-server", "repository": { @@ -27,7 +27,7 @@ }, "dependencies": { "@desci-labs/desci-codex-lib": "^1.1.7", - "@desci-labs/desci-contracts": "^0.2.3-rc3", + "@desci-labs/desci-contracts": "^0.2.5-rc5", "@desci-labs/desci-models": "^0.2.3-rc1", "@didtools/cacao": "^3.0.1", "@didtools/pkh-ethereum": "^0.5.0", diff --git a/nodes-lib/src/api.ts b/nodes-lib/src/api.ts index a8965a2e3..188f9c762 100644 --- a/nodes-lib/src/api.ts +++ b/nodes-lib/src/api.ts @@ -22,13 +22,15 @@ import { import FormData from "form-data"; import { createReadStream } from "fs"; import type { NodeIDs } from "@desci-labs/desci-codex-lib"; -import { publish } from "./publish.js"; +import { legacyPublish, publish } from "./publish.js"; import type { ResearchObjectDocument } from "./automerge.js"; import { randomUUID } from "crypto"; import { getNodesLibInternalConfig } from "./config/index.js"; import { makeRequest } from "./routes.js"; import { Signer } from "ethers"; import { type DID } from "dids"; +import { getFullState } from "./codex.js"; +import { convertUUIDToDecimal } from "./util/converting.js"; export const ENDPOINTS = { deleteData: { @@ -128,6 +130,12 @@ export const ENDPOINTS = { _payloadT: {}, _responseT: {}, }, + createDpid: { + method: "post", + route: `/v1/nodes/createDpid`, + _payloadT: <{ uuid: string }>{}, + _responseT: <{ dpid: number }>{}, + }, /** Append `/[uuid] `*/ dpidHistory: { method: "get", @@ -326,6 +334,77 @@ export type PublishResponse = { dpidTxId?: string }; +/** + * Publish a node, meaning compile the state of the drive into an actual + * IPLD DAG, make the IPFS CID's public, publish the references to Codex + * and create a dPID alias for it. + * + * @param uuid - UUID of the node to publish + * @param didOrSigner - authenticated did-session DID, or a generic signer +*/ +export const publishNode = async ( + uuid: string, + didOrSigner: DID | Signer, +): Promise => { + const publishResult = await publish(uuid, didOrSigner); + const pubParams: PublishParams = { + uuid, + cid: publishResult.cid, + manifest: publishResult.manifest, + ceramicStream: publishResult.ceramicIDs.streamID, + commitId: publishResult.ceramicIDs.commitID, + // required in DB & this string is used to detect non-tx's in publish worker + transactionId: "ceramic", + }; + + try { + await makeRequest(ENDPOINTS.publish, getHeaders(), pubParams); + } catch (e) { + console.log(`Publish successful, but backend update failed for node ${uuid}`); + throw e; + }; + + let dpid; + try { + dpid = await createDpid(uuid); + await changeManifest( + uuid, + [{ + type: "Publish Dpid", + dpid: { prefix: "", id: dpid.toString() } + }], + ); + } catch (e) { + console.log(`Failed to create dPID alias for node ${uuid}...`); + }; + + return { + ceramicIDs: publishResult.ceramicIDs, + updatedManifest: publishResult.manifest, + updatedManifestCid: publishResult.cid, + }; +}; + +/** + * Create a new dPID in the alias registry. Only possible to do once per node. + * + * @param uuid - UUID of the node to mint a dPID + * @throws on dPID minting failure +*/ +export const createDpid = async ( + uuid: string, +): Promise => { + let dpid: number; + try { + const res = await makeRequest(ENDPOINTS.createDpid, getHeaders(), { uuid }); + dpid = res.dpid; + } catch (e) { + console.log(`Couldn't create dPID alias for node ${uuid}`) + throw e; + }; + return dpid; +}; + /** * Publish a draft node, meaning to compile the state of the drive into an * actual IPLD DAG, make the IPFS CIDs public, and register the node on @@ -335,13 +414,14 @@ export type PublishResponse = { * @param signer - Signer to use for publish, if not set with env * @throws (@link WrongOwnerError) if signer address isn't research object token owner * @throws (@link DpidPublishError) if dPID couldnt be registered or updated + * @depreated use publishNode instead, as this function uses the old on-chain registry */ export const publishDraftNode = async ( uuid: string, signer: Signer, did?: DID, ): Promise => { - const publishResult = await publish(uuid, signer, did); + const publishResult = await legacyPublish(uuid, signer, did); const pubParams: PublishParams = { uuid, @@ -656,8 +736,6 @@ export const addExternalCid = async ( export type IndexedNodeVersion = { /** Manifest CID in EVM format */ cid: string; - /** Transaction ID of the update event */ - id: string; /** Epoch timestamp of the update*/ time: string; }; @@ -676,8 +754,35 @@ export type IndexedNode = { versions: IndexedNodeVersion[]; }; +export const getPublishHistory = async ( + uuid: string, +): Promise => { + const { ceramicStream,} = await getDraftNode(uuid); + + if (!ceramicStream) { + return await getDpidHistory(uuid); + }; + + const resolved = await getFullState(ceramicStream); + const versions = resolved.events.map(e => ({ + cid: e.cid.toString(), + time: e.timestamp?.toString() || "", // May happen if commit is not anchored + })); + + const indexedNode: IndexedNode = { + id: uuid, + id10: convertUUIDToDecimal(uuid), + owner: resolved.owner, + recentCid: resolved.manifest, + versions, + }; + + return indexedNode; +}; + /** - * The the dPID publish history for a node. + * Get the dPID publish history for a node. + * @deprecated use getPublishHistory */ export const getDpidHistory = async ( uuid: string, diff --git a/nodes-lib/src/chain.ts b/nodes-lib/src/chain.ts index 7d7f232d5..35d0294ee 100644 --- a/nodes-lib/src/chain.ts +++ b/nodes-lib/src/chain.ts @@ -1,20 +1,27 @@ -import { BigNumber, ContractReceipt, Signer } from "ethers"; +import { BigNumber, ContractReceipt, Signer, providers, utils } from "ethers"; import { convertUUIDToHex, convertCidTo0xHex} from "./util/converting.js"; import { changeManifest, prePublishDraftNode, type PrepublishResponse } from "./api.js" import { getNodesLibInternalConfig } from "./config/index.js"; -import { formatBytes32String } from "ethers/lib/utils.js"; import { DpidRegistrationError, DpidUpdateError, WrongOwnerError } from "./errors.js"; +import { StreamID } from "@desci-labs/desci-codex-lib/dist/streams.js"; +import { typechain as tc } from "@desci-labs/desci-contracts"; const LOG_CTX = "[nodes-lib::chain]" const DEFAULT_DPID_PREFIX_STRING = "beta"; -const DEFAULT_DPID_PREFIX = formatBytes32String(DEFAULT_DPID_PREFIX_STRING); +const DEFAULT_DPID_PREFIX = utils.formatBytes32String(DEFAULT_DPID_PREFIX_STRING); -const researchObjectContract = (signer: Signer) => - getNodesLibInternalConfig().chainConfig.researchObjectConnector(signer); +const researchObjectWriter = (signer: Signer) => + getNodesLibInternalConfig().legacyChainConfig.researchObjectConnector(signer); -const dpidRegistryContract = (signer: Signer) => - getNodesLibInternalConfig().chainConfig.dpidRegistryConnector(signer); +const dpidRegistryWriter = (signer: Signer) => + getNodesLibInternalConfig().legacyChainConfig.dpidRegistryConnector(signer); + +const dpidAliasRegistryWriter = (signer: Signer) => + getNodesLibInternalConfig().chainConfig.dpidAliasRegistryConnector(signer); + +const dpidAliasRegistryReader = (provider: providers.Provider) => + getNodesLibInternalConfig().chainConfig.dpidAliasRegistryConnector(provider); export type DpidPublishResult = { prepubResult: PrepublishResponse, @@ -26,6 +33,7 @@ export type DpidPublishResult = { * * @throws (@link WrongOwnerError) if signer address isn't token owner * @throws (@link DpidPublishError) if dPID couldnt be registered or updated + * @deprecated */ export const dpidPublish = async ( uuid: string, @@ -80,8 +88,42 @@ export const dpidPublish = async ( return { prepubResult, reciept }; }; +/** + * Mint a new ID for a stream in the new dPID alias registry. + * + * Note that the alias registry is immutable, so there is no + * risk involved with letting a third party mint a dPID alias + * for you. + * + * Instead of performing this action, you can use the corresponding + * API method and let the backend mint the ID for you. + */ +export const createDpidAlias = async ( + streamId: StreamID, + signer: Signer, +): Promise<{ dpid: number, receipt: ContractReceipt}> => { + const tx = await dpidAliasRegistryWriter(signer).mintDpid(streamId.toString()); + const receipt = await tx.wait(); + const [ dpid ] = receipt.events?.find(e => e.event === "DpidMinted")?.args!; + + return { dpid, receipt }; +}; + +/** + * Lookup the history of a legacy dPID in the new alias registry. + */ +export const lookupLegacyDpid = async ( + dpid: number +): Promise => { + const provider = new providers.JsonRpcProvider( + getNodesLibInternalConfig().chainConfig.rpcUrl + ); + return await dpidAliasRegistryReader(provider).legacyLookup(dpid); +}; + /** * Update an existing dPID with a new version of the manifest. + * @deprecated */ const updateExistingDpid = async ( uuid: string, @@ -91,7 +133,7 @@ const updateExistingDpid = async ( const cidBytes = convertCidTo0xHex(prepubManifestCid); const hexUuid = convertUUIDToHex(uuid); - const tx = await researchObjectContract(signer).updateMetadata(hexUuid, cidBytes); + const tx = await researchObjectWriter(signer).updateMetadata(hexUuid, cidBytes); return await tx.wait() }; @@ -99,13 +141,14 @@ const updateExistingDpid = async ( * Optimistically create a manifest with the next available dPID, * and try to register it as such. * @throws on dpid registration failure. + * @deprecated */ const registerNewDpid = async ( uuid: string, signer: Signer, ): Promise<{ reciept: ContractReceipt, prepubResult: PrepublishResponse}> => { const optimisticDpid = await getPreliminaryDpid(signer); - const regFee = await dpidRegistryContract(signer).getFee(); + const regFee = await dpidRegistryWriter(signer).getFee(); await changeManifest( uuid, @@ -123,7 +166,7 @@ const registerNewDpid = async ( const hexUuid = convertUUIDToHex(uuid); // Throws if the expected dPID isn't available - const tx = await researchObjectContract(signer).mintWithDpid( + const tx = await researchObjectWriter(signer).mintWithDpid( hexUuid, cidBytes, DEFAULT_DPID_PREFIX, @@ -145,23 +188,30 @@ const registerNewDpid = async ( /** * Get the next dPID up for minting, for creating an optimistic manifest. * @returns the next free dPID + * @deprecated */ const getPreliminaryDpid = async ( signer: Signer, ): Promise => { - const [nextFreeDpid, _] = await dpidRegistryContract(signer) + const [nextFreeDpid, _] = await dpidRegistryWriter(signer) .getOrganization(DEFAULT_DPID_PREFIX); return nextFreeDpid; }; +/** + * @deprecated + */ export const hasDpid = async ( uuid: string, signer: Signer, ): Promise => - await researchObjectContract(signer).exists(convertUUIDToHex(uuid)); + await researchObjectWriter(signer).exists(convertUUIDToHex(uuid)); +/** + * @deprecated + */ export const getResearchObjectOwner = async ( uuid: string, signer: Signer, ): Promise => - (await researchObjectContract(signer).ownerOf(convertUUIDToHex(uuid))).toLowerCase();; + (await researchObjectWriter(signer).ownerOf(convertUUIDToHex(uuid))).toLowerCase();; diff --git a/nodes-lib/src/codex.ts b/nodes-lib/src/codex.ts index 896c81ae3..8e7486414 100644 --- a/nodes-lib/src/codex.ts +++ b/nodes-lib/src/codex.ts @@ -2,7 +2,7 @@ import { createResearchObject, newComposeClient, updateResearchObject, - type ComposeClient, + ComposeClient, type NodeIDs, queryResearchObject, resolveHistory, @@ -141,16 +141,45 @@ const backfillNewStream = async ( return streamID; }; +/** + * Get full historical publish state of a research object. +*/ +export const getFullState = async ( + streamID: string, +) => { + const ceramic = newCeramicClient(getNodesLibInternalConfig().ceramicNodeUrl); + const compose = newComposeClient({ ceramic }); + const resolved = await queryResearchObject( + compose, + streamID, + "owner { id } manifest" + ) as unknown as { owner: { id: string }, manifest: string}; + + console.log(JSON.stringify(resolved)) + + if (!resolved) { + console.log("Failed to resolve research object:", { streamID }); + throw new Error("codex resolution failed"); + }; + + const events = await getCodexHistory(streamID); + return { + owner: resolved.owner, // explicitly selected in query + manifest: resolved.manifest, // explicitly selected in query + events, + }; +}; + /** * Get the state of a research object as published on Codex. */ -export const getPublishedFromCodex = async ( - id: string +export const getCurrentState = async ( + streamID: string ) => { const ceramic = newCeramicClient(getNodesLibInternalConfig().ceramicNodeUrl); const compose = newComposeClient({ ceramic }); - return await queryResearchObject(compose, id); + return await queryResearchObject(compose, streamID); }; /** diff --git a/nodes-lib/src/config/chain.ts b/nodes-lib/src/config/chain.ts index 9474268f9..3f1c72b05 100644 --- a/nodes-lib/src/config/chain.ts +++ b/nodes-lib/src/config/chain.ts @@ -5,16 +5,19 @@ import { type NodesEnv } from "./index.js"; export type NodesContract = | tc.ResearchObject | tc.ResearchObjectV2 - | tc.DpidRegistry; + | tc.DpidRegistry + | tc.DpidAliasRegistry; export type ContractConnector = (signerOrProvider: Signer | providers.Provider) => T; export type ChainID = - | "1337" - | "11155111"; + | "1337" // local + | "11155111" // sepolia + | "11155420" // optimism sepolia + | "10"; // optimism mainnet -export type ChainConfig = { +export type LegacyChainConfig = { /** Decimal chain ID */ chainId: ChainID, /** RPC URL to use for communication */ @@ -25,7 +28,16 @@ export type ChainConfig = { dpidRegistryConnector: ContractConnector, }; -export const CHAIN_CONFIGS = { +export type ChainConfig = { + /** Decimal chain ID */ + chainId: ChainID, + /** RPC URL to use for communication */ + rpcUrl: string, + /** Given a signer or provider, create a contract instance */ + dpidAliasRegistryConnector: ContractConnector, +}; + +export const LEGACY_CHAIN_CONFIGS = { local: { chainId: "1337", rpcUrl: "http://localhost:8545", @@ -74,4 +86,40 @@ export const CHAIN_CONFIGS = { signerOrProvider ), }, -} as const satisfies { [Env in NodesEnv]: ChainConfig }; +} as const satisfies { [Env in NodesEnv]: LegacyChainConfig }; + +export const CHAIN_CONFIGS = { + local: { + chainId: "1337", + rpcUrl: "http://localhost:8545", + dpidAliasRegistryConnector: signerOrProvider => tc.DpidAliasRegistry__factory.connect( + contracts.localDpidAliasInfo.proxies.at(0)!.address, + signerOrProvider, + ), + }, + dev: { + chainId: "11155420", + rpcUrl: "https://reverse-proxy-dev.desci.com/rpc_opt_sepolia", + dpidAliasRegistryConnector: signerOrProvider => tc.DpidAliasRegistry__factory.connect( + contracts.devDpidAliasInfo.proxies.at(0)!.address, + signerOrProvider, + ), + }, + staging: { + chainId: "11155420", + rpcUrl: "https://reverse-proxy-staging.desci.com/rpc_opt_sepolia", + dpidAliasRegistryConnector: signerOrProvider => tc.DpidAliasRegistry__factory.connect( + contracts.devDpidAliasInfo.proxies.at(0)!.address, + signerOrProvider, + ), + }, + prod: { + chainId: "10", + rpcUrl: "https://reverse-proxy-prod.desci.com/rpc_opt_mainnet", + dpidAliasRegistryConnector: signerOrProvider => tc.DpidAliasRegistry__factory.connect( + "NOT_DEPLOYED",//contracts.prodDpidAliasInfo.proxies.at(0)!.address, + signerOrProvider, + ), + } + +} as const satisfies { [Env in NodesEnv]: ChainConfig}; diff --git a/nodes-lib/src/config/index.ts b/nodes-lib/src/config/index.ts index 5676d32f2..391467598 100644 --- a/nodes-lib/src/config/index.ts +++ b/nodes-lib/src/config/index.ts @@ -1,5 +1,5 @@ import { getResources } from "@desci-labs/desci-codex-lib"; -import { CHAIN_CONFIGS, ChainConfig } from "./chain.js"; +import { CHAIN_CONFIGS, ChainConfig, LEGACY_CHAIN_CONFIGS, LegacyChainConfig } from "./chain.js"; export type NodesEnv = | "local" @@ -7,10 +7,11 @@ export type NodesEnv = | "staging" | "prod"; -export type Config = { +export type NodesLibConfig = { apiUrl: string, apiKey?: string, ceramicNodeUrl: string, + legacyChainConfig: LegacyChainConfig, chainConfig: ChainConfig, }; @@ -19,30 +20,34 @@ export const NODESLIB_CONFIGS = { apiUrl: "http://localhost:5420", apiKey: undefined, ceramicNodeUrl: "http://localhost:7007", + legacyChainConfig: LEGACY_CHAIN_CONFIGS.local, chainConfig: CHAIN_CONFIGS.local, }, dev: { apiUrl: "https://nodes-api-dev.desci.com", apiKey: undefined, ceramicNodeUrl: "https://ceramic-dev.desci.com", + legacyChainConfig: LEGACY_CHAIN_CONFIGS.dev, chainConfig: CHAIN_CONFIGS.dev, }, staging: { apiUrl: "https://nodes-api-staging.desci.com", apiKey: undefined, ceramicNodeUrl: "https://ceramic-dev.desci.com", - chainConfig: CHAIN_CONFIGS.dev, // also using the dev sepolia contracts + legacyChainConfig: LEGACY_CHAIN_CONFIGS.dev, // also using the dev contracts + chainConfig: CHAIN_CONFIGS.dev, // also using dev contracts }, prod: { apiUrl: "https://nodes-api.desci.com", apiKey: undefined, ceramicNodeUrl: "https://ceramic-prod.desci.com", + legacyChainConfig: LEGACY_CHAIN_CONFIGS.prod, chainConfig: CHAIN_CONFIGS.prod, }, -} as const satisfies { [Env in NodesEnv]: Config }; +} as const satisfies { [Env in NodesEnv ]: NodesLibConfig }; // Default config to dev environment -let config: Config = NODESLIB_CONFIGS.dev; +let config: NodesLibConfig = NODESLIB_CONFIGS.dev; console.log(`[nodes-lib::config] initialising with nodes-dev config. Use setConfig and setApiKey to change this: \n${JSON.stringify(NODESLIB_CONFIGS.dev, undefined, 2)}`); console.log("[nodes-lib::config] config.apiKey is unset; non-public API requests WILL fail unless running in browser with auth cookies!") @@ -59,7 +64,7 @@ export const setApiKey = (apiKey: string) => { /** * Set a new configuration. You likely want a preset from the `CONFIGS` object. */ -export const setNodesLibConfig = (newConfig: Config): void => { +export const setNodesLibConfig = (newConfig: NodesLibConfig): void => { const confWithRedactedKey = JSON.stringify( { ...newConfig, @@ -82,7 +87,7 @@ export const setNodesLibConfig = (newConfig: Config): void => { * masked by the type to allow browser auth cookie override. */ export const getNodesLibInternalConfig = () => { - return config as Required; + return config as Required; }; export { getResources }; diff --git a/nodes-lib/src/publish.ts b/nodes-lib/src/publish.ts index 2b00e1e6b..1ad693e74 100644 --- a/nodes-lib/src/publish.ts +++ b/nodes-lib/src/publish.ts @@ -1,9 +1,46 @@ import { type NodeIDs } from "@desci-labs/desci-codex-lib"; -import { getDpidHistory } from "./api.js"; -import { dpidPublish, hasDpid } from "./chain.js"; +import { IndexedNodeVersion, getDpidHistory, getDraftNode, prePublishDraftNode } from "./api.js"; +import { dpidPublish, hasDpid, lookupLegacyDpid } from "./chain.js"; import { codexPublish } from "./codex.js"; import { Signer } from "ethers"; import { type DID } from "dids"; +import { bnToString } from "./util/converting.js"; + +/** + * Publish node to Codex, potentially migrating history from dPID token. + * Does *not* automatically register a dPID in the alias registry. + */ +export const publish = async ( + uuid: string, + didOrSigner: DID | Signer, +) => { + const node = await getDraftNode(uuid); + const prepubResult = await prePublishDraftNode(uuid); + const dpid = node.manifestData.dpid?.id; + + // We know about a dPID, but not about a stream => should backfill history + const hasHistory = + (dpid !== undefined) && (prepubResult.ceramicStream === undefined); + + let history: IndexedNodeVersion[] = []; + if (hasHistory) { + const legacyEntry = await lookupLegacyDpid(parseInt(dpid)); + // Wrangle BigNumber timestamp to string epoch + history = legacyEntry.versions.map( + ({ cid, time }) => ({ cid, time: bnToString(time) }) + ); + }; + + // Performs backfill migration if there is no stream on record, otherwise + // we can send the empty history array and avoid the history query + const ceramicIDs = await codexPublish(prepubResult, history, didOrSigner); + + return { + cid: prepubResult.updatedManifestCid, + manifest: prepubResult.updatedManifest, + ceramicIDs, + }; +}; /** * The complete publish flow, including both the dPID registry and Codex. @@ -14,8 +51,9 @@ import { type DID } from "dids"; * * @throws (@link WrongOwnerError) if signer address isn't token owner * @throws (@link DpidPublishError) if dPID couldnt be registered or updated + * @deprecated */ -export const publish = async ( +export const legacyPublish = async ( uuid: string, signer: Signer, did?: DID, diff --git a/nodes-lib/src/util/converting.ts b/nodes-lib/src/util/converting.ts index 38af90b3d..dbc733e44 100644 --- a/nodes-lib/src/util/converting.ts +++ b/nodes-lib/src/util/converting.ts @@ -3,8 +3,9 @@ import Base64Binary from "./base64binary.js"; import { base16 } from "multiformats/bases/base16"; import { base32 } from "multiformats/bases/base32"; import { CID } from "multiformats/cid"; +import { BigNumber, BigNumberish, utils } from "ethers"; -export const convertUUIDToHex = (uuid: string) => { +export const convertUUIDToHex = (uuid: string): string => { const decoded = decode(uuid); const buffer = Base64Binary.decodeArrayBuffer(decoded).slice(0, 32); let base64UuidToBase16 = Buffer.from(buffer).toString("hex"); @@ -14,14 +15,23 @@ export const convertUUIDToHex = (uuid: string) => { return base64UuidToBase16; }; -export const convertCidTo0xHex = (cid: string) => { +export const convertUUIDToDecimal = (uuid: string): string => { + const asHex = convertUUIDToHex(uuid); + return BigNumber.from(asHex).toString(); +}; + +export const convertCidTo0xHex = (cid: string): string => { const c = CID.parse(cid) const rootStrHex = c.toString(base16); - const paddedAndPrefixed = "0x" + (rootStrHex.length % 2 === 0 ? rootStrHex : "0" + rootStrHex); + const paddedAndPrefixed = "0x" + ( + rootStrHex.length % 2 === 0 + ? rootStrHex + : "0" + rootStrHex + ); return paddedAndPrefixed; }; -export const convert0xHexToCid = (hexCid: string) => { +export const convert0xHexToCid = (hexCid: string): string => { const without0x = hexCid.substring(2); const withoutPadding = without0x.length % 2 === 0 ? without0x.substring(1) @@ -31,3 +41,9 @@ export const convert0xHexToCid = (hexCid: string) => { const cid = CID.decode(cidBytes); return cid.toString(base32); }; + +export const bnToNumber = (bn: BigNumberish): number => + BigNumber.from(bn).toNumber(); + +export const bnToString = (bn: BigNumberish): string => + BigNumber.from(bn).toString(); diff --git a/nodes-lib/src/util/signing.ts b/nodes-lib/src/util/signing.ts index de874434a..bd193e6f8 100644 --- a/nodes-lib/src/util/signing.ts +++ b/nodes-lib/src/util/signing.ts @@ -1,5 +1,4 @@ -import { Signer, Wallet, getDefaultProvider, providers } from "ethers"; -import { SigningKey } from "ethers/lib/utils.js"; +import { Signer, Wallet, utils, getDefaultProvider, providers } from "ethers"; import { getNodesLibInternalConfig } from "../config/index.js"; import { AuthMethod, AuthMethodOpts, Cacao, SiweMessage } from "@didtools/cacao"; import { EthereumWebAuth, normalizeAccountId } from "@didtools/pkh-ethereum"; @@ -11,9 +10,9 @@ export const signerFromPkey = (pkey: string): Signer => walletFromPkey(pkey); const walletFromPkey = (pkey: string): Wallet => { - const provider = getDefaultProvider(getNodesLibInternalConfig().chainConfig.rpcUrl); + const provider = getDefaultProvider(getNodesLibInternalConfig().legacyChainConfig.rpcUrl); const paddedPkey = ensurePkeyPadding(pkey); - const key = new SigningKey(paddedPkey); + const key = new utils.SigningKey(paddedPkey); return new Wallet(key, provider); }; From 4fb3a200449f112d15106bb03d4c551515e1f11a Mon Sep 17 00:00:00 2001 From: m0ar Date: Wed, 5 Jun 2024 16:09:26 +0200 Subject: [PATCH 14/34] contracts: add capability for contract owner to fix dpid upgrades --- .../opSepoliaDev-dpid-alias-registry.json | 46 ++++++++----------- .../DpidAliasRegistry.json | 24 +--------- .../contracts/DpidAliasRegistry.sol | 42 +++++++++-------- desci-contracts/hardhat.config.ts | 31 ++++++++++--- ...ry_dev_Wed,_12_Jun_2024_13:23:15_GMT.json} | 28 ++++++++++- desci-contracts/package.json | 4 +- .../deployDpidAliasRegistry.js | 0 .../migrateToAliasRegistry.mjs | 0 .../syncAliasRegistryMigration.mjs | 0 desci-contracts/test/DpidAliasRegistry.ts | 19 ++++---- .../typechain-types/DpidAliasRegistry.ts | 46 ------------------- .../factories/DpidAliasRegistry__factory.ts | 22 +-------- 12 files changed, 107 insertions(+), 155 deletions(-) rename desci-contracts/migration-data/{aliasRegistry_dev__Mon,_03_Jun_2024_11:21:28_GMT.json => aliasRegistry_dev_Wed,_12_Jun_2024_13:23:15_GMT.json} (99%) rename desci-contracts/scripts/{ => alias-registry}/deployDpidAliasRegistry.js (100%) rename desci-contracts/scripts/{ => alias-registry}/migrateToAliasRegistry.mjs (100%) rename desci-contracts/scripts/{ => alias-registry}/syncAliasRegistryMigration.mjs (100%) diff --git a/desci-contracts/.openzeppelin/opSepoliaDev-dpid-alias-registry.json b/desci-contracts/.openzeppelin/opSepoliaDev-dpid-alias-registry.json index 6af451319..f88f3115f 100644 --- a/desci-contracts/.openzeppelin/opSepoliaDev-dpid-alias-registry.json +++ b/desci-contracts/.openzeppelin/opSepoliaDev-dpid-alias-registry.json @@ -1,20 +1,20 @@ { "manifestVersion": "3.2", "admin": { - "address": "0x64f1dE5b953135c5cEC03DB2B99ffcA0fe11eF88", - "txHash": "0xa1134fbf6b5e3bdfc450beafff59cfb7c3e978014396d52775a304dca2bffb97" + "address": "0x280685c10281F16b4A8585810f695E293B6097eB", + "txHash": "0x5d600bd4cc7f920597350266a6d3840c9d938b6bf5f0d0ccde77117fd2c95ea0" }, "proxies": [ { - "address": "0x7906AC53C2F59d0Eb36dC126336322d25Da15B62", - "txHash": "0xf583111b6d255339f06748889e3adbf9fc313bcdad0480b22f4767b179c673d7", + "address": "0x2Ea4Ee2Af79495e045EBe925aC67d755520877e7", + "txHash": "0x32b16b14970350db7db8bdc9da8c7ddffa389f5678e810f3d3208cb277b76a1c", "kind": "transparent" } ], "impls": { - "e48cadec43394f09ce202bd07138068396bd5f4bf01fcb81e0856ebd63ce19bc": { - "address": "0x5f8ffCbAeAB5F7749bc3Cb333e634265C2D3DF22", - "txHash": "0x996f85a02d3bd579767511ed14a00ebe74ef6ba40319f09f049ad32797dc8d0f", + "a230b5b705959d3e3e4fc01d0b0da971f2e249681ed6a78165280ba33db100b5": { + "address": "0x682c122e535aB4637AA6d8DCCCa106CA89831918", + "txHash": "0x6e925112f68a35e6e8a9ba70f88cab98bc88e3de0e64f5f4d398efb8aaab1721", "layout": { "solcVersion": "0.8.4", "storage": [ @@ -83,37 +83,29 @@ "contract": "DpidAliasRegistry", "src": "contracts/DpidAliasRegistry.sol:10" }, - { - "label": "migrationFrozen", - "offset": 0, - "slot": "152", - "type": "t_bool", - "contract": "DpidAliasRegistry", - "src": "contracts/DpidAliasRegistry.sol:13" - }, { "label": "registry", "offset": 0, - "slot": "153", + "slot": "152", "type": "t_mapping(t_uint256,t_string_storage)", "contract": "DpidAliasRegistry", - "src": "contracts/DpidAliasRegistry.sol:16" + "src": "contracts/DpidAliasRegistry.sol:13" }, { "label": "reverseRegistry", "offset": 0, - "slot": "154", + "slot": "153", "type": "t_mapping(t_string_memory_ptr,t_uint256)", "contract": "DpidAliasRegistry", - "src": "contracts/DpidAliasRegistry.sol:19" + "src": "contracts/DpidAliasRegistry.sol:16" }, { "label": "legacy", "offset": 0, - "slot": "155", - "type": "t_mapping(t_uint256,t_struct(LegacyDpidEntry)845_storage)", + "slot": "154", + "type": "t_mapping(t_uint256,t_struct(LegacyDpidEntry)843_storage)", "contract": "DpidAliasRegistry", - "src": "contracts/DpidAliasRegistry.sol:128" + "src": "contracts/DpidAliasRegistry.sol:125" } ], "types": { @@ -121,7 +113,7 @@ "label": "address", "numberOfBytes": "20" }, - "t_array(t_struct(LegacyVersion)838_storage)dyn_storage": { + "t_array(t_struct(LegacyVersion)836_storage)dyn_storage": { "label": "struct DpidAliasRegistry.LegacyVersion[]", "numberOfBytes": "32" }, @@ -145,7 +137,7 @@ "label": "mapping(uint256 => string)", "numberOfBytes": "32" }, - "t_mapping(t_uint256,t_struct(LegacyDpidEntry)845_storage)": { + "t_mapping(t_uint256,t_struct(LegacyDpidEntry)843_storage)": { "label": "mapping(uint256 => struct DpidAliasRegistry.LegacyDpidEntry)", "numberOfBytes": "32" }, @@ -157,7 +149,7 @@ "label": "string", "numberOfBytes": "32" }, - "t_struct(LegacyDpidEntry)845_storage": { + "t_struct(LegacyDpidEntry)843_storage": { "label": "struct DpidAliasRegistry.LegacyDpidEntry", "members": [ { @@ -168,14 +160,14 @@ }, { "label": "versions", - "type": "t_array(t_struct(LegacyVersion)838_storage)dyn_storage", + "type": "t_array(t_struct(LegacyVersion)836_storage)dyn_storage", "offset": 0, "slot": "1" } ], "numberOfBytes": "64" }, - "t_struct(LegacyVersion)838_storage": { + "t_struct(LegacyVersion)836_storage": { "label": "struct DpidAliasRegistry.LegacyVersion", "members": [ { diff --git a/desci-contracts/artifacts/contracts/DpidAliasRegistry.sol/DpidAliasRegistry.json b/desci-contracts/artifacts/contracts/DpidAliasRegistry.sol/DpidAliasRegistry.json index 842f1f8f0..75d6a5e17 100644 --- a/desci-contracts/artifacts/contracts/DpidAliasRegistry.sol/DpidAliasRegistry.json +++ b/desci-contracts/artifacts/contracts/DpidAliasRegistry.sol/DpidAliasRegistry.json @@ -166,13 +166,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [], - "name": "freezeMigration", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [ { @@ -284,19 +277,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [], - "name": "migrationFrozen", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [ { @@ -478,8 +458,8 @@ "type": "function" } ], - "bytecode": "0x60806040523480156200001157600080fd5b50620000226200002860201b60201c565b620001d3565b600060019054906101000a900460ff16156200007b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000729062000127565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff161015620000ed5760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff604051620000e4919062000149565b60405180910390a15b565b6000620000fe60278362000166565b91506200010b8262000184565b604082019050919050565b620001218162000177565b82525050565b600060208201905081810360008301526200014281620000ef565b9050919050565b600060208201905062000160600083018462000116565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b612bc280620001e36000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c80638129fc1c116100ad578063afc2691111610071578063afc26911146102f7578063b724de3a14610315578063b9e2924114610345578063ded8896b14610363578063f2fde38b1461037f5761012c565b80638129fc1c1461027957806382b7b500146102835780638456cb59146102b35780638da5cb5b146102bd578063a5ad8ac6146102db5761012c565b80635893253c116100f45780635893253c146101c15780635c975abb146101f1578063715018a61461020f578063788243d514610219578063810a9afa146102495761012c565b80630d70b3aa14610131578063144ae8551461013b5780633f4ba83a146101575780634f896d4f14610161578063587a8cbf14610191575b600080fd5b61013961039b565b005b610155600480360381019061015091906114c1565b6103c0565b005b61015f61047e565b005b61017b60048036038101906101769190611440565b610498565b6040516101889190611a51565b60405180910390f35b6101ab60048036038101906101a691906113ff565b61053d565b6040516101b89190611bd5565b60405180910390f35b6101db60048036038101906101d69190611440565b61056b565b6040516101e89190611a51565b60405180910390f35b6101f961060b565b6040516102069190611a1b565b60405180910390f35b610217610622565b005b610233600480360381019061022e9190611440565b610636565b6040516102409190611a00565b60405180910390f35b610263600480360381019061025e9190611440565b610674565b6040516102709190611bb3565b60405180910390f35b6102816107f2565b005b61029d600480360381019061029891906113ba565b610940565b6040516102aa9190611bd5565b60405180910390f35b6102bb61096b565b005b6102c5610985565b6040516102d29190611a00565b60405180910390f35b6102f560048036038101906102f09190611440565b6109af565b005b6102ff6109c9565b60405161030c9190611bd5565b60405180910390f35b61032f600480360381019061032a91906113ba565b6109cf565b60405161033c9190611bd5565b60405180910390f35b61034d610aec565b60405161035a9190611a1b565b60405180910390f35b61037d60048036038101906103789190611469565b610aff565b005b61039960048036038101906103949190611391565b610cfc565b005b6103a3610d80565b6001609860006101000a81548160ff021916908315150217905550565b6103c8610d80565b60001515609860009054906101000a900460ff1615151461041e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161041590611ad3565b60405180910390fd5b80609b6000848152602001908152602001600020818161043e9190612ae5565b9050507fa9c55ebaa1fada408bd72c2f0ea7c27f5444b105bcff12c5381baac912156ada8282604051610472929190611c22565b60405180910390a15050565b610486610d80565b61048e610dfe565b610496610e47565b565b60606099600083815260200190815260200160002080546104b890612449565b80601f01602080910402602001604051908101604052809291908181526020018280546104e490612449565b80156105315780601f1061050657610100808354040283529160200191610531565b820191906000526020600020905b81548152906001019060200180831161051457829003601f168201915b50505050509050919050565b609a818051602081018201805184825260208301602085012081835280955050505050506000915090505481565b6099602052806000526040600020600091509050805461058a90612449565b80601f01602080910402602001604051908101604052809291908181526020018280546105b690612449565b80156106035780601f106105d857610100808354040283529160200191610603565b820191906000526020600020905b8154815290600101906020018083116105e657829003601f168201915b505050505081565b6000606560009054906101000a900460ff16905090565b61062a610d80565b6106346000610eaa565b565b609b6020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081565b61067c6111c7565b609b60008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805480602002602001604051908101604052809291908181526020016000905b828210156107e3578382906000526020600020906002020160405180604001604052908160008201805461074890612449565b80601f016020809104026020016040519081016040528092919081815260200182805461077490612449565b80156107c15780601f10610796576101008083540402835291602001916107c1565b820191906000526020600020905b8154815290600101906020018083116107a457829003601f168201915b5050505050815260200160018201548152505081526020019060010190610715565b50505050815250509050919050565b60008060019054906101000a900460ff161590508080156108235750600160008054906101000a900460ff1660ff16105b80610850575061083230610f70565b15801561084f5750600160008054906101000a900460ff1660ff16145b5b61088f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088690611b33565b60405180910390fd5b60016000806101000a81548160ff021916908360ff16021790555080156108cc576001600060016101000a81548160ff0219169083151502179055505b6108d4610f93565b6108dc610fec565b6108e4611045565b801561093d5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516109349190611a36565b60405180910390a15b50565b6000609a83836040516109549291906119e7565b908152602001604051809103902054905092915050565b610973610d80565b61097b6110a8565b610983611045565b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6109b7610d80565b6109bf610dfe565b8060978190555050565b60975481565b600082826000609a83836040516109e79291906119e7565b90815260200160405180910390205414610a36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2d90611b13565b60405180910390fd5b610a3e6110a8565b600060975490508585609960008481526020019081526020016000209190610a679291906111f7565b5080609a8787604051610a7b9291906119e7565b9081526020016040518091039020819055507f96a65efbb6991f67fc8a4c7550fcfd08f1968737d2f5adcded5cd937b3cc0f3d818787604051610ac093929190611bf0565b60405180910390a160976000815480929190610adb906124c8565b919050555080935050505092915050565b609860009054906101000a900460ff1681565b81816000609a8383604051610b159291906119e7565b90815260200160405180910390205414610b64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5b90611b13565b60405180910390fd5b610b6c6110a8565b6000609960008781526020019081526020016000208054610b8c90612449565b905014610bce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc590611a93565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16609b600087815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6990611b93565b60405180910390fd5b8383609960008881526020019081526020016000209190610c949291906111f7565b5084609a8585604051610ca89291906119e7565b9081526020016040518091039020819055507f442b41840a10393534508176faee6f70b1870707dc24573b67d49f28cbac7f1c858585604051610ced93929190611bf0565b60405180910390a15050505050565b610d04610d80565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6b90611ab3565b60405180910390fd5b610d7d81610eaa565b50565b610d886110f2565b73ffffffffffffffffffffffffffffffffffffffff16610da6610985565b73ffffffffffffffffffffffffffffffffffffffff1614610dfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df390611b53565b60405180910390fd5b565b610e0661060b565b610e45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3c90611a73565b60405180910390fd5b565b610e4f610dfe565b6000606560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa610e936110f2565b604051610ea09190611a00565b60405180910390a1565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16610fe2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd990611b73565b60405180910390fd5b610fea6110fa565b565b600060019054906101000a900460ff1661103b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103290611b73565b60405180910390fd5b61104361115b565b565b61104d6110a8565b6001606560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586110916110f2565b60405161109e9190611a00565b60405180910390a1565b6110b061060b565b156110f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e790611af3565b60405180910390fd5b565b600033905090565b600060019054906101000a900460ff16611149576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114090611b73565b60405180910390fd5b6111596111546110f2565b610eaa565b565b600060019054906101000a900460ff166111aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a190611b73565b60405180910390fd5b6000606560006101000a81548160ff021916908315150217905550565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b82805461120390612449565b90600052602060002090601f016020900481019282611225576000855561126c565b82601f1061123e57803560ff191683800117855561126c565b8280016001018555821561126c579182015b8281111561126b578235825591602001919060010190611250565b5b509050611279919061127d565b5090565b5b8082111561129657600081600090555060010161127e565b5090565b60006112ad6112a884611d49565b611d24565b9050828152602081018484840111156112c557600080fd5b6112d084828561237b565b509392505050565b6000813590506112e781612b59565b92915050565b60008083601f8401126112ff57600080fd5b8235905067ffffffffffffffff81111561131857600080fd5b60208301915083600182028301111561133057600080fd5b9250929050565b600082601f83011261134857600080fd5b813561135884826020860161129a565b91505092915050565b60006040828403121561137357600080fd5b81905092915050565b60008135905061138b81612b70565b92915050565b6000602082840312156113a357600080fd5b60006113b1848285016112d8565b91505092915050565b600080602083850312156113cd57600080fd5b600083013567ffffffffffffffff8111156113e757600080fd5b6113f3858286016112ed565b92509250509250929050565b60006020828403121561141157600080fd5b600082013567ffffffffffffffff81111561142b57600080fd5b61143784828501611337565b91505092915050565b60006020828403121561145257600080fd5b60006114608482850161137c565b91505092915050565b60008060006040848603121561147e57600080fd5b600061148c8682870161137c565b935050602084013567ffffffffffffffff8111156114a957600080fd5b6114b5868287016112ed565b92509250509250925092565b600080604083850312156114d457600080fd5b60006114e28582860161137c565b925050602083013567ffffffffffffffff8111156114ff57600080fd5b61150b85828601611361565b9150509250929050565b6000611521838361193d565b905092915050565b6000611535838361198c565b905092915050565b611546816120c3565b82525050565b611555816120c3565b82525050565b60006115678385611e26565b93508360208402850161157984611d91565b8060005b878110156115bd578484038952611594828461202e565b61159e8582611515565b94506115a983611e0c565b925060208a0199505060018101905061157d565b50829750879450505050509392505050565b60006115da82611de0565b6115e48185611e26565b9350836020820285016115f685611d9b565b8060005b8581101561163257848403895281516116138582611529565b945061161e83611e19565b925060208a019950506001810190506115fa565b50829750879550505050505092915050565b61164d816120d5565b82525050565b61165c816121be565b82525050565b600061166e8385611e37565b935061167b83858461237b565b6116848361271f565b840190509392505050565b600061169b8385611e48565b93506116a883858461237b565b6116b18361271f565b840190509392505050565b60006116c88385611e59565b93506116d583858461237b565b82840190509392505050565b60006116ec82611e01565b6116f68185611e37565b935061170681856020860161238a565b61170f8161271f565b840191505092915050565b600061172582611e01565b61172f8185611e48565b935061173f81856020860161238a565b6117488161271f565b840191505092915050565b6000611760601483611e48565b915061176b826127ab565b602082019050919050565b6000611783601583611e48565b915061178e826127d4565b602082019050919050565b60006117a6602683611e48565b91506117b1826127fd565b604082019050919050565b60006117c9601383611e48565b91506117d48261284c565b602082019050919050565b60006117ec601083611e48565b91506117f782612875565b602082019050919050565b600061180f601983611e48565b915061181a8261289e565b602082019050919050565b6000611832602e83611e48565b915061183d826128c7565b604082019050919050565b6000611855602083611e48565b915061186082612916565b602082019050919050565b6000611878602b83611e48565b91506118838261293f565b604082019050919050565b600061189b601983611e48565b91506118a68261298e565b602082019050919050565b6000604083016118c46000840184611f69565b6118d1600086018261153d565b506118df6020840184611f80565b85830360208701526118f283828461155b565b925050508091505092915050565b6000604083016000830151611918600086018261153d565b506020830151848203602086015261193082826115cf565b9150508091505092915050565b6000604083016119506000840184611fd7565b8583036000870152611963838284611662565b925050506119746020840184612052565b61198160208601826119c9565b508091505092915050565b600060408301600083015184820360008601526119a982826116e1565b91505060208301516119be60208601826119c9565b508091505092915050565b6119d281612101565b82525050565b6119e181612101565b82525050565b60006119f48284866116bc565b91508190509392505050565b6000602082019050611a15600083018461154c565b92915050565b6000602082019050611a306000830184611644565b92915050565b6000602082019050611a4b6000830184611653565b92915050565b60006020820190508181036000830152611a6b818461171a565b905092915050565b60006020820190508181036000830152611a8c81611753565b9050919050565b60006020820190508181036000830152611aac81611776565b9050919050565b60006020820190508181036000830152611acc81611799565b9050919050565b60006020820190508181036000830152611aec816117bc565b9050919050565b60006020820190508181036000830152611b0c816117df565b9050919050565b60006020820190508181036000830152611b2c81611802565b9050919050565b60006020820190508181036000830152611b4c81611825565b9050919050565b60006020820190508181036000830152611b6c81611848565b9050919050565b60006020820190508181036000830152611b8c8161186b565b9050919050565b60006020820190508181036000830152611bac8161188e565b9050919050565b60006020820190508181036000830152611bcd8184611900565b905092915050565b6000602082019050611bea60008301846119d8565b92915050565b6000604082019050611c0560008301866119d8565b8181036020830152611c1881848661168f565b9050949350505050565b6000604082019050611c3760008301856119d8565b8181036020830152611c4981846118b1565b90509392505050565b60008083356001602003843603038112611c6b57600080fd5b80840192508235915067ffffffffffffffff821115611c8957600080fd5b602083019250602082023603831315611ca157600080fd5b509250929050565b60008083356001602003843603038112611cc257600080fd5b80840192508235915067ffffffffffffffff821115611ce057600080fd5b602083019250600182023603831315611cf857600080fd5b509250929050565b600082356001604003833603038112611d1857600080fd5b80830191505092915050565b6000611d2e611d3f565b9050611d3a8282612497565b919050565b6000604051905090565b600067ffffffffffffffff821115611d6457611d636125bc565b5b611d6d8261271f565b9050602081019050919050565b6000819050611d8a826002612069565b9050919050565b6000819050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b600082905092915050565b600081519050919050565b600081549050919050565b600082905092915050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6020841060008114611ebd57601f841160018114611e8d57611e86868561247b565b8355611eb7565b611e9683611dc0565b611eab6020601f880104820160018301612126565b611eb587856129b7565b505b50611f06565b611ec682611dc0565b6020601f8701048101601f87168015611ee757611ee681600184036125eb565b5b611ef96020601f890104840183612126565b6001886002021785555050505b5050505050565b6020831060008114611f58576020851060008114611f3657611f2f868561247b565b8355611f52565b8360ff1916935083611f4784611dc0565b556001866002020183555b50611f62565b6001856002020182555b5050505050565b6000611f7860208401846112d8565b905092915050565b60008083356001602003843603038112611f9957600080fd5b83810192508235915060208301925067ffffffffffffffff821115611fbd57600080fd5b602082023603841315611fcf57600080fd5b509250929050565b60008083356001602003843603038112611ff057600080fd5b83810192508235915060208301925067ffffffffffffffff82111561201457600080fd5b60018202360384131561202657600080fd5b509250929050565b60008235600160400383360303811261204657600080fd5b82810191505092915050565b6000612061602084018461137c565b905092915050565b600061207482612101565b915061207f83612101565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156120b8576120b761255e565b5b828202905092915050565b60006120ce826120e1565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6121236000826126ca565b50565b5b818110156121455761213a600082612793565b600181019050612127565b5050565b5b818110156121685761215d600082612775565b60028101905061214a565b5050565b8181101561218a5761217f600082612793565b60018101905061216c565b5050565b61219b6000808301612757565b6121a9600060018301612793565b50565b60006121b7826121d0565b9050919050565b60006121c98261210b565b9050919050565b60006121db826121e2565b9050919050565b60006121ed826120e1565b9050919050565b60006121ff82612101565b9050919050565b6122108383611dd5565b61221a8183612666565b61222383611d91565b61222c83611dab565b6000805b84811015612265576122428488611d00565b61224d818486612b16565b60208501945060028401935050600181019050612230565b5050505050505050565b6122798383611df6565b67ffffffffffffffff811115612292576122916125bc565b5b61229c8254612449565b600080601f8411601f841117156122b9576122b685611dc0565b90505b601f8311156122ec576020601f850104810160208510156122d8578190505b6122ea6020601f860104830182612126565b505b601f8411600181146123195760008515612307578388013590505b612311868261247b565b875550612371565b601f1985168260005b8281101561234757858a01358255600182019150602086019550602081019050612322565b8783101561236457858a0135612360601f8a1682612511565b8355505b6001600289020189555050505b5050505050505050565b82818337600083830152505050565b60005b838110156123a857808201518184015260208101905061238d565b838111156123b7576000848401525b50505050565b6000810160008301806123cf8161263a565b90506123db8184612aa2565b50505060018101602083016123f08185611c52565b6123fb818386612ac5565b505050505050565b60008101600083016124158185611ca9565b612420818386612ad5565b5050505060018101602083018061243681612650565b90506124428184612af3565b5050505050565b6000600282049050600182168061246157607f821691505b602082108114156124755761247461258d565b5b50919050565b60006124878383612511565b9150826002028217905092915050565b6124a08261271f565b810181811067ffffffffffffffff821117156124bf576124be6125bc565b5b80604052505050565b60006124d382612101565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156125065761250561255e565b5b600182019050919050565b60006125226000198460080261274a565b1980831691505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61261b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8360200360080261274a565b815481168255505050565b6000819050919050565b6000819050919050565b6000813561264781612b59565b80915050919050565b6000813561265d81612b70565b80915050919050565b680100000000000000008211156126805761267f6125bc565b5b61268981611deb565b828255808310156126c55761269d81611d7a565b6126a684611d7a565b6126af84611dab565b8181018382016126bf8183612149565b50505050505b505050565b680100000000000000008211156126e4576126e36125bc565b5b80546126ef81612449565b808411156127045761270384828486611f0d565b5b808410156127195761271884828486611e64565b5b50505050565b6000601f19601f8301169050919050565b60008160001b9050919050565b600082821b905092915050565b600082821c905092915050565b600082146127685761276761252f565b5b61277181612118565b5050565b600082146127865761278561252f565b5b61278f8161218e565b5050565b61279b612b87565b6127a6818484612b34565b505050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f6470696420616c72656164792075706772616465640000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f6d6967726174696f6e2069732066726f7a656e00000000000000000000000000600082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b7f73747265616d20616c7265616479206861732061206450494400000000000000600082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f756e617574686f72697a65642064706964207570677261646500000000000000600082015250565b6129c081611dc0565b6129cb83825461247b565b8083556000825550505050565b600073ffffffffffffffffffffffffffffffffffffffff6129f884612730565b9350801983169250808416831791505092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612a3a84612730565b9350801983169250808416831791505092915050565b600060088302612a807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261273d565b612a8a868361273d565b95508019841693508086168417925050509392505050565b612aab826121ac565b612abe612ab782612626565b83546129d8565b8255505050565b612ad0838383612206565b505050565b612ae083838361226f565b505050565b612aef82826123bd565b5050565b612afc826121f4565b612b0f612b0882612630565b8354612a0e565b8255505050565b8115612b2557612b2461252f565b5b612b2f8382612403565b505050565b612b3d836121f4565b612b51612b4982612630565b848454612a50565b825550505050565b612b62816120c3565b8114612b6d57600080fd5b50565b612b7981612101565b8114612b8457600080fd5b50565b60009056fea264697066735822122025321e8b3f610ad6d87a9b3497059176ff710a769edbe017d76013391f10763b64736f6c63430008040033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061012c5760003560e01c80638129fc1c116100ad578063afc2691111610071578063afc26911146102f7578063b724de3a14610315578063b9e2924114610345578063ded8896b14610363578063f2fde38b1461037f5761012c565b80638129fc1c1461027957806382b7b500146102835780638456cb59146102b35780638da5cb5b146102bd578063a5ad8ac6146102db5761012c565b80635893253c116100f45780635893253c146101c15780635c975abb146101f1578063715018a61461020f578063788243d514610219578063810a9afa146102495761012c565b80630d70b3aa14610131578063144ae8551461013b5780633f4ba83a146101575780634f896d4f14610161578063587a8cbf14610191575b600080fd5b61013961039b565b005b610155600480360381019061015091906114c1565b6103c0565b005b61015f61047e565b005b61017b60048036038101906101769190611440565b610498565b6040516101889190611a51565b60405180910390f35b6101ab60048036038101906101a691906113ff565b61053d565b6040516101b89190611bd5565b60405180910390f35b6101db60048036038101906101d69190611440565b61056b565b6040516101e89190611a51565b60405180910390f35b6101f961060b565b6040516102069190611a1b565b60405180910390f35b610217610622565b005b610233600480360381019061022e9190611440565b610636565b6040516102409190611a00565b60405180910390f35b610263600480360381019061025e9190611440565b610674565b6040516102709190611bb3565b60405180910390f35b6102816107f2565b005b61029d600480360381019061029891906113ba565b610940565b6040516102aa9190611bd5565b60405180910390f35b6102bb61096b565b005b6102c5610985565b6040516102d29190611a00565b60405180910390f35b6102f560048036038101906102f09190611440565b6109af565b005b6102ff6109c9565b60405161030c9190611bd5565b60405180910390f35b61032f600480360381019061032a91906113ba565b6109cf565b60405161033c9190611bd5565b60405180910390f35b61034d610aec565b60405161035a9190611a1b565b60405180910390f35b61037d60048036038101906103789190611469565b610aff565b005b61039960048036038101906103949190611391565b610cfc565b005b6103a3610d80565b6001609860006101000a81548160ff021916908315150217905550565b6103c8610d80565b60001515609860009054906101000a900460ff1615151461041e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161041590611ad3565b60405180910390fd5b80609b6000848152602001908152602001600020818161043e9190612ae5565b9050507fa9c55ebaa1fada408bd72c2f0ea7c27f5444b105bcff12c5381baac912156ada8282604051610472929190611c22565b60405180910390a15050565b610486610d80565b61048e610dfe565b610496610e47565b565b60606099600083815260200190815260200160002080546104b890612449565b80601f01602080910402602001604051908101604052809291908181526020018280546104e490612449565b80156105315780601f1061050657610100808354040283529160200191610531565b820191906000526020600020905b81548152906001019060200180831161051457829003601f168201915b50505050509050919050565b609a818051602081018201805184825260208301602085012081835280955050505050506000915090505481565b6099602052806000526040600020600091509050805461058a90612449565b80601f01602080910402602001604051908101604052809291908181526020018280546105b690612449565b80156106035780601f106105d857610100808354040283529160200191610603565b820191906000526020600020905b8154815290600101906020018083116105e657829003601f168201915b505050505081565b6000606560009054906101000a900460ff16905090565b61062a610d80565b6106346000610eaa565b565b609b6020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081565b61067c6111c7565b609b60008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805480602002602001604051908101604052809291908181526020016000905b828210156107e3578382906000526020600020906002020160405180604001604052908160008201805461074890612449565b80601f016020809104026020016040519081016040528092919081815260200182805461077490612449565b80156107c15780601f10610796576101008083540402835291602001916107c1565b820191906000526020600020905b8154815290600101906020018083116107a457829003601f168201915b5050505050815260200160018201548152505081526020019060010190610715565b50505050815250509050919050565b60008060019054906101000a900460ff161590508080156108235750600160008054906101000a900460ff1660ff16105b80610850575061083230610f70565b15801561084f5750600160008054906101000a900460ff1660ff16145b5b61088f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088690611b33565b60405180910390fd5b60016000806101000a81548160ff021916908360ff16021790555080156108cc576001600060016101000a81548160ff0219169083151502179055505b6108d4610f93565b6108dc610fec565b6108e4611045565b801561093d5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516109349190611a36565b60405180910390a15b50565b6000609a83836040516109549291906119e7565b908152602001604051809103902054905092915050565b610973610d80565b61097b6110a8565b610983611045565b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6109b7610d80565b6109bf610dfe565b8060978190555050565b60975481565b600082826000609a83836040516109e79291906119e7565b90815260200160405180910390205414610a36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2d90611b13565b60405180910390fd5b610a3e6110a8565b600060975490508585609960008481526020019081526020016000209190610a679291906111f7565b5080609a8787604051610a7b9291906119e7565b9081526020016040518091039020819055507f96a65efbb6991f67fc8a4c7550fcfd08f1968737d2f5adcded5cd937b3cc0f3d818787604051610ac093929190611bf0565b60405180910390a160976000815480929190610adb906124c8565b919050555080935050505092915050565b609860009054906101000a900460ff1681565b81816000609a8383604051610b159291906119e7565b90815260200160405180910390205414610b64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5b90611b13565b60405180910390fd5b610b6c6110a8565b6000609960008781526020019081526020016000208054610b8c90612449565b905014610bce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc590611a93565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16609b600087815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6990611b93565b60405180910390fd5b8383609960008881526020019081526020016000209190610c949291906111f7565b5084609a8585604051610ca89291906119e7565b9081526020016040518091039020819055507f442b41840a10393534508176faee6f70b1870707dc24573b67d49f28cbac7f1c858585604051610ced93929190611bf0565b60405180910390a15050505050565b610d04610d80565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6b90611ab3565b60405180910390fd5b610d7d81610eaa565b50565b610d886110f2565b73ffffffffffffffffffffffffffffffffffffffff16610da6610985565b73ffffffffffffffffffffffffffffffffffffffff1614610dfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df390611b53565b60405180910390fd5b565b610e0661060b565b610e45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3c90611a73565b60405180910390fd5b565b610e4f610dfe565b6000606560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa610e936110f2565b604051610ea09190611a00565b60405180910390a1565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16610fe2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd990611b73565b60405180910390fd5b610fea6110fa565b565b600060019054906101000a900460ff1661103b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103290611b73565b60405180910390fd5b61104361115b565b565b61104d6110a8565b6001606560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586110916110f2565b60405161109e9190611a00565b60405180910390a1565b6110b061060b565b156110f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e790611af3565b60405180910390fd5b565b600033905090565b600060019054906101000a900460ff16611149576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114090611b73565b60405180910390fd5b6111596111546110f2565b610eaa565b565b600060019054906101000a900460ff166111aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a190611b73565b60405180910390fd5b6000606560006101000a81548160ff021916908315150217905550565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b82805461120390612449565b90600052602060002090601f016020900481019282611225576000855561126c565b82601f1061123e57803560ff191683800117855561126c565b8280016001018555821561126c579182015b8281111561126b578235825591602001919060010190611250565b5b509050611279919061127d565b5090565b5b8082111561129657600081600090555060010161127e565b5090565b60006112ad6112a884611d49565b611d24565b9050828152602081018484840111156112c557600080fd5b6112d084828561237b565b509392505050565b6000813590506112e781612b59565b92915050565b60008083601f8401126112ff57600080fd5b8235905067ffffffffffffffff81111561131857600080fd5b60208301915083600182028301111561133057600080fd5b9250929050565b600082601f83011261134857600080fd5b813561135884826020860161129a565b91505092915050565b60006040828403121561137357600080fd5b81905092915050565b60008135905061138b81612b70565b92915050565b6000602082840312156113a357600080fd5b60006113b1848285016112d8565b91505092915050565b600080602083850312156113cd57600080fd5b600083013567ffffffffffffffff8111156113e757600080fd5b6113f3858286016112ed565b92509250509250929050565b60006020828403121561141157600080fd5b600082013567ffffffffffffffff81111561142b57600080fd5b61143784828501611337565b91505092915050565b60006020828403121561145257600080fd5b60006114608482850161137c565b91505092915050565b60008060006040848603121561147e57600080fd5b600061148c8682870161137c565b935050602084013567ffffffffffffffff8111156114a957600080fd5b6114b5868287016112ed565b92509250509250925092565b600080604083850312156114d457600080fd5b60006114e28582860161137c565b925050602083013567ffffffffffffffff8111156114ff57600080fd5b61150b85828601611361565b9150509250929050565b6000611521838361193d565b905092915050565b6000611535838361198c565b905092915050565b611546816120c3565b82525050565b611555816120c3565b82525050565b60006115678385611e26565b93508360208402850161157984611d91565b8060005b878110156115bd578484038952611594828461202e565b61159e8582611515565b94506115a983611e0c565b925060208a0199505060018101905061157d565b50829750879450505050509392505050565b60006115da82611de0565b6115e48185611e26565b9350836020820285016115f685611d9b565b8060005b8581101561163257848403895281516116138582611529565b945061161e83611e19565b925060208a019950506001810190506115fa565b50829750879550505050505092915050565b61164d816120d5565b82525050565b61165c816121be565b82525050565b600061166e8385611e37565b935061167b83858461237b565b6116848361271f565b840190509392505050565b600061169b8385611e48565b93506116a883858461237b565b6116b18361271f565b840190509392505050565b60006116c88385611e59565b93506116d583858461237b565b82840190509392505050565b60006116ec82611e01565b6116f68185611e37565b935061170681856020860161238a565b61170f8161271f565b840191505092915050565b600061172582611e01565b61172f8185611e48565b935061173f81856020860161238a565b6117488161271f565b840191505092915050565b6000611760601483611e48565b915061176b826127ab565b602082019050919050565b6000611783601583611e48565b915061178e826127d4565b602082019050919050565b60006117a6602683611e48565b91506117b1826127fd565b604082019050919050565b60006117c9601383611e48565b91506117d48261284c565b602082019050919050565b60006117ec601083611e48565b91506117f782612875565b602082019050919050565b600061180f601983611e48565b915061181a8261289e565b602082019050919050565b6000611832602e83611e48565b915061183d826128c7565b604082019050919050565b6000611855602083611e48565b915061186082612916565b602082019050919050565b6000611878602b83611e48565b91506118838261293f565b604082019050919050565b600061189b601983611e48565b91506118a68261298e565b602082019050919050565b6000604083016118c46000840184611f69565b6118d1600086018261153d565b506118df6020840184611f80565b85830360208701526118f283828461155b565b925050508091505092915050565b6000604083016000830151611918600086018261153d565b506020830151848203602086015261193082826115cf565b9150508091505092915050565b6000604083016119506000840184611fd7565b8583036000870152611963838284611662565b925050506119746020840184612052565b61198160208601826119c9565b508091505092915050565b600060408301600083015184820360008601526119a982826116e1565b91505060208301516119be60208601826119c9565b508091505092915050565b6119d281612101565b82525050565b6119e181612101565b82525050565b60006119f48284866116bc565b91508190509392505050565b6000602082019050611a15600083018461154c565b92915050565b6000602082019050611a306000830184611644565b92915050565b6000602082019050611a4b6000830184611653565b92915050565b60006020820190508181036000830152611a6b818461171a565b905092915050565b60006020820190508181036000830152611a8c81611753565b9050919050565b60006020820190508181036000830152611aac81611776565b9050919050565b60006020820190508181036000830152611acc81611799565b9050919050565b60006020820190508181036000830152611aec816117bc565b9050919050565b60006020820190508181036000830152611b0c816117df565b9050919050565b60006020820190508181036000830152611b2c81611802565b9050919050565b60006020820190508181036000830152611b4c81611825565b9050919050565b60006020820190508181036000830152611b6c81611848565b9050919050565b60006020820190508181036000830152611b8c8161186b565b9050919050565b60006020820190508181036000830152611bac8161188e565b9050919050565b60006020820190508181036000830152611bcd8184611900565b905092915050565b6000602082019050611bea60008301846119d8565b92915050565b6000604082019050611c0560008301866119d8565b8181036020830152611c1881848661168f565b9050949350505050565b6000604082019050611c3760008301856119d8565b8181036020830152611c4981846118b1565b90509392505050565b60008083356001602003843603038112611c6b57600080fd5b80840192508235915067ffffffffffffffff821115611c8957600080fd5b602083019250602082023603831315611ca157600080fd5b509250929050565b60008083356001602003843603038112611cc257600080fd5b80840192508235915067ffffffffffffffff821115611ce057600080fd5b602083019250600182023603831315611cf857600080fd5b509250929050565b600082356001604003833603038112611d1857600080fd5b80830191505092915050565b6000611d2e611d3f565b9050611d3a8282612497565b919050565b6000604051905090565b600067ffffffffffffffff821115611d6457611d636125bc565b5b611d6d8261271f565b9050602081019050919050565b6000819050611d8a826002612069565b9050919050565b6000819050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b600082905092915050565b600081519050919050565b600081549050919050565b600082905092915050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6020841060008114611ebd57601f841160018114611e8d57611e86868561247b565b8355611eb7565b611e9683611dc0565b611eab6020601f880104820160018301612126565b611eb587856129b7565b505b50611f06565b611ec682611dc0565b6020601f8701048101601f87168015611ee757611ee681600184036125eb565b5b611ef96020601f890104840183612126565b6001886002021785555050505b5050505050565b6020831060008114611f58576020851060008114611f3657611f2f868561247b565b8355611f52565b8360ff1916935083611f4784611dc0565b556001866002020183555b50611f62565b6001856002020182555b5050505050565b6000611f7860208401846112d8565b905092915050565b60008083356001602003843603038112611f9957600080fd5b83810192508235915060208301925067ffffffffffffffff821115611fbd57600080fd5b602082023603841315611fcf57600080fd5b509250929050565b60008083356001602003843603038112611ff057600080fd5b83810192508235915060208301925067ffffffffffffffff82111561201457600080fd5b60018202360384131561202657600080fd5b509250929050565b60008235600160400383360303811261204657600080fd5b82810191505092915050565b6000612061602084018461137c565b905092915050565b600061207482612101565b915061207f83612101565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156120b8576120b761255e565b5b828202905092915050565b60006120ce826120e1565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6121236000826126ca565b50565b5b818110156121455761213a600082612793565b600181019050612127565b5050565b5b818110156121685761215d600082612775565b60028101905061214a565b5050565b8181101561218a5761217f600082612793565b60018101905061216c565b5050565b61219b6000808301612757565b6121a9600060018301612793565b50565b60006121b7826121d0565b9050919050565b60006121c98261210b565b9050919050565b60006121db826121e2565b9050919050565b60006121ed826120e1565b9050919050565b60006121ff82612101565b9050919050565b6122108383611dd5565b61221a8183612666565b61222383611d91565b61222c83611dab565b6000805b84811015612265576122428488611d00565b61224d818486612b16565b60208501945060028401935050600181019050612230565b5050505050505050565b6122798383611df6565b67ffffffffffffffff811115612292576122916125bc565b5b61229c8254612449565b600080601f8411601f841117156122b9576122b685611dc0565b90505b601f8311156122ec576020601f850104810160208510156122d8578190505b6122ea6020601f860104830182612126565b505b601f8411600181146123195760008515612307578388013590505b612311868261247b565b875550612371565b601f1985168260005b8281101561234757858a01358255600182019150602086019550602081019050612322565b8783101561236457858a0135612360601f8a1682612511565b8355505b6001600289020189555050505b5050505050505050565b82818337600083830152505050565b60005b838110156123a857808201518184015260208101905061238d565b838111156123b7576000848401525b50505050565b6000810160008301806123cf8161263a565b90506123db8184612aa2565b50505060018101602083016123f08185611c52565b6123fb818386612ac5565b505050505050565b60008101600083016124158185611ca9565b612420818386612ad5565b5050505060018101602083018061243681612650565b90506124428184612af3565b5050505050565b6000600282049050600182168061246157607f821691505b602082108114156124755761247461258d565b5b50919050565b60006124878383612511565b9150826002028217905092915050565b6124a08261271f565b810181811067ffffffffffffffff821117156124bf576124be6125bc565b5b80604052505050565b60006124d382612101565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156125065761250561255e565b5b600182019050919050565b60006125226000198460080261274a565b1980831691505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61261b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8360200360080261274a565b815481168255505050565b6000819050919050565b6000819050919050565b6000813561264781612b59565b80915050919050565b6000813561265d81612b70565b80915050919050565b680100000000000000008211156126805761267f6125bc565b5b61268981611deb565b828255808310156126c55761269d81611d7a565b6126a684611d7a565b6126af84611dab565b8181018382016126bf8183612149565b50505050505b505050565b680100000000000000008211156126e4576126e36125bc565b5b80546126ef81612449565b808411156127045761270384828486611f0d565b5b808410156127195761271884828486611e64565b5b50505050565b6000601f19601f8301169050919050565b60008160001b9050919050565b600082821b905092915050565b600082821c905092915050565b600082146127685761276761252f565b5b61277181612118565b5050565b600082146127865761278561252f565b5b61278f8161218e565b5050565b61279b612b87565b6127a6818484612b34565b505050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f6470696420616c72656164792075706772616465640000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f6d6967726174696f6e2069732066726f7a656e00000000000000000000000000600082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b7f73747265616d20616c7265616479206861732061206450494400000000000000600082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f756e617574686f72697a65642064706964207570677261646500000000000000600082015250565b6129c081611dc0565b6129cb83825461247b565b8083556000825550505050565b600073ffffffffffffffffffffffffffffffffffffffff6129f884612730565b9350801983169250808416831791505092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612a3a84612730565b9350801983169250808416831791505092915050565b600060088302612a807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261273d565b612a8a868361273d565b95508019841693508086168417925050509392505050565b612aab826121ac565b612abe612ab782612626565b83546129d8565b8255505050565b612ad0838383612206565b505050565b612ae083838361226f565b505050565b612aef82826123bd565b5050565b612afc826121f4565b612b0f612b0882612630565b8354612a0e565b8255505050565b8115612b2557612b2461252f565b5b612b2f8382612403565b505050565b612b3d836121f4565b612b51612b4982612630565b848454612a50565b825550505050565b612b62816120c3565b8114612b6d57600080fd5b50565b612b7981612101565b8114612b8457600080fd5b50565b60009056fea264697066735822122025321e8b3f610ad6d87a9b3497059176ff710a769edbe017d76013391f10763b64736f6c63430008040033", + "bytecode": "0x60806040523480156200001157600080fd5b50620000226200002860201b60201c565b620001d3565b600060019054906101000a900460ff16156200007b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000729062000127565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff161015620000ed5760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff604051620000e4919062000149565b60405180910390a15b565b6000620000fe60278362000166565b91506200010b8262000184565b604082019050919050565b620001218162000177565b82525050565b600060208201905081810360008301526200014281620000ef565b9050919050565b600060208201905062000160600083018462000116565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b612b0480620001e36000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80638129fc1c116100a2578063a5ad8ac611610071578063a5ad8ac6146102bb578063afc26911146102d7578063b724de3a146102f5578063ded8896b14610325578063f2fde38b1461034157610116565b80638129fc1c1461025957806382b7b500146102635780638456cb59146102935780638da5cb5b1461029d57610116565b80635893253c116100e95780635893253c146101a15780635c975abb146101d1578063715018a6146101ef578063788243d5146101f9578063810a9afa1461022957610116565b8063144ae8551461011b5780633f4ba83a146101375780634f896d4f14610141578063587a8cbf14610171575b600080fd5b6101356004803603810190610130919061146f565b61035d565b005b61013f6103c5565b005b61015b600480360381019061015691906113ee565b6103df565b60405161016891906119dc565b60405180910390f35b61018b600480360381019061018691906113ad565b610484565b6040516101989190611b40565b60405180910390f35b6101bb60048036038101906101b691906113ee565b6104b2565b6040516101c891906119dc565b60405180910390f35b6101d9610552565b6040516101e691906119a6565b60405180910390f35b6101f7610569565b005b610213600480360381019061020e91906113ee565b61057d565b604051610220919061198b565b60405180910390f35b610243600480360381019061023e91906113ee565b6105bb565b6040516102509190611b1e565b60405180910390f35b610261610739565b005b61027d60048036038101906102789190611368565b610887565b60405161028a9190611b40565b60405180910390f35b61029b6108b2565b005b6102a56108cc565b6040516102b2919061198b565b60405180910390f35b6102d560048036038101906102d091906113ee565b6108f6565b005b6102df610910565b6040516102ec9190611b40565b60405180910390f35b61030f600480360381019061030a9190611368565b610916565b60405161031c9190611b40565b60405180910390f35b61033f600480360381019061033a9190611417565b610a33565b005b61035b6004803603810190610356919061133f565b610caa565b005b610365610d2e565b80609a600084815260200190815260200160002081816103859190612a27565b9050507fa9c55ebaa1fada408bd72c2f0ea7c27f5444b105bcff12c5381baac912156ada82826040516103b9929190611b8d565b60405180910390a15050565b6103cd610d2e565b6103d5610dac565b6103dd610df5565b565b60606098600083815260200190815260200160002080546103ff906123b4565b80601f016020809104026020016040519081016040528092919081815260200182805461042b906123b4565b80156104785780601f1061044d57610100808354040283529160200191610478565b820191906000526020600020905b81548152906001019060200180831161045b57829003601f168201915b50505050509050919050565b6099818051602081018201805184825260208301602085012081835280955050505050506000915090505481565b609860205280600052604060002060009150905080546104d1906123b4565b80601f01602080910402602001604051908101604052809291908181526020018280546104fd906123b4565b801561054a5780601f1061051f5761010080835404028352916020019161054a565b820191906000526020600020905b81548152906001019060200180831161052d57829003601f168201915b505050505081565b6000606560009054906101000a900460ff16905090565b610571610d2e565b61057b6000610e58565b565b609a6020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081565b6105c3611175565b609a60008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805480602002602001604051908101604052809291908181526020016000905b8282101561072a578382906000526020600020906002020160405180604001604052908160008201805461068f906123b4565b80601f01602080910402602001604051908101604052809291908181526020018280546106bb906123b4565b80156107085780601f106106dd57610100808354040283529160200191610708565b820191906000526020600020905b8154815290600101906020018083116106eb57829003601f168201915b505050505081526020016001820154815250508152602001906001019061065c565b50505050815250509050919050565b60008060019054906101000a900460ff1615905080801561076a5750600160008054906101000a900460ff1660ff16105b80610797575061077930610f1e565b1580156107965750600160008054906101000a900460ff1660ff16145b5b6107d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107cd90611a9e565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610813576001600060016101000a81548160ff0219169083151502179055505b61081b610f41565b610823610f9a565b61082b610ff3565b80156108845760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498600160405161087b91906119c1565b60405180910390a15b50565b60006099838360405161089b929190611972565b908152602001604051809103902054905092915050565b6108ba610d2e565b6108c2611056565b6108ca610ff3565b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6108fe610d2e565b610906610dac565b8060978190555050565b60975481565b6000828260006099838360405161092e929190611972565b9081526020016040518091039020541461097d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097490611a7e565b60405180910390fd5b610985611056565b6000609754905085856098600084815260200190815260200160002091906109ae9291906111a5565b5080609987876040516109c2929190611972565b9081526020016040518091039020819055507f96a65efbb6991f67fc8a4c7550fcfd08f1968737d2f5adcded5cd937b3cc0f3d818787604051610a0793929190611b5b565b60405180910390a160976000815480929190610a2290612433565b919050555080935050505092915050565b8181600060998383604051610a49929190611972565b90815260200160405180910390205414610a98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8f90611a7e565b60405180910390fd5b610aa0611056565b6000609860008781526020019081526020016000208054610ac0906123b4565b90501480610b005750610ad16108cc565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610b3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3690611a1e565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16609a600087815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610be15750610bb26108cc565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610c20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1790611afe565b60405180910390fd5b8383609860008881526020019081526020016000209190610c429291906111a5565b508460998585604051610c56929190611972565b9081526020016040518091039020819055507f442b41840a10393534508176faee6f70b1870707dc24573b67d49f28cbac7f1c858585604051610c9b93929190611b5b565b60405180910390a15050505050565b610cb2610d2e565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1990611a3e565b60405180910390fd5b610d2b81610e58565b50565b610d366110a0565b73ffffffffffffffffffffffffffffffffffffffff16610d546108cc565b73ffffffffffffffffffffffffffffffffffffffff1614610daa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da190611abe565b60405180910390fd5b565b610db4610552565b610df3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dea906119fe565b60405180910390fd5b565b610dfd610dac565b6000606560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa610e416110a0565b604051610e4e919061198b565b60405180910390a1565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16610f90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8790611ade565b60405180910390fd5b610f986110a8565b565b600060019054906101000a900460ff16610fe9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe090611ade565b60405180910390fd5b610ff1611109565b565b610ffb611056565b6001606560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861103f6110a0565b60405161104c919061198b565b60405180910390a1565b61105e610552565b1561109e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109590611a5e565b60405180910390fd5b565b600033905090565b600060019054906101000a900460ff166110f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ee90611ade565b60405180910390fd5b6111076111026110a0565b610e58565b565b600060019054906101000a900460ff16611158576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114f90611ade565b60405180910390fd5b6000606560006101000a81548160ff021916908315150217905550565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b8280546111b1906123b4565b90600052602060002090601f0160209004810192826111d3576000855561121a565b82601f106111ec57803560ff191683800117855561121a565b8280016001018555821561121a579182015b828111156112195782358255916020019190600101906111fe565b5b509050611227919061122b565b5090565b5b8082111561124457600081600090555060010161122c565b5090565b600061125b61125684611cb4565b611c8f565b90508281526020810184848401111561127357600080fd5b61127e8482856122e6565b509392505050565b60008135905061129581612a9b565b92915050565b60008083601f8401126112ad57600080fd5b8235905067ffffffffffffffff8111156112c657600080fd5b6020830191508360018202830111156112de57600080fd5b9250929050565b600082601f8301126112f657600080fd5b8135611306848260208601611248565b91505092915050565b60006040828403121561132157600080fd5b81905092915050565b60008135905061133981612ab2565b92915050565b60006020828403121561135157600080fd5b600061135f84828501611286565b91505092915050565b6000806020838503121561137b57600080fd5b600083013567ffffffffffffffff81111561139557600080fd5b6113a18582860161129b565b92509250509250929050565b6000602082840312156113bf57600080fd5b600082013567ffffffffffffffff8111156113d957600080fd5b6113e5848285016112e5565b91505092915050565b60006020828403121561140057600080fd5b600061140e8482850161132a565b91505092915050565b60008060006040848603121561142c57600080fd5b600061143a8682870161132a565b935050602084013567ffffffffffffffff81111561145757600080fd5b6114638682870161129b565b92509250509250925092565b6000806040838503121561148257600080fd5b60006114908582860161132a565b925050602083013567ffffffffffffffff8111156114ad57600080fd5b6114b98582860161130f565b9150509250929050565b60006114cf83836118c8565b905092915050565b60006114e38383611917565b905092915050565b6114f48161202e565b82525050565b6115038161202e565b82525050565b60006115158385611d91565b93508360208402850161152784611cfc565b8060005b8781101561156b5784840389526115428284611f99565b61154c85826114c3565b945061155783611d77565b925060208a0199505060018101905061152b565b50829750879450505050509392505050565b600061158882611d4b565b6115928185611d91565b9350836020820285016115a485611d06565b8060005b858110156115e057848403895281516115c185826114d7565b94506115cc83611d84565b925060208a019950506001810190506115a8565b50829750879550505050505092915050565b6115fb81612040565b82525050565b61160a81612129565b82525050565b600061161c8385611da2565b93506116298385846122e6565b6116328361268a565b840190509392505050565b60006116498385611db3565b93506116568385846122e6565b61165f8361268a565b840190509392505050565b60006116768385611dc4565b93506116838385846122e6565b82840190509392505050565b600061169a82611d6c565b6116a48185611da2565b93506116b48185602086016122f5565b6116bd8161268a565b840191505092915050565b60006116d382611d6c565b6116dd8185611db3565b93506116ed8185602086016122f5565b6116f68161268a565b840191505092915050565b600061170e601483611db3565b915061171982612716565b602082019050919050565b6000611731601583611db3565b915061173c8261273f565b602082019050919050565b6000611754602683611db3565b915061175f82612768565b604082019050919050565b6000611777601083611db3565b9150611782826127b7565b602082019050919050565b600061179a601983611db3565b91506117a5826127e0565b602082019050919050565b60006117bd602e83611db3565b91506117c882612809565b604082019050919050565b60006117e0602083611db3565b91506117eb82612858565b602082019050919050565b6000611803602b83611db3565b915061180e82612881565b604082019050919050565b6000611826601983611db3565b9150611831826128d0565b602082019050919050565b60006040830161184f6000840184611ed4565b61185c60008601826114eb565b5061186a6020840184611eeb565b858303602087015261187d838284611509565b925050508091505092915050565b60006040830160008301516118a360008601826114eb565b50602083015184820360208601526118bb828261157d565b9150508091505092915050565b6000604083016118db6000840184611f42565b85830360008701526118ee838284611610565b925050506118ff6020840184611fbd565b61190c6020860182611954565b508091505092915050565b60006040830160008301518482036000860152611934828261168f565b91505060208301516119496020860182611954565b508091505092915050565b61195d8161206c565b82525050565b61196c8161206c565b82525050565b600061197f82848661166a565b91508190509392505050565b60006020820190506119a060008301846114fa565b92915050565b60006020820190506119bb60008301846115f2565b92915050565b60006020820190506119d66000830184611601565b92915050565b600060208201905081810360008301526119f681846116c8565b905092915050565b60006020820190508181036000830152611a1781611701565b9050919050565b60006020820190508181036000830152611a3781611724565b9050919050565b60006020820190508181036000830152611a5781611747565b9050919050565b60006020820190508181036000830152611a778161176a565b9050919050565b60006020820190508181036000830152611a978161178d565b9050919050565b60006020820190508181036000830152611ab7816117b0565b9050919050565b60006020820190508181036000830152611ad7816117d3565b9050919050565b60006020820190508181036000830152611af7816117f6565b9050919050565b60006020820190508181036000830152611b1781611819565b9050919050565b60006020820190508181036000830152611b38818461188b565b905092915050565b6000602082019050611b556000830184611963565b92915050565b6000604082019050611b706000830186611963565b8181036020830152611b8381848661163d565b9050949350505050565b6000604082019050611ba26000830185611963565b8181036020830152611bb4818461183c565b90509392505050565b60008083356001602003843603038112611bd657600080fd5b80840192508235915067ffffffffffffffff821115611bf457600080fd5b602083019250602082023603831315611c0c57600080fd5b509250929050565b60008083356001602003843603038112611c2d57600080fd5b80840192508235915067ffffffffffffffff821115611c4b57600080fd5b602083019250600182023603831315611c6357600080fd5b509250929050565b600082356001604003833603038112611c8357600080fd5b80830191505092915050565b6000611c99611caa565b9050611ca58282612402565b919050565b6000604051905090565b600067ffffffffffffffff821115611ccf57611cce612527565b5b611cd88261268a565b9050602081019050919050565b6000819050611cf5826002611fd4565b9050919050565b6000819050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b600082905092915050565b600081519050919050565b600081549050919050565b600082905092915050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6020841060008114611e2857601f841160018114611df857611df186856123e6565b8355611e22565b611e0183611d2b565b611e166020601f880104820160018301612091565b611e2087856128f9565b505b50611e71565b611e3182611d2b565b6020601f8701048101601f87168015611e5257611e518160018403612556565b5b611e646020601f890104840183612091565b6001886002021785555050505b5050505050565b6020831060008114611ec3576020851060008114611ea157611e9a86856123e6565b8355611ebd565b8360ff1916935083611eb284611d2b565b556001866002020183555b50611ecd565b6001856002020182555b5050505050565b6000611ee36020840184611286565b905092915050565b60008083356001602003843603038112611f0457600080fd5b83810192508235915060208301925067ffffffffffffffff821115611f2857600080fd5b602082023603841315611f3a57600080fd5b509250929050565b60008083356001602003843603038112611f5b57600080fd5b83810192508235915060208301925067ffffffffffffffff821115611f7f57600080fd5b600182023603841315611f9157600080fd5b509250929050565b600082356001604003833603038112611fb157600080fd5b82810191505092915050565b6000611fcc602084018461132a565b905092915050565b6000611fdf8261206c565b9150611fea8361206c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612023576120226124c9565b5b828202905092915050565b60006120398261204c565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b61208e600082612635565b50565b5b818110156120b0576120a56000826126fe565b600181019050612092565b5050565b5b818110156120d3576120c86000826126e0565b6002810190506120b5565b5050565b818110156120f5576120ea6000826126fe565b6001810190506120d7565b5050565b61210660008083016126c2565b6121146000600183016126fe565b50565b60006121228261213b565b9050919050565b600061213482612076565b9050919050565b60006121468261214d565b9050919050565b60006121588261204c565b9050919050565b600061216a8261206c565b9050919050565b61217b8383611d40565b61218581836125d1565b61218e83611cfc565b61219783611d16565b6000805b848110156121d0576121ad8488611c6b565b6121b8818486612a58565b6020850194506002840193505060018101905061219b565b5050505050505050565b6121e48383611d61565b67ffffffffffffffff8111156121fd576121fc612527565b5b61220782546123b4565b600080601f8411601f841117156122245761222185611d2b565b90505b601f831115612257576020601f85010481016020851015612243578190505b6122556020601f860104830182612091565b505b601f8411600181146122845760008515612272578388013590505b61227c86826123e6565b8755506122dc565b601f1985168260005b828110156122b257858a0135825560018201915060208601955060208101905061228d565b878310156122cf57858a01356122cb601f8a168261247c565b8355505b6001600289020189555050505b5050505050505050565b82818337600083830152505050565b60005b838110156123135780820151818401526020810190506122f8565b83811115612322576000848401525b50505050565b60008101600083018061233a816125a5565b905061234681846129e4565b505050600181016020830161235b8185611bbd565b612366818386612a07565b505050505050565b60008101600083016123808185611c14565b61238b818386612a17565b505050506001810160208301806123a1816125bb565b90506123ad8184612a35565b5050505050565b600060028204905060018216806123cc57607f821691505b602082108114156123e0576123df6124f8565b5b50919050565b60006123f2838361247c565b9150826002028217905092915050565b61240b8261268a565b810181811067ffffffffffffffff8211171561242a57612429612527565b5b80604052505050565b600061243e8261206c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612471576124706124c9565b5b600182019050919050565b600061248d600019846008026126b5565b1980831691505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6125867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff836020036008026126b5565b815481168255505050565b6000819050919050565b6000819050919050565b600081356125b281612a9b565b80915050919050565b600081356125c881612ab2565b80915050919050565b680100000000000000008211156125eb576125ea612527565b5b6125f481611d56565b828255808310156126305761260881611ce5565b61261184611ce5565b61261a84611d16565b81810183820161262a81836120b4565b50505050505b505050565b6801000000000000000082111561264f5761264e612527565b5b805461265a816123b4565b8084111561266f5761266e84828486611e78565b5b808410156126845761268384828486611dcf565b5b50505050565b6000601f19601f8301169050919050565b60008160001b9050919050565b600082821b905092915050565b600082821c905092915050565b600082146126d3576126d261249a565b5b6126dc81612083565b5050565b600082146126f1576126f061249a565b5b6126fa816120f9565b5050565b612706612ac9565b612711818484612a76565b505050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f6470696420616c72656164792075706772616465640000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b7f73747265616d20616c7265616479206861732061206450494400000000000000600082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f756e617574686f72697a65642064706964207570677261646500000000000000600082015250565b61290281611d2b565b61290d8382546123e6565b8083556000825550505050565b600073ffffffffffffffffffffffffffffffffffffffff61293a8461269b565b9350801983169250808416831791505092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61297c8461269b565b9350801983169250808416831791505092915050565b6000600883026129c27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826126a8565b6129cc86836126a8565b95508019841693508086168417925050509392505050565b6129ed82612117565b612a006129f982612591565b835461291a565b8255505050565b612a12838383612171565b505050565b612a228383836121da565b505050565b612a318282612328565b5050565b612a3e8261215f565b612a51612a4a8261259b565b8354612950565b8255505050565b8115612a6757612a6661249a565b5b612a71838261236e565b505050565b612a7f8361215f565b612a93612a8b8261259b565b848454612992565b825550505050565b612aa48161202e565b8114612aaf57600080fd5b50565b612abb8161206c565b8114612ac657600080fd5b50565b60009056fea26469706673582212204ecb8996bb39773559c74839e823c3312f16000e008595f44afba65328f7cb2464736f6c63430008040033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101165760003560e01c80638129fc1c116100a2578063a5ad8ac611610071578063a5ad8ac6146102bb578063afc26911146102d7578063b724de3a146102f5578063ded8896b14610325578063f2fde38b1461034157610116565b80638129fc1c1461025957806382b7b500146102635780638456cb59146102935780638da5cb5b1461029d57610116565b80635893253c116100e95780635893253c146101a15780635c975abb146101d1578063715018a6146101ef578063788243d5146101f9578063810a9afa1461022957610116565b8063144ae8551461011b5780633f4ba83a146101375780634f896d4f14610141578063587a8cbf14610171575b600080fd5b6101356004803603810190610130919061146f565b61035d565b005b61013f6103c5565b005b61015b600480360381019061015691906113ee565b6103df565b60405161016891906119dc565b60405180910390f35b61018b600480360381019061018691906113ad565b610484565b6040516101989190611b40565b60405180910390f35b6101bb60048036038101906101b691906113ee565b6104b2565b6040516101c891906119dc565b60405180910390f35b6101d9610552565b6040516101e691906119a6565b60405180910390f35b6101f7610569565b005b610213600480360381019061020e91906113ee565b61057d565b604051610220919061198b565b60405180910390f35b610243600480360381019061023e91906113ee565b6105bb565b6040516102509190611b1e565b60405180910390f35b610261610739565b005b61027d60048036038101906102789190611368565b610887565b60405161028a9190611b40565b60405180910390f35b61029b6108b2565b005b6102a56108cc565b6040516102b2919061198b565b60405180910390f35b6102d560048036038101906102d091906113ee565b6108f6565b005b6102df610910565b6040516102ec9190611b40565b60405180910390f35b61030f600480360381019061030a9190611368565b610916565b60405161031c9190611b40565b60405180910390f35b61033f600480360381019061033a9190611417565b610a33565b005b61035b6004803603810190610356919061133f565b610caa565b005b610365610d2e565b80609a600084815260200190815260200160002081816103859190612a27565b9050507fa9c55ebaa1fada408bd72c2f0ea7c27f5444b105bcff12c5381baac912156ada82826040516103b9929190611b8d565b60405180910390a15050565b6103cd610d2e565b6103d5610dac565b6103dd610df5565b565b60606098600083815260200190815260200160002080546103ff906123b4565b80601f016020809104026020016040519081016040528092919081815260200182805461042b906123b4565b80156104785780601f1061044d57610100808354040283529160200191610478565b820191906000526020600020905b81548152906001019060200180831161045b57829003601f168201915b50505050509050919050565b6099818051602081018201805184825260208301602085012081835280955050505050506000915090505481565b609860205280600052604060002060009150905080546104d1906123b4565b80601f01602080910402602001604051908101604052809291908181526020018280546104fd906123b4565b801561054a5780601f1061051f5761010080835404028352916020019161054a565b820191906000526020600020905b81548152906001019060200180831161052d57829003601f168201915b505050505081565b6000606560009054906101000a900460ff16905090565b610571610d2e565b61057b6000610e58565b565b609a6020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081565b6105c3611175565b609a60008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805480602002602001604051908101604052809291908181526020016000905b8282101561072a578382906000526020600020906002020160405180604001604052908160008201805461068f906123b4565b80601f01602080910402602001604051908101604052809291908181526020018280546106bb906123b4565b80156107085780601f106106dd57610100808354040283529160200191610708565b820191906000526020600020905b8154815290600101906020018083116106eb57829003601f168201915b505050505081526020016001820154815250508152602001906001019061065c565b50505050815250509050919050565b60008060019054906101000a900460ff1615905080801561076a5750600160008054906101000a900460ff1660ff16105b80610797575061077930610f1e565b1580156107965750600160008054906101000a900460ff1660ff16145b5b6107d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107cd90611a9e565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610813576001600060016101000a81548160ff0219169083151502179055505b61081b610f41565b610823610f9a565b61082b610ff3565b80156108845760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498600160405161087b91906119c1565b60405180910390a15b50565b60006099838360405161089b929190611972565b908152602001604051809103902054905092915050565b6108ba610d2e565b6108c2611056565b6108ca610ff3565b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6108fe610d2e565b610906610dac565b8060978190555050565b60975481565b6000828260006099838360405161092e929190611972565b9081526020016040518091039020541461097d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097490611a7e565b60405180910390fd5b610985611056565b6000609754905085856098600084815260200190815260200160002091906109ae9291906111a5565b5080609987876040516109c2929190611972565b9081526020016040518091039020819055507f96a65efbb6991f67fc8a4c7550fcfd08f1968737d2f5adcded5cd937b3cc0f3d818787604051610a0793929190611b5b565b60405180910390a160976000815480929190610a2290612433565b919050555080935050505092915050565b8181600060998383604051610a49929190611972565b90815260200160405180910390205414610a98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8f90611a7e565b60405180910390fd5b610aa0611056565b6000609860008781526020019081526020016000208054610ac0906123b4565b90501480610b005750610ad16108cc565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610b3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3690611a1e565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16609a600087815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610be15750610bb26108cc565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610c20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1790611afe565b60405180910390fd5b8383609860008881526020019081526020016000209190610c429291906111a5565b508460998585604051610c56929190611972565b9081526020016040518091039020819055507f442b41840a10393534508176faee6f70b1870707dc24573b67d49f28cbac7f1c858585604051610c9b93929190611b5b565b60405180910390a15050505050565b610cb2610d2e565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1990611a3e565b60405180910390fd5b610d2b81610e58565b50565b610d366110a0565b73ffffffffffffffffffffffffffffffffffffffff16610d546108cc565b73ffffffffffffffffffffffffffffffffffffffff1614610daa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da190611abe565b60405180910390fd5b565b610db4610552565b610df3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dea906119fe565b60405180910390fd5b565b610dfd610dac565b6000606560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa610e416110a0565b604051610e4e919061198b565b60405180910390a1565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16610f90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8790611ade565b60405180910390fd5b610f986110a8565b565b600060019054906101000a900460ff16610fe9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe090611ade565b60405180910390fd5b610ff1611109565b565b610ffb611056565b6001606560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861103f6110a0565b60405161104c919061198b565b60405180910390a1565b61105e610552565b1561109e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109590611a5e565b60405180910390fd5b565b600033905090565b600060019054906101000a900460ff166110f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ee90611ade565b60405180910390fd5b6111076111026110a0565b610e58565b565b600060019054906101000a900460ff16611158576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114f90611ade565b60405180910390fd5b6000606560006101000a81548160ff021916908315150217905550565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b8280546111b1906123b4565b90600052602060002090601f0160209004810192826111d3576000855561121a565b82601f106111ec57803560ff191683800117855561121a565b8280016001018555821561121a579182015b828111156112195782358255916020019190600101906111fe565b5b509050611227919061122b565b5090565b5b8082111561124457600081600090555060010161122c565b5090565b600061125b61125684611cb4565b611c8f565b90508281526020810184848401111561127357600080fd5b61127e8482856122e6565b509392505050565b60008135905061129581612a9b565b92915050565b60008083601f8401126112ad57600080fd5b8235905067ffffffffffffffff8111156112c657600080fd5b6020830191508360018202830111156112de57600080fd5b9250929050565b600082601f8301126112f657600080fd5b8135611306848260208601611248565b91505092915050565b60006040828403121561132157600080fd5b81905092915050565b60008135905061133981612ab2565b92915050565b60006020828403121561135157600080fd5b600061135f84828501611286565b91505092915050565b6000806020838503121561137b57600080fd5b600083013567ffffffffffffffff81111561139557600080fd5b6113a18582860161129b565b92509250509250929050565b6000602082840312156113bf57600080fd5b600082013567ffffffffffffffff8111156113d957600080fd5b6113e5848285016112e5565b91505092915050565b60006020828403121561140057600080fd5b600061140e8482850161132a565b91505092915050565b60008060006040848603121561142c57600080fd5b600061143a8682870161132a565b935050602084013567ffffffffffffffff81111561145757600080fd5b6114638682870161129b565b92509250509250925092565b6000806040838503121561148257600080fd5b60006114908582860161132a565b925050602083013567ffffffffffffffff8111156114ad57600080fd5b6114b98582860161130f565b9150509250929050565b60006114cf83836118c8565b905092915050565b60006114e38383611917565b905092915050565b6114f48161202e565b82525050565b6115038161202e565b82525050565b60006115158385611d91565b93508360208402850161152784611cfc565b8060005b8781101561156b5784840389526115428284611f99565b61154c85826114c3565b945061155783611d77565b925060208a0199505060018101905061152b565b50829750879450505050509392505050565b600061158882611d4b565b6115928185611d91565b9350836020820285016115a485611d06565b8060005b858110156115e057848403895281516115c185826114d7565b94506115cc83611d84565b925060208a019950506001810190506115a8565b50829750879550505050505092915050565b6115fb81612040565b82525050565b61160a81612129565b82525050565b600061161c8385611da2565b93506116298385846122e6565b6116328361268a565b840190509392505050565b60006116498385611db3565b93506116568385846122e6565b61165f8361268a565b840190509392505050565b60006116768385611dc4565b93506116838385846122e6565b82840190509392505050565b600061169a82611d6c565b6116a48185611da2565b93506116b48185602086016122f5565b6116bd8161268a565b840191505092915050565b60006116d382611d6c565b6116dd8185611db3565b93506116ed8185602086016122f5565b6116f68161268a565b840191505092915050565b600061170e601483611db3565b915061171982612716565b602082019050919050565b6000611731601583611db3565b915061173c8261273f565b602082019050919050565b6000611754602683611db3565b915061175f82612768565b604082019050919050565b6000611777601083611db3565b9150611782826127b7565b602082019050919050565b600061179a601983611db3565b91506117a5826127e0565b602082019050919050565b60006117bd602e83611db3565b91506117c882612809565b604082019050919050565b60006117e0602083611db3565b91506117eb82612858565b602082019050919050565b6000611803602b83611db3565b915061180e82612881565b604082019050919050565b6000611826601983611db3565b9150611831826128d0565b602082019050919050565b60006040830161184f6000840184611ed4565b61185c60008601826114eb565b5061186a6020840184611eeb565b858303602087015261187d838284611509565b925050508091505092915050565b60006040830160008301516118a360008601826114eb565b50602083015184820360208601526118bb828261157d565b9150508091505092915050565b6000604083016118db6000840184611f42565b85830360008701526118ee838284611610565b925050506118ff6020840184611fbd565b61190c6020860182611954565b508091505092915050565b60006040830160008301518482036000860152611934828261168f565b91505060208301516119496020860182611954565b508091505092915050565b61195d8161206c565b82525050565b61196c8161206c565b82525050565b600061197f82848661166a565b91508190509392505050565b60006020820190506119a060008301846114fa565b92915050565b60006020820190506119bb60008301846115f2565b92915050565b60006020820190506119d66000830184611601565b92915050565b600060208201905081810360008301526119f681846116c8565b905092915050565b60006020820190508181036000830152611a1781611701565b9050919050565b60006020820190508181036000830152611a3781611724565b9050919050565b60006020820190508181036000830152611a5781611747565b9050919050565b60006020820190508181036000830152611a778161176a565b9050919050565b60006020820190508181036000830152611a978161178d565b9050919050565b60006020820190508181036000830152611ab7816117b0565b9050919050565b60006020820190508181036000830152611ad7816117d3565b9050919050565b60006020820190508181036000830152611af7816117f6565b9050919050565b60006020820190508181036000830152611b1781611819565b9050919050565b60006020820190508181036000830152611b38818461188b565b905092915050565b6000602082019050611b556000830184611963565b92915050565b6000604082019050611b706000830186611963565b8181036020830152611b8381848661163d565b9050949350505050565b6000604082019050611ba26000830185611963565b8181036020830152611bb4818461183c565b90509392505050565b60008083356001602003843603038112611bd657600080fd5b80840192508235915067ffffffffffffffff821115611bf457600080fd5b602083019250602082023603831315611c0c57600080fd5b509250929050565b60008083356001602003843603038112611c2d57600080fd5b80840192508235915067ffffffffffffffff821115611c4b57600080fd5b602083019250600182023603831315611c6357600080fd5b509250929050565b600082356001604003833603038112611c8357600080fd5b80830191505092915050565b6000611c99611caa565b9050611ca58282612402565b919050565b6000604051905090565b600067ffffffffffffffff821115611ccf57611cce612527565b5b611cd88261268a565b9050602081019050919050565b6000819050611cf5826002611fd4565b9050919050565b6000819050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b600082905092915050565b600081519050919050565b600081549050919050565b600082905092915050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6020841060008114611e2857601f841160018114611df857611df186856123e6565b8355611e22565b611e0183611d2b565b611e166020601f880104820160018301612091565b611e2087856128f9565b505b50611e71565b611e3182611d2b565b6020601f8701048101601f87168015611e5257611e518160018403612556565b5b611e646020601f890104840183612091565b6001886002021785555050505b5050505050565b6020831060008114611ec3576020851060008114611ea157611e9a86856123e6565b8355611ebd565b8360ff1916935083611eb284611d2b565b556001866002020183555b50611ecd565b6001856002020182555b5050505050565b6000611ee36020840184611286565b905092915050565b60008083356001602003843603038112611f0457600080fd5b83810192508235915060208301925067ffffffffffffffff821115611f2857600080fd5b602082023603841315611f3a57600080fd5b509250929050565b60008083356001602003843603038112611f5b57600080fd5b83810192508235915060208301925067ffffffffffffffff821115611f7f57600080fd5b600182023603841315611f9157600080fd5b509250929050565b600082356001604003833603038112611fb157600080fd5b82810191505092915050565b6000611fcc602084018461132a565b905092915050565b6000611fdf8261206c565b9150611fea8361206c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612023576120226124c9565b5b828202905092915050565b60006120398261204c565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b61208e600082612635565b50565b5b818110156120b0576120a56000826126fe565b600181019050612092565b5050565b5b818110156120d3576120c86000826126e0565b6002810190506120b5565b5050565b818110156120f5576120ea6000826126fe565b6001810190506120d7565b5050565b61210660008083016126c2565b6121146000600183016126fe565b50565b60006121228261213b565b9050919050565b600061213482612076565b9050919050565b60006121468261214d565b9050919050565b60006121588261204c565b9050919050565b600061216a8261206c565b9050919050565b61217b8383611d40565b61218581836125d1565b61218e83611cfc565b61219783611d16565b6000805b848110156121d0576121ad8488611c6b565b6121b8818486612a58565b6020850194506002840193505060018101905061219b565b5050505050505050565b6121e48383611d61565b67ffffffffffffffff8111156121fd576121fc612527565b5b61220782546123b4565b600080601f8411601f841117156122245761222185611d2b565b90505b601f831115612257576020601f85010481016020851015612243578190505b6122556020601f860104830182612091565b505b601f8411600181146122845760008515612272578388013590505b61227c86826123e6565b8755506122dc565b601f1985168260005b828110156122b257858a0135825560018201915060208601955060208101905061228d565b878310156122cf57858a01356122cb601f8a168261247c565b8355505b6001600289020189555050505b5050505050505050565b82818337600083830152505050565b60005b838110156123135780820151818401526020810190506122f8565b83811115612322576000848401525b50505050565b60008101600083018061233a816125a5565b905061234681846129e4565b505050600181016020830161235b8185611bbd565b612366818386612a07565b505050505050565b60008101600083016123808185611c14565b61238b818386612a17565b505050506001810160208301806123a1816125bb565b90506123ad8184612a35565b5050505050565b600060028204905060018216806123cc57607f821691505b602082108114156123e0576123df6124f8565b5b50919050565b60006123f2838361247c565b9150826002028217905092915050565b61240b8261268a565b810181811067ffffffffffffffff8211171561242a57612429612527565b5b80604052505050565b600061243e8261206c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612471576124706124c9565b5b600182019050919050565b600061248d600019846008026126b5565b1980831691505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6125867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff836020036008026126b5565b815481168255505050565b6000819050919050565b6000819050919050565b600081356125b281612a9b565b80915050919050565b600081356125c881612ab2565b80915050919050565b680100000000000000008211156125eb576125ea612527565b5b6125f481611d56565b828255808310156126305761260881611ce5565b61261184611ce5565b61261a84611d16565b81810183820161262a81836120b4565b50505050505b505050565b6801000000000000000082111561264f5761264e612527565b5b805461265a816123b4565b8084111561266f5761266e84828486611e78565b5b808410156126845761268384828486611dcf565b5b50505050565b6000601f19601f8301169050919050565b60008160001b9050919050565b600082821b905092915050565b600082821c905092915050565b600082146126d3576126d261249a565b5b6126dc81612083565b5050565b600082146126f1576126f061249a565b5b6126fa816120f9565b5050565b612706612ac9565b612711818484612a76565b505050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f6470696420616c72656164792075706772616465640000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b7f73747265616d20616c7265616479206861732061206450494400000000000000600082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f756e617574686f72697a65642064706964207570677261646500000000000000600082015250565b61290281611d2b565b61290d8382546123e6565b8083556000825550505050565b600073ffffffffffffffffffffffffffffffffffffffff61293a8461269b565b9350801983169250808416831791505092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61297c8461269b565b9350801983169250808416831791505092915050565b6000600883026129c27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826126a8565b6129cc86836126a8565b95508019841693508086168417925050509392505050565b6129ed82612117565b612a006129f982612591565b835461291a565b8255505050565b612a12838383612171565b505050565b612a228383836121da565b505050565b612a318282612328565b5050565b612a3e8261215f565b612a51612a4a8261259b565b8354612950565b8255505050565b8115612a6757612a6661249a565b5b612a71838261236e565b505050565b612a7f8361215f565b612a93612a8b8261259b565b848454612992565b825550505050565b612aa48161202e565b8114612aaf57600080fd5b50565b612abb8161206c565b8114612ac657600080fd5b50565b60009056fea26469706673582212204ecb8996bb39773559c74839e823c3312f16000e008595f44afba65328f7cb2464736f6c63430008040033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/desci-contracts/contracts/DpidAliasRegistry.sol b/desci-contracts/contracts/DpidAliasRegistry.sol index fc9aa2ff6..bea07ed21 100644 --- a/desci-contracts/contracts/DpidAliasRegistry.sol +++ b/desci-contracts/contracts/DpidAliasRegistry.sol @@ -9,13 +9,10 @@ contract DpidAliasRegistry is Initializable, OwnableUpgradeable, PausableUpgrade // Incremented on each dPID mint uint256 public nextDpid; - // When this is set to true, further edits of the legacy entries are blocked - bool public migrationFrozen; - // dpid => codex streamID (resolve dPID) mapping(uint256 => string) public registry; - // codex streamID => dpid (check for existing aliases) + // codex streamID => dpid (check for existing alias) mapping(string => uint256) public reverseRegistry; /// @custom:oz-upgrades-unsafe-allow constructor @@ -162,6 +159,14 @@ contract DpidAliasRegistry is Initializable, OwnableUpgradeable, PausableUpgrade * which is why the legacy entires are kept to ensure continued deterministic * resolution of versions as they were originally created. * + * Contract owner can bypass these two limitations, allowing both mending of + * incorrect upgrades and automating upgrades for legacy dPID holders. + * Associated quirk: when re-upgrading a dPID, the overwritten streamID will + * still be present in the reverse mapping, preventing it to be assigned a dPID. + * This stream is assumed to regardlessly be incorrect, because a re-upgrade + * was chosen. + * + * * @param dpid the dPID to upgrade * @param streamId the stream representing that same dPID */ @@ -169,11 +174,19 @@ contract DpidAliasRegistry is Initializable, OwnableUpgradeable, PausableUpgrade uint256 dpid, string calldata streamId ) public onlyUnaliasedStream(streamId) whenNotPaused { - // Assert that this dPID has not been set in the main registry - require(bytes(registry[dpid]).length == 0, "dpid already upgraded"); - - // Assert that the tx was made by the owner of the imported entry - require(legacy[dpid].owner == msg.sender, "unauthorized dpid upgrade"); + // Assert that this dPID has not been set in the main registry. + // Allow contract owner bypass to fix broken upgrades. + require( + bytes(registry[dpid]).length == 0 || msg.sender == owner(), + "dpid already upgraded" + ); + + // Assert that the tx was made by the owner of the imported entry. + // Allow contract owner bypass to automate upgrades. + require( + legacy[dpid].owner == msg.sender || msg.sender == owner(), + "unauthorized dpid upgrade" + ); // Reclaim old dpid registry[dpid] = streamId; @@ -211,21 +224,10 @@ contract DpidAliasRegistry is Initializable, OwnableUpgradeable, PausableUpgrade uint256 dpid, LegacyDpidEntry calldata entry ) public onlyOwner { - require(migrationFrozen == false, "migration is frozen"); legacy[dpid] = entry; emit ImportedDpid(dpid, entry); } - /** - * This permanently blocks importing/overwriting legacy dPID entries, - * effectively freezing history. - * - * Note: this is irreversible - */ - function freezeMigration() public onlyOwner { - migrationFrozen = true; - } - /** * When the contract is paused, the owner can correct the next dPID. * This is useful for making a seamless switch between new and old diff --git a/desci-contracts/hardhat.config.ts b/desci-contracts/hardhat.config.ts index 0bbe69f02..393ef0e54 100644 --- a/desci-contracts/hardhat.config.ts +++ b/desci-contracts/hardhat.config.ts @@ -41,13 +41,6 @@ module.exports = { mnemonic: process.env.MNEMONIC || DEFAULT_MNEMONIC, }, }, - optimism: { - url: "http://127.0.0.1:8545", - chainId: 17, - accounts: { - mnemonic: process.env.MNEMONIC || DEFAULT_MNEMONIC, - }, - }, ganache: { chainId: 1337, saveDeployments: true, @@ -104,6 +97,30 @@ module.exports = { }, gasPrice: "auto", }, + optimism: { + chainId: 10, + live: true, + saveDeployments: true, + url: "https://reverse-proxy-dev.desci.com/rpc_opt_mainnet", + accounts: process.env.PRIVATE_KEY + ? [ process.env.PRIVATE_KEY ] + : { + mnemonic: process.env.MNEMONIC || DEFAULT_MNEMONIC, + }, + gasPrice: "auto", + }, + optimismSepolia: { + chainId: 11155420, + live: true, + saveDeployments: true, + url: "https://opt-sepolia.g.alchemy.com/v2/vr-m5h17EAZPdtt88rpvkMy8kwo1-iig", //https://reverse-proxy-dev.desci.com/rpc_opt_sepolia", + accounts: process.env.PRIVATE_KEY + ? [ process.env.PRIVATE_KEY ] + : { + mnemonic: process.env.MNEMONIC || DEFAULT_MNEMONIC, + }, + gasPrice: "auto", + }, }, react: { providers: ["hardhat", "web3modal"], diff --git a/desci-contracts/migration-data/aliasRegistry_dev__Mon,_03_Jun_2024_11:21:28_GMT.json b/desci-contracts/migration-data/aliasRegistry_dev_Wed,_12_Jun_2024_13:23:15_GMT.json similarity index 99% rename from desci-contracts/migration-data/aliasRegistry_dev__Mon,_03_Jun_2024_11:21:28_GMT.json rename to desci-contracts/migration-data/aliasRegistry_dev_Wed,_12_Jun_2024_13:23:15_GMT.json index bfec26fcd..33a9c0d27 100644 --- a/desci-contracts/migration-data/aliasRegistry_dev__Mon,_03_Jun_2024_11:21:28_GMT.json +++ b/desci-contracts/migration-data/aliasRegistry_dev_Wed,_12_Jun_2024_13:23:15_GMT.json @@ -1,5 +1,5 @@ { - "address": "0x7906AC53C2F59d0Eb36dC126336322d25Da15B62", + "address": "0x2Ea4Ee2Af79495e045EBe925aC67d755520877e7", "dpids": [ { "dpid": "0", @@ -4873,6 +4873,32 @@ } ], "validationError": false + }, + { + "dpid": "247", + "owner": "0x371e269bff1aaA342b43b74Cf1Ad9789BaF183F7", + "versions": [ + { + "cid": "bafkreiakdqljwmvvzkmwjrgkto4meyyghrl3tigocnoapejdquuiigy2si", + "time": 1718012544 + }, + { + "cid": "bafkreiehku747l4loyvugbfby55tig4qjgyj66ujbcpuohucktx6dg72k4", + "time": 1718015760 + } + ], + "validationError": false + }, + { + "dpid": "248", + "owner": "0x371e269bff1aaA342b43b74Cf1Ad9789BaF183F7", + "versions": [ + { + "cid": "bafkreic65zfq5ryxtmxtei3264qafrmcdyysxnmxl2krldoaitrjymogta", + "time": 1718017368 + } + ], + "validationError": false } ] } \ No newline at end of file diff --git a/desci-contracts/package.json b/desci-contracts/package.json index ed04dd72b..f4c99c90e 100644 --- a/desci-contracts/package.json +++ b/desci-contracts/package.json @@ -1,7 +1,7 @@ { "name": "@desci-labs/desci-contracts", "description": "Smart contracts implementing DeSci Nodes on-chain state and logic", - "version": "0.2.5-rc5", + "version": "0.2.5-rc6", "license": "MIT", "scripts": { "test": "hardhat clean && hardhat test", @@ -11,7 +11,7 @@ "docker:push": "docker tag desci-hardhat-node:latest 523044037273.dkr.ecr.us-east-2.amazonaws.com/desci-hardhat-node:latest && docker push 523044037273.dkr.ecr.us-east-2.amazonaws.com/desci-hardhat-node:latest", "deploy:ganache": "yarn stubHardhatAnalytics && hardhat run scripts/deployResearchObject.js --network ganache", "deploy:dpid:ganache": "yarn stubHardhatAnalytics && hardhat run scripts/deployDpidRegistry.js --network ganache", - "deploy:alias:ganache": "yarn stubHardhatAnalytics && export FIRST_DPID=500 && hardhat run scripts/deployDpidAliasRegistry.js --network ganache", + "deploy:alias:ganache": "yarn stubHardhatAnalytics && export FIRST_DPID=500 && hardhat run scripts/alias-registry/deployDpidAliasRegistry.js --network ganache", "migrate": "hardhat run scripts/migrateToNewContract.js --network ganache && touch ./.openzeppelin/migration-complete.json", "graph:codegen": "graph codegen subgraph/subgraph.yaml -o subgraph/generated", "graph:build": "graph build subgraph/subgraph.yaml", diff --git a/desci-contracts/scripts/deployDpidAliasRegistry.js b/desci-contracts/scripts/alias-registry/deployDpidAliasRegistry.js similarity index 100% rename from desci-contracts/scripts/deployDpidAliasRegistry.js rename to desci-contracts/scripts/alias-registry/deployDpidAliasRegistry.js diff --git a/desci-contracts/scripts/migrateToAliasRegistry.mjs b/desci-contracts/scripts/alias-registry/migrateToAliasRegistry.mjs similarity index 100% rename from desci-contracts/scripts/migrateToAliasRegistry.mjs rename to desci-contracts/scripts/alias-registry/migrateToAliasRegistry.mjs diff --git a/desci-contracts/scripts/syncAliasRegistryMigration.mjs b/desci-contracts/scripts/alias-registry/syncAliasRegistryMigration.mjs similarity index 100% rename from desci-contracts/scripts/syncAliasRegistryMigration.mjs rename to desci-contracts/scripts/alias-registry/syncAliasRegistryMigration.mjs diff --git a/desci-contracts/test/DpidAliasRegistry.ts b/desci-contracts/test/DpidAliasRegistry.ts index 737e7be9a..74681d9c8 100644 --- a/desci-contracts/test/DpidAliasRegistry.ts +++ b/desci-contracts/test/DpidAliasRegistry.ts @@ -206,8 +206,9 @@ describe("dPID", () => { describe("upgrade", () => { let successReceipt: ContractReceipt; const STREAM_C = "kjzl6kcym7w8y7i5ugaq9a3vlm7hhuaf4bpl5o5qykeh4qtsa12c6rb5ekw6ccc"; + const STREAM_D = "kjzl6kcym7w8y7i5ugaq9a3vlm7hhuaf4bpl5o5qykeh4qtsa12c6rb5ekw6ddd"; - it("can NOT be done by others", async () => { + it("can NOT be done by randos", async () => { const doUpgrade = async () => await dpidAliasRegistry .connect(user2) .upgradeDpid(0, STREAM_C); @@ -215,14 +216,6 @@ describe("dPID", () => { await expect(doUpgrade()).to.be.rejectedWith("unauthorized dpid upgrade"); }); - it("can NOT be done by contract owner", async () => { - const doUpgrade = async () => await dpidAliasRegistry - .connect(deployerAddress) - .upgradeDpid(0, STREAM_C); - - await expect(doUpgrade()).to.be.rejectedWith("unauthorized dpid upgrade"); - }); - it("can be done by dpid owner", async () => { const tx = await dpidAliasRegistry.upgradeDpid(0, STREAM_C); successReceipt = await tx.wait(); @@ -238,6 +231,14 @@ describe("dPID", () => { await expect(doSecondUpgrade()).to.be.rejectedWith("dpid already upgraded"); }); + it("can be fixed by contract owner", async () => { + const doUpgrade = async () => await dpidAliasRegistry + .connect(deployerAddress) + .upgradeDpid(0, STREAM_C); + + await expect(doUpgrade()).to.not.be.rejectedWith("unauthorized dpid upgrade"); + }); + it("emits an event", async () => { const event = successReceipt.events![0]; const [ dpid, streamId ] = event.args!; diff --git a/desci-contracts/typechain-types/DpidAliasRegistry.ts b/desci-contracts/typechain-types/DpidAliasRegistry.ts index 7c100924d..0bb0599a9 100644 --- a/desci-contracts/typechain-types/DpidAliasRegistry.ts +++ b/desci-contracts/typechain-types/DpidAliasRegistry.ts @@ -43,12 +43,10 @@ export interface DpidAliasRegistryInterface extends utils.Interface { contractName: "DpidAliasRegistry"; functions: { "find(string)": FunctionFragment; - "freezeMigration()": FunctionFragment; "importLegacyDpid(uint256,(address,(string,uint256)[]))": FunctionFragment; "initialize()": FunctionFragment; "legacy(uint256)": FunctionFragment; "legacyLookup(uint256)": FunctionFragment; - "migrationFrozen()": FunctionFragment; "mintDpid(string)": FunctionFragment; "nextDpid()": FunctionFragment; "owner()": FunctionFragment; @@ -65,10 +63,6 @@ export interface DpidAliasRegistryInterface extends utils.Interface { }; encodeFunctionData(functionFragment: "find", values: [string]): string; - encodeFunctionData( - functionFragment: "freezeMigration", - values?: undefined - ): string; encodeFunctionData( functionFragment: "importLegacyDpid", values: [BigNumberish, DpidAliasRegistry.LegacyDpidEntryStruct] @@ -85,10 +79,6 @@ export interface DpidAliasRegistryInterface extends utils.Interface { functionFragment: "legacyLookup", values: [BigNumberish] ): string; - encodeFunctionData( - functionFragment: "migrationFrozen", - values?: undefined - ): string; encodeFunctionData(functionFragment: "mintDpid", values: [string]): string; encodeFunctionData(functionFragment: "nextDpid", values?: undefined): string; encodeFunctionData(functionFragment: "owner", values?: undefined): string; @@ -125,10 +115,6 @@ export interface DpidAliasRegistryInterface extends utils.Interface { ): string; decodeFunctionResult(functionFragment: "find", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "freezeMigration", - data: BytesLike - ): Result; decodeFunctionResult( functionFragment: "importLegacyDpid", data: BytesLike @@ -139,10 +125,6 @@ export interface DpidAliasRegistryInterface extends utils.Interface { functionFragment: "legacyLookup", data: BytesLike ): Result; - decodeFunctionResult( - functionFragment: "migrationFrozen", - data: BytesLike - ): Result; decodeFunctionResult(functionFragment: "mintDpid", data: BytesLike): Result; decodeFunctionResult(functionFragment: "nextDpid", data: BytesLike): Result; decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; @@ -262,10 +244,6 @@ export interface DpidAliasRegistry extends BaseContract { functions: { find(streamId: string, overrides?: CallOverrides): Promise<[BigNumber]>; - freezeMigration( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - importLegacyDpid( dpid: BigNumberish, entry: DpidAliasRegistry.LegacyDpidEntryStruct, @@ -286,8 +264,6 @@ export interface DpidAliasRegistry extends BaseContract { overrides?: CallOverrides ): Promise<[DpidAliasRegistry.LegacyDpidEntryStructOutput]>; - migrationFrozen(overrides?: CallOverrides): Promise<[boolean]>; - mintDpid( streamId: string, overrides?: Overrides & { from?: string | Promise } @@ -339,10 +315,6 @@ export interface DpidAliasRegistry extends BaseContract { find(streamId: string, overrides?: CallOverrides): Promise; - freezeMigration( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - importLegacyDpid( dpid: BigNumberish, entry: DpidAliasRegistry.LegacyDpidEntryStruct, @@ -360,8 +332,6 @@ export interface DpidAliasRegistry extends BaseContract { overrides?: CallOverrides ): Promise; - migrationFrozen(overrides?: CallOverrides): Promise; - mintDpid( streamId: string, overrides?: Overrides & { from?: string | Promise } @@ -410,8 +380,6 @@ export interface DpidAliasRegistry extends BaseContract { callStatic: { find(streamId: string, overrides?: CallOverrides): Promise; - freezeMigration(overrides?: CallOverrides): Promise; - importLegacyDpid( dpid: BigNumberish, entry: DpidAliasRegistry.LegacyDpidEntryStruct, @@ -427,8 +395,6 @@ export interface DpidAliasRegistry extends BaseContract { overrides?: CallOverrides ): Promise; - migrationFrozen(overrides?: CallOverrides): Promise; - mintDpid(streamId: string, overrides?: CallOverrides): Promise; nextDpid(overrides?: CallOverrides): Promise; @@ -510,10 +476,6 @@ export interface DpidAliasRegistry extends BaseContract { estimateGas: { find(streamId: string, overrides?: CallOverrides): Promise; - freezeMigration( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - importLegacyDpid( dpid: BigNumberish, entry: DpidAliasRegistry.LegacyDpidEntryStruct, @@ -531,8 +493,6 @@ export interface DpidAliasRegistry extends BaseContract { overrides?: CallOverrides ): Promise; - migrationFrozen(overrides?: CallOverrides): Promise; - mintDpid( streamId: string, overrides?: Overrides & { from?: string | Promise } @@ -588,10 +548,6 @@ export interface DpidAliasRegistry extends BaseContract { overrides?: CallOverrides ): Promise; - freezeMigration( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - importLegacyDpid( dpid: BigNumberish, entry: DpidAliasRegistry.LegacyDpidEntryStruct, @@ -612,8 +568,6 @@ export interface DpidAliasRegistry extends BaseContract { overrides?: CallOverrides ): Promise; - migrationFrozen(overrides?: CallOverrides): Promise; - mintDpid( streamId: string, overrides?: Overrides & { from?: string | Promise } diff --git a/desci-contracts/typechain-types/factories/DpidAliasRegistry__factory.ts b/desci-contracts/typechain-types/factories/DpidAliasRegistry__factory.ts index a3f5dca0b..00181c90c 100644 --- a/desci-contracts/typechain-types/factories/DpidAliasRegistry__factory.ts +++ b/desci-contracts/typechain-types/factories/DpidAliasRegistry__factory.ts @@ -172,13 +172,6 @@ const _abi = [ stateMutability: "view", type: "function", }, - { - inputs: [], - name: "freezeMigration", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, { inputs: [ { @@ -290,19 +283,6 @@ const _abi = [ stateMutability: "view", type: "function", }, - { - inputs: [], - name: "migrationFrozen", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, { inputs: [ { @@ -486,7 +466,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b50620000226200002860201b60201c565b620001d3565b600060019054906101000a900460ff16156200007b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000729062000127565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff161015620000ed5760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff604051620000e4919062000149565b60405180910390a15b565b6000620000fe60278362000166565b91506200010b8262000184565b604082019050919050565b620001218162000177565b82525050565b600060208201905081810360008301526200014281620000ef565b9050919050565b600060208201905062000160600083018462000116565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b612bc280620001e36000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c80638129fc1c116100ad578063afc2691111610071578063afc26911146102f7578063b724de3a14610315578063b9e2924114610345578063ded8896b14610363578063f2fde38b1461037f5761012c565b80638129fc1c1461027957806382b7b500146102835780638456cb59146102b35780638da5cb5b146102bd578063a5ad8ac6146102db5761012c565b80635893253c116100f45780635893253c146101c15780635c975abb146101f1578063715018a61461020f578063788243d514610219578063810a9afa146102495761012c565b80630d70b3aa14610131578063144ae8551461013b5780633f4ba83a146101575780634f896d4f14610161578063587a8cbf14610191575b600080fd5b61013961039b565b005b610155600480360381019061015091906114c1565b6103c0565b005b61015f61047e565b005b61017b60048036038101906101769190611440565b610498565b6040516101889190611a51565b60405180910390f35b6101ab60048036038101906101a691906113ff565b61053d565b6040516101b89190611bd5565b60405180910390f35b6101db60048036038101906101d69190611440565b61056b565b6040516101e89190611a51565b60405180910390f35b6101f961060b565b6040516102069190611a1b565b60405180910390f35b610217610622565b005b610233600480360381019061022e9190611440565b610636565b6040516102409190611a00565b60405180910390f35b610263600480360381019061025e9190611440565b610674565b6040516102709190611bb3565b60405180910390f35b6102816107f2565b005b61029d600480360381019061029891906113ba565b610940565b6040516102aa9190611bd5565b60405180910390f35b6102bb61096b565b005b6102c5610985565b6040516102d29190611a00565b60405180910390f35b6102f560048036038101906102f09190611440565b6109af565b005b6102ff6109c9565b60405161030c9190611bd5565b60405180910390f35b61032f600480360381019061032a91906113ba565b6109cf565b60405161033c9190611bd5565b60405180910390f35b61034d610aec565b60405161035a9190611a1b565b60405180910390f35b61037d60048036038101906103789190611469565b610aff565b005b61039960048036038101906103949190611391565b610cfc565b005b6103a3610d80565b6001609860006101000a81548160ff021916908315150217905550565b6103c8610d80565b60001515609860009054906101000a900460ff1615151461041e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161041590611ad3565b60405180910390fd5b80609b6000848152602001908152602001600020818161043e9190612ae5565b9050507fa9c55ebaa1fada408bd72c2f0ea7c27f5444b105bcff12c5381baac912156ada8282604051610472929190611c22565b60405180910390a15050565b610486610d80565b61048e610dfe565b610496610e47565b565b60606099600083815260200190815260200160002080546104b890612449565b80601f01602080910402602001604051908101604052809291908181526020018280546104e490612449565b80156105315780601f1061050657610100808354040283529160200191610531565b820191906000526020600020905b81548152906001019060200180831161051457829003601f168201915b50505050509050919050565b609a818051602081018201805184825260208301602085012081835280955050505050506000915090505481565b6099602052806000526040600020600091509050805461058a90612449565b80601f01602080910402602001604051908101604052809291908181526020018280546105b690612449565b80156106035780601f106105d857610100808354040283529160200191610603565b820191906000526020600020905b8154815290600101906020018083116105e657829003601f168201915b505050505081565b6000606560009054906101000a900460ff16905090565b61062a610d80565b6106346000610eaa565b565b609b6020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081565b61067c6111c7565b609b60008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805480602002602001604051908101604052809291908181526020016000905b828210156107e3578382906000526020600020906002020160405180604001604052908160008201805461074890612449565b80601f016020809104026020016040519081016040528092919081815260200182805461077490612449565b80156107c15780601f10610796576101008083540402835291602001916107c1565b820191906000526020600020905b8154815290600101906020018083116107a457829003601f168201915b5050505050815260200160018201548152505081526020019060010190610715565b50505050815250509050919050565b60008060019054906101000a900460ff161590508080156108235750600160008054906101000a900460ff1660ff16105b80610850575061083230610f70565b15801561084f5750600160008054906101000a900460ff1660ff16145b5b61088f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088690611b33565b60405180910390fd5b60016000806101000a81548160ff021916908360ff16021790555080156108cc576001600060016101000a81548160ff0219169083151502179055505b6108d4610f93565b6108dc610fec565b6108e4611045565b801561093d5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516109349190611a36565b60405180910390a15b50565b6000609a83836040516109549291906119e7565b908152602001604051809103902054905092915050565b610973610d80565b61097b6110a8565b610983611045565b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6109b7610d80565b6109bf610dfe565b8060978190555050565b60975481565b600082826000609a83836040516109e79291906119e7565b90815260200160405180910390205414610a36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2d90611b13565b60405180910390fd5b610a3e6110a8565b600060975490508585609960008481526020019081526020016000209190610a679291906111f7565b5080609a8787604051610a7b9291906119e7565b9081526020016040518091039020819055507f96a65efbb6991f67fc8a4c7550fcfd08f1968737d2f5adcded5cd937b3cc0f3d818787604051610ac093929190611bf0565b60405180910390a160976000815480929190610adb906124c8565b919050555080935050505092915050565b609860009054906101000a900460ff1681565b81816000609a8383604051610b159291906119e7565b90815260200160405180910390205414610b64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5b90611b13565b60405180910390fd5b610b6c6110a8565b6000609960008781526020019081526020016000208054610b8c90612449565b905014610bce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc590611a93565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16609b600087815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6990611b93565b60405180910390fd5b8383609960008881526020019081526020016000209190610c949291906111f7565b5084609a8585604051610ca89291906119e7565b9081526020016040518091039020819055507f442b41840a10393534508176faee6f70b1870707dc24573b67d49f28cbac7f1c858585604051610ced93929190611bf0565b60405180910390a15050505050565b610d04610d80565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6b90611ab3565b60405180910390fd5b610d7d81610eaa565b50565b610d886110f2565b73ffffffffffffffffffffffffffffffffffffffff16610da6610985565b73ffffffffffffffffffffffffffffffffffffffff1614610dfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df390611b53565b60405180910390fd5b565b610e0661060b565b610e45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3c90611a73565b60405180910390fd5b565b610e4f610dfe565b6000606560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa610e936110f2565b604051610ea09190611a00565b60405180910390a1565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16610fe2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd990611b73565b60405180910390fd5b610fea6110fa565b565b600060019054906101000a900460ff1661103b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103290611b73565b60405180910390fd5b61104361115b565b565b61104d6110a8565b6001606560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586110916110f2565b60405161109e9190611a00565b60405180910390a1565b6110b061060b565b156110f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e790611af3565b60405180910390fd5b565b600033905090565b600060019054906101000a900460ff16611149576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114090611b73565b60405180910390fd5b6111596111546110f2565b610eaa565b565b600060019054906101000a900460ff166111aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a190611b73565b60405180910390fd5b6000606560006101000a81548160ff021916908315150217905550565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b82805461120390612449565b90600052602060002090601f016020900481019282611225576000855561126c565b82601f1061123e57803560ff191683800117855561126c565b8280016001018555821561126c579182015b8281111561126b578235825591602001919060010190611250565b5b509050611279919061127d565b5090565b5b8082111561129657600081600090555060010161127e565b5090565b60006112ad6112a884611d49565b611d24565b9050828152602081018484840111156112c557600080fd5b6112d084828561237b565b509392505050565b6000813590506112e781612b59565b92915050565b60008083601f8401126112ff57600080fd5b8235905067ffffffffffffffff81111561131857600080fd5b60208301915083600182028301111561133057600080fd5b9250929050565b600082601f83011261134857600080fd5b813561135884826020860161129a565b91505092915050565b60006040828403121561137357600080fd5b81905092915050565b60008135905061138b81612b70565b92915050565b6000602082840312156113a357600080fd5b60006113b1848285016112d8565b91505092915050565b600080602083850312156113cd57600080fd5b600083013567ffffffffffffffff8111156113e757600080fd5b6113f3858286016112ed565b92509250509250929050565b60006020828403121561141157600080fd5b600082013567ffffffffffffffff81111561142b57600080fd5b61143784828501611337565b91505092915050565b60006020828403121561145257600080fd5b60006114608482850161137c565b91505092915050565b60008060006040848603121561147e57600080fd5b600061148c8682870161137c565b935050602084013567ffffffffffffffff8111156114a957600080fd5b6114b5868287016112ed565b92509250509250925092565b600080604083850312156114d457600080fd5b60006114e28582860161137c565b925050602083013567ffffffffffffffff8111156114ff57600080fd5b61150b85828601611361565b9150509250929050565b6000611521838361193d565b905092915050565b6000611535838361198c565b905092915050565b611546816120c3565b82525050565b611555816120c3565b82525050565b60006115678385611e26565b93508360208402850161157984611d91565b8060005b878110156115bd578484038952611594828461202e565b61159e8582611515565b94506115a983611e0c565b925060208a0199505060018101905061157d565b50829750879450505050509392505050565b60006115da82611de0565b6115e48185611e26565b9350836020820285016115f685611d9b565b8060005b8581101561163257848403895281516116138582611529565b945061161e83611e19565b925060208a019950506001810190506115fa565b50829750879550505050505092915050565b61164d816120d5565b82525050565b61165c816121be565b82525050565b600061166e8385611e37565b935061167b83858461237b565b6116848361271f565b840190509392505050565b600061169b8385611e48565b93506116a883858461237b565b6116b18361271f565b840190509392505050565b60006116c88385611e59565b93506116d583858461237b565b82840190509392505050565b60006116ec82611e01565b6116f68185611e37565b935061170681856020860161238a565b61170f8161271f565b840191505092915050565b600061172582611e01565b61172f8185611e48565b935061173f81856020860161238a565b6117488161271f565b840191505092915050565b6000611760601483611e48565b915061176b826127ab565b602082019050919050565b6000611783601583611e48565b915061178e826127d4565b602082019050919050565b60006117a6602683611e48565b91506117b1826127fd565b604082019050919050565b60006117c9601383611e48565b91506117d48261284c565b602082019050919050565b60006117ec601083611e48565b91506117f782612875565b602082019050919050565b600061180f601983611e48565b915061181a8261289e565b602082019050919050565b6000611832602e83611e48565b915061183d826128c7565b604082019050919050565b6000611855602083611e48565b915061186082612916565b602082019050919050565b6000611878602b83611e48565b91506118838261293f565b604082019050919050565b600061189b601983611e48565b91506118a68261298e565b602082019050919050565b6000604083016118c46000840184611f69565b6118d1600086018261153d565b506118df6020840184611f80565b85830360208701526118f283828461155b565b925050508091505092915050565b6000604083016000830151611918600086018261153d565b506020830151848203602086015261193082826115cf565b9150508091505092915050565b6000604083016119506000840184611fd7565b8583036000870152611963838284611662565b925050506119746020840184612052565b61198160208601826119c9565b508091505092915050565b600060408301600083015184820360008601526119a982826116e1565b91505060208301516119be60208601826119c9565b508091505092915050565b6119d281612101565b82525050565b6119e181612101565b82525050565b60006119f48284866116bc565b91508190509392505050565b6000602082019050611a15600083018461154c565b92915050565b6000602082019050611a306000830184611644565b92915050565b6000602082019050611a4b6000830184611653565b92915050565b60006020820190508181036000830152611a6b818461171a565b905092915050565b60006020820190508181036000830152611a8c81611753565b9050919050565b60006020820190508181036000830152611aac81611776565b9050919050565b60006020820190508181036000830152611acc81611799565b9050919050565b60006020820190508181036000830152611aec816117bc565b9050919050565b60006020820190508181036000830152611b0c816117df565b9050919050565b60006020820190508181036000830152611b2c81611802565b9050919050565b60006020820190508181036000830152611b4c81611825565b9050919050565b60006020820190508181036000830152611b6c81611848565b9050919050565b60006020820190508181036000830152611b8c8161186b565b9050919050565b60006020820190508181036000830152611bac8161188e565b9050919050565b60006020820190508181036000830152611bcd8184611900565b905092915050565b6000602082019050611bea60008301846119d8565b92915050565b6000604082019050611c0560008301866119d8565b8181036020830152611c1881848661168f565b9050949350505050565b6000604082019050611c3760008301856119d8565b8181036020830152611c4981846118b1565b90509392505050565b60008083356001602003843603038112611c6b57600080fd5b80840192508235915067ffffffffffffffff821115611c8957600080fd5b602083019250602082023603831315611ca157600080fd5b509250929050565b60008083356001602003843603038112611cc257600080fd5b80840192508235915067ffffffffffffffff821115611ce057600080fd5b602083019250600182023603831315611cf857600080fd5b509250929050565b600082356001604003833603038112611d1857600080fd5b80830191505092915050565b6000611d2e611d3f565b9050611d3a8282612497565b919050565b6000604051905090565b600067ffffffffffffffff821115611d6457611d636125bc565b5b611d6d8261271f565b9050602081019050919050565b6000819050611d8a826002612069565b9050919050565b6000819050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b600082905092915050565b600081519050919050565b600081549050919050565b600082905092915050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6020841060008114611ebd57601f841160018114611e8d57611e86868561247b565b8355611eb7565b611e9683611dc0565b611eab6020601f880104820160018301612126565b611eb587856129b7565b505b50611f06565b611ec682611dc0565b6020601f8701048101601f87168015611ee757611ee681600184036125eb565b5b611ef96020601f890104840183612126565b6001886002021785555050505b5050505050565b6020831060008114611f58576020851060008114611f3657611f2f868561247b565b8355611f52565b8360ff1916935083611f4784611dc0565b556001866002020183555b50611f62565b6001856002020182555b5050505050565b6000611f7860208401846112d8565b905092915050565b60008083356001602003843603038112611f9957600080fd5b83810192508235915060208301925067ffffffffffffffff821115611fbd57600080fd5b602082023603841315611fcf57600080fd5b509250929050565b60008083356001602003843603038112611ff057600080fd5b83810192508235915060208301925067ffffffffffffffff82111561201457600080fd5b60018202360384131561202657600080fd5b509250929050565b60008235600160400383360303811261204657600080fd5b82810191505092915050565b6000612061602084018461137c565b905092915050565b600061207482612101565b915061207f83612101565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156120b8576120b761255e565b5b828202905092915050565b60006120ce826120e1565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6121236000826126ca565b50565b5b818110156121455761213a600082612793565b600181019050612127565b5050565b5b818110156121685761215d600082612775565b60028101905061214a565b5050565b8181101561218a5761217f600082612793565b60018101905061216c565b5050565b61219b6000808301612757565b6121a9600060018301612793565b50565b60006121b7826121d0565b9050919050565b60006121c98261210b565b9050919050565b60006121db826121e2565b9050919050565b60006121ed826120e1565b9050919050565b60006121ff82612101565b9050919050565b6122108383611dd5565b61221a8183612666565b61222383611d91565b61222c83611dab565b6000805b84811015612265576122428488611d00565b61224d818486612b16565b60208501945060028401935050600181019050612230565b5050505050505050565b6122798383611df6565b67ffffffffffffffff811115612292576122916125bc565b5b61229c8254612449565b600080601f8411601f841117156122b9576122b685611dc0565b90505b601f8311156122ec576020601f850104810160208510156122d8578190505b6122ea6020601f860104830182612126565b505b601f8411600181146123195760008515612307578388013590505b612311868261247b565b875550612371565b601f1985168260005b8281101561234757858a01358255600182019150602086019550602081019050612322565b8783101561236457858a0135612360601f8a1682612511565b8355505b6001600289020189555050505b5050505050505050565b82818337600083830152505050565b60005b838110156123a857808201518184015260208101905061238d565b838111156123b7576000848401525b50505050565b6000810160008301806123cf8161263a565b90506123db8184612aa2565b50505060018101602083016123f08185611c52565b6123fb818386612ac5565b505050505050565b60008101600083016124158185611ca9565b612420818386612ad5565b5050505060018101602083018061243681612650565b90506124428184612af3565b5050505050565b6000600282049050600182168061246157607f821691505b602082108114156124755761247461258d565b5b50919050565b60006124878383612511565b9150826002028217905092915050565b6124a08261271f565b810181811067ffffffffffffffff821117156124bf576124be6125bc565b5b80604052505050565b60006124d382612101565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156125065761250561255e565b5b600182019050919050565b60006125226000198460080261274a565b1980831691505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61261b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8360200360080261274a565b815481168255505050565b6000819050919050565b6000819050919050565b6000813561264781612b59565b80915050919050565b6000813561265d81612b70565b80915050919050565b680100000000000000008211156126805761267f6125bc565b5b61268981611deb565b828255808310156126c55761269d81611d7a565b6126a684611d7a565b6126af84611dab565b8181018382016126bf8183612149565b50505050505b505050565b680100000000000000008211156126e4576126e36125bc565b5b80546126ef81612449565b808411156127045761270384828486611f0d565b5b808410156127195761271884828486611e64565b5b50505050565b6000601f19601f8301169050919050565b60008160001b9050919050565b600082821b905092915050565b600082821c905092915050565b600082146127685761276761252f565b5b61277181612118565b5050565b600082146127865761278561252f565b5b61278f8161218e565b5050565b61279b612b87565b6127a6818484612b34565b505050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f6470696420616c72656164792075706772616465640000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f6d6967726174696f6e2069732066726f7a656e00000000000000000000000000600082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b7f73747265616d20616c7265616479206861732061206450494400000000000000600082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f756e617574686f72697a65642064706964207570677261646500000000000000600082015250565b6129c081611dc0565b6129cb83825461247b565b8083556000825550505050565b600073ffffffffffffffffffffffffffffffffffffffff6129f884612730565b9350801983169250808416831791505092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612a3a84612730565b9350801983169250808416831791505092915050565b600060088302612a807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261273d565b612a8a868361273d565b95508019841693508086168417925050509392505050565b612aab826121ac565b612abe612ab782612626565b83546129d8565b8255505050565b612ad0838383612206565b505050565b612ae083838361226f565b505050565b612aef82826123bd565b5050565b612afc826121f4565b612b0f612b0882612630565b8354612a0e565b8255505050565b8115612b2557612b2461252f565b5b612b2f8382612403565b505050565b612b3d836121f4565b612b51612b4982612630565b848454612a50565b825550505050565b612b62816120c3565b8114612b6d57600080fd5b50565b612b7981612101565b8114612b8457600080fd5b50565b60009056fea264697066735822122025321e8b3f610ad6d87a9b3497059176ff710a769edbe017d76013391f10763b64736f6c63430008040033"; + "0x60806040523480156200001157600080fd5b50620000226200002860201b60201c565b620001d3565b600060019054906101000a900460ff16156200007b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000729062000127565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff161015620000ed5760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff604051620000e4919062000149565b60405180910390a15b565b6000620000fe60278362000166565b91506200010b8262000184565b604082019050919050565b620001218162000177565b82525050565b600060208201905081810360008301526200014281620000ef565b9050919050565b600060208201905062000160600083018462000116565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b612b0480620001e36000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80638129fc1c116100a2578063a5ad8ac611610071578063a5ad8ac6146102bb578063afc26911146102d7578063b724de3a146102f5578063ded8896b14610325578063f2fde38b1461034157610116565b80638129fc1c1461025957806382b7b500146102635780638456cb59146102935780638da5cb5b1461029d57610116565b80635893253c116100e95780635893253c146101a15780635c975abb146101d1578063715018a6146101ef578063788243d5146101f9578063810a9afa1461022957610116565b8063144ae8551461011b5780633f4ba83a146101375780634f896d4f14610141578063587a8cbf14610171575b600080fd5b6101356004803603810190610130919061146f565b61035d565b005b61013f6103c5565b005b61015b600480360381019061015691906113ee565b6103df565b60405161016891906119dc565b60405180910390f35b61018b600480360381019061018691906113ad565b610484565b6040516101989190611b40565b60405180910390f35b6101bb60048036038101906101b691906113ee565b6104b2565b6040516101c891906119dc565b60405180910390f35b6101d9610552565b6040516101e691906119a6565b60405180910390f35b6101f7610569565b005b610213600480360381019061020e91906113ee565b61057d565b604051610220919061198b565b60405180910390f35b610243600480360381019061023e91906113ee565b6105bb565b6040516102509190611b1e565b60405180910390f35b610261610739565b005b61027d60048036038101906102789190611368565b610887565b60405161028a9190611b40565b60405180910390f35b61029b6108b2565b005b6102a56108cc565b6040516102b2919061198b565b60405180910390f35b6102d560048036038101906102d091906113ee565b6108f6565b005b6102df610910565b6040516102ec9190611b40565b60405180910390f35b61030f600480360381019061030a9190611368565b610916565b60405161031c9190611b40565b60405180910390f35b61033f600480360381019061033a9190611417565b610a33565b005b61035b6004803603810190610356919061133f565b610caa565b005b610365610d2e565b80609a600084815260200190815260200160002081816103859190612a27565b9050507fa9c55ebaa1fada408bd72c2f0ea7c27f5444b105bcff12c5381baac912156ada82826040516103b9929190611b8d565b60405180910390a15050565b6103cd610d2e565b6103d5610dac565b6103dd610df5565b565b60606098600083815260200190815260200160002080546103ff906123b4565b80601f016020809104026020016040519081016040528092919081815260200182805461042b906123b4565b80156104785780601f1061044d57610100808354040283529160200191610478565b820191906000526020600020905b81548152906001019060200180831161045b57829003601f168201915b50505050509050919050565b6099818051602081018201805184825260208301602085012081835280955050505050506000915090505481565b609860205280600052604060002060009150905080546104d1906123b4565b80601f01602080910402602001604051908101604052809291908181526020018280546104fd906123b4565b801561054a5780601f1061051f5761010080835404028352916020019161054a565b820191906000526020600020905b81548152906001019060200180831161052d57829003601f168201915b505050505081565b6000606560009054906101000a900460ff16905090565b610571610d2e565b61057b6000610e58565b565b609a6020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081565b6105c3611175565b609a60008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805480602002602001604051908101604052809291908181526020016000905b8282101561072a578382906000526020600020906002020160405180604001604052908160008201805461068f906123b4565b80601f01602080910402602001604051908101604052809291908181526020018280546106bb906123b4565b80156107085780601f106106dd57610100808354040283529160200191610708565b820191906000526020600020905b8154815290600101906020018083116106eb57829003601f168201915b505050505081526020016001820154815250508152602001906001019061065c565b50505050815250509050919050565b60008060019054906101000a900460ff1615905080801561076a5750600160008054906101000a900460ff1660ff16105b80610797575061077930610f1e565b1580156107965750600160008054906101000a900460ff1660ff16145b5b6107d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107cd90611a9e565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610813576001600060016101000a81548160ff0219169083151502179055505b61081b610f41565b610823610f9a565b61082b610ff3565b80156108845760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498600160405161087b91906119c1565b60405180910390a15b50565b60006099838360405161089b929190611972565b908152602001604051809103902054905092915050565b6108ba610d2e565b6108c2611056565b6108ca610ff3565b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6108fe610d2e565b610906610dac565b8060978190555050565b60975481565b6000828260006099838360405161092e929190611972565b9081526020016040518091039020541461097d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097490611a7e565b60405180910390fd5b610985611056565b6000609754905085856098600084815260200190815260200160002091906109ae9291906111a5565b5080609987876040516109c2929190611972565b9081526020016040518091039020819055507f96a65efbb6991f67fc8a4c7550fcfd08f1968737d2f5adcded5cd937b3cc0f3d818787604051610a0793929190611b5b565b60405180910390a160976000815480929190610a2290612433565b919050555080935050505092915050565b8181600060998383604051610a49929190611972565b90815260200160405180910390205414610a98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8f90611a7e565b60405180910390fd5b610aa0611056565b6000609860008781526020019081526020016000208054610ac0906123b4565b90501480610b005750610ad16108cc565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610b3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3690611a1e565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16609a600087815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610be15750610bb26108cc565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610c20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1790611afe565b60405180910390fd5b8383609860008881526020019081526020016000209190610c429291906111a5565b508460998585604051610c56929190611972565b9081526020016040518091039020819055507f442b41840a10393534508176faee6f70b1870707dc24573b67d49f28cbac7f1c858585604051610c9b93929190611b5b565b60405180910390a15050505050565b610cb2610d2e565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1990611a3e565b60405180910390fd5b610d2b81610e58565b50565b610d366110a0565b73ffffffffffffffffffffffffffffffffffffffff16610d546108cc565b73ffffffffffffffffffffffffffffffffffffffff1614610daa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da190611abe565b60405180910390fd5b565b610db4610552565b610df3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dea906119fe565b60405180910390fd5b565b610dfd610dac565b6000606560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa610e416110a0565b604051610e4e919061198b565b60405180910390a1565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16610f90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8790611ade565b60405180910390fd5b610f986110a8565b565b600060019054906101000a900460ff16610fe9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe090611ade565b60405180910390fd5b610ff1611109565b565b610ffb611056565b6001606560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861103f6110a0565b60405161104c919061198b565b60405180910390a1565b61105e610552565b1561109e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109590611a5e565b60405180910390fd5b565b600033905090565b600060019054906101000a900460ff166110f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ee90611ade565b60405180910390fd5b6111076111026110a0565b610e58565b565b600060019054906101000a900460ff16611158576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114f90611ade565b60405180910390fd5b6000606560006101000a81548160ff021916908315150217905550565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b8280546111b1906123b4565b90600052602060002090601f0160209004810192826111d3576000855561121a565b82601f106111ec57803560ff191683800117855561121a565b8280016001018555821561121a579182015b828111156112195782358255916020019190600101906111fe565b5b509050611227919061122b565b5090565b5b8082111561124457600081600090555060010161122c565b5090565b600061125b61125684611cb4565b611c8f565b90508281526020810184848401111561127357600080fd5b61127e8482856122e6565b509392505050565b60008135905061129581612a9b565b92915050565b60008083601f8401126112ad57600080fd5b8235905067ffffffffffffffff8111156112c657600080fd5b6020830191508360018202830111156112de57600080fd5b9250929050565b600082601f8301126112f657600080fd5b8135611306848260208601611248565b91505092915050565b60006040828403121561132157600080fd5b81905092915050565b60008135905061133981612ab2565b92915050565b60006020828403121561135157600080fd5b600061135f84828501611286565b91505092915050565b6000806020838503121561137b57600080fd5b600083013567ffffffffffffffff81111561139557600080fd5b6113a18582860161129b565b92509250509250929050565b6000602082840312156113bf57600080fd5b600082013567ffffffffffffffff8111156113d957600080fd5b6113e5848285016112e5565b91505092915050565b60006020828403121561140057600080fd5b600061140e8482850161132a565b91505092915050565b60008060006040848603121561142c57600080fd5b600061143a8682870161132a565b935050602084013567ffffffffffffffff81111561145757600080fd5b6114638682870161129b565b92509250509250925092565b6000806040838503121561148257600080fd5b60006114908582860161132a565b925050602083013567ffffffffffffffff8111156114ad57600080fd5b6114b98582860161130f565b9150509250929050565b60006114cf83836118c8565b905092915050565b60006114e38383611917565b905092915050565b6114f48161202e565b82525050565b6115038161202e565b82525050565b60006115158385611d91565b93508360208402850161152784611cfc565b8060005b8781101561156b5784840389526115428284611f99565b61154c85826114c3565b945061155783611d77565b925060208a0199505060018101905061152b565b50829750879450505050509392505050565b600061158882611d4b565b6115928185611d91565b9350836020820285016115a485611d06565b8060005b858110156115e057848403895281516115c185826114d7565b94506115cc83611d84565b925060208a019950506001810190506115a8565b50829750879550505050505092915050565b6115fb81612040565b82525050565b61160a81612129565b82525050565b600061161c8385611da2565b93506116298385846122e6565b6116328361268a565b840190509392505050565b60006116498385611db3565b93506116568385846122e6565b61165f8361268a565b840190509392505050565b60006116768385611dc4565b93506116838385846122e6565b82840190509392505050565b600061169a82611d6c565b6116a48185611da2565b93506116b48185602086016122f5565b6116bd8161268a565b840191505092915050565b60006116d382611d6c565b6116dd8185611db3565b93506116ed8185602086016122f5565b6116f68161268a565b840191505092915050565b600061170e601483611db3565b915061171982612716565b602082019050919050565b6000611731601583611db3565b915061173c8261273f565b602082019050919050565b6000611754602683611db3565b915061175f82612768565b604082019050919050565b6000611777601083611db3565b9150611782826127b7565b602082019050919050565b600061179a601983611db3565b91506117a5826127e0565b602082019050919050565b60006117bd602e83611db3565b91506117c882612809565b604082019050919050565b60006117e0602083611db3565b91506117eb82612858565b602082019050919050565b6000611803602b83611db3565b915061180e82612881565b604082019050919050565b6000611826601983611db3565b9150611831826128d0565b602082019050919050565b60006040830161184f6000840184611ed4565b61185c60008601826114eb565b5061186a6020840184611eeb565b858303602087015261187d838284611509565b925050508091505092915050565b60006040830160008301516118a360008601826114eb565b50602083015184820360208601526118bb828261157d565b9150508091505092915050565b6000604083016118db6000840184611f42565b85830360008701526118ee838284611610565b925050506118ff6020840184611fbd565b61190c6020860182611954565b508091505092915050565b60006040830160008301518482036000860152611934828261168f565b91505060208301516119496020860182611954565b508091505092915050565b61195d8161206c565b82525050565b61196c8161206c565b82525050565b600061197f82848661166a565b91508190509392505050565b60006020820190506119a060008301846114fa565b92915050565b60006020820190506119bb60008301846115f2565b92915050565b60006020820190506119d66000830184611601565b92915050565b600060208201905081810360008301526119f681846116c8565b905092915050565b60006020820190508181036000830152611a1781611701565b9050919050565b60006020820190508181036000830152611a3781611724565b9050919050565b60006020820190508181036000830152611a5781611747565b9050919050565b60006020820190508181036000830152611a778161176a565b9050919050565b60006020820190508181036000830152611a978161178d565b9050919050565b60006020820190508181036000830152611ab7816117b0565b9050919050565b60006020820190508181036000830152611ad7816117d3565b9050919050565b60006020820190508181036000830152611af7816117f6565b9050919050565b60006020820190508181036000830152611b1781611819565b9050919050565b60006020820190508181036000830152611b38818461188b565b905092915050565b6000602082019050611b556000830184611963565b92915050565b6000604082019050611b706000830186611963565b8181036020830152611b8381848661163d565b9050949350505050565b6000604082019050611ba26000830185611963565b8181036020830152611bb4818461183c565b90509392505050565b60008083356001602003843603038112611bd657600080fd5b80840192508235915067ffffffffffffffff821115611bf457600080fd5b602083019250602082023603831315611c0c57600080fd5b509250929050565b60008083356001602003843603038112611c2d57600080fd5b80840192508235915067ffffffffffffffff821115611c4b57600080fd5b602083019250600182023603831315611c6357600080fd5b509250929050565b600082356001604003833603038112611c8357600080fd5b80830191505092915050565b6000611c99611caa565b9050611ca58282612402565b919050565b6000604051905090565b600067ffffffffffffffff821115611ccf57611cce612527565b5b611cd88261268a565b9050602081019050919050565b6000819050611cf5826002611fd4565b9050919050565b6000819050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b600082905092915050565b600081519050919050565b600081549050919050565b600082905092915050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6020841060008114611e2857601f841160018114611df857611df186856123e6565b8355611e22565b611e0183611d2b565b611e166020601f880104820160018301612091565b611e2087856128f9565b505b50611e71565b611e3182611d2b565b6020601f8701048101601f87168015611e5257611e518160018403612556565b5b611e646020601f890104840183612091565b6001886002021785555050505b5050505050565b6020831060008114611ec3576020851060008114611ea157611e9a86856123e6565b8355611ebd565b8360ff1916935083611eb284611d2b565b556001866002020183555b50611ecd565b6001856002020182555b5050505050565b6000611ee36020840184611286565b905092915050565b60008083356001602003843603038112611f0457600080fd5b83810192508235915060208301925067ffffffffffffffff821115611f2857600080fd5b602082023603841315611f3a57600080fd5b509250929050565b60008083356001602003843603038112611f5b57600080fd5b83810192508235915060208301925067ffffffffffffffff821115611f7f57600080fd5b600182023603841315611f9157600080fd5b509250929050565b600082356001604003833603038112611fb157600080fd5b82810191505092915050565b6000611fcc602084018461132a565b905092915050565b6000611fdf8261206c565b9150611fea8361206c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612023576120226124c9565b5b828202905092915050565b60006120398261204c565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b61208e600082612635565b50565b5b818110156120b0576120a56000826126fe565b600181019050612092565b5050565b5b818110156120d3576120c86000826126e0565b6002810190506120b5565b5050565b818110156120f5576120ea6000826126fe565b6001810190506120d7565b5050565b61210660008083016126c2565b6121146000600183016126fe565b50565b60006121228261213b565b9050919050565b600061213482612076565b9050919050565b60006121468261214d565b9050919050565b60006121588261204c565b9050919050565b600061216a8261206c565b9050919050565b61217b8383611d40565b61218581836125d1565b61218e83611cfc565b61219783611d16565b6000805b848110156121d0576121ad8488611c6b565b6121b8818486612a58565b6020850194506002840193505060018101905061219b565b5050505050505050565b6121e48383611d61565b67ffffffffffffffff8111156121fd576121fc612527565b5b61220782546123b4565b600080601f8411601f841117156122245761222185611d2b565b90505b601f831115612257576020601f85010481016020851015612243578190505b6122556020601f860104830182612091565b505b601f8411600181146122845760008515612272578388013590505b61227c86826123e6565b8755506122dc565b601f1985168260005b828110156122b257858a0135825560018201915060208601955060208101905061228d565b878310156122cf57858a01356122cb601f8a168261247c565b8355505b6001600289020189555050505b5050505050505050565b82818337600083830152505050565b60005b838110156123135780820151818401526020810190506122f8565b83811115612322576000848401525b50505050565b60008101600083018061233a816125a5565b905061234681846129e4565b505050600181016020830161235b8185611bbd565b612366818386612a07565b505050505050565b60008101600083016123808185611c14565b61238b818386612a17565b505050506001810160208301806123a1816125bb565b90506123ad8184612a35565b5050505050565b600060028204905060018216806123cc57607f821691505b602082108114156123e0576123df6124f8565b5b50919050565b60006123f2838361247c565b9150826002028217905092915050565b61240b8261268a565b810181811067ffffffffffffffff8211171561242a57612429612527565b5b80604052505050565b600061243e8261206c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612471576124706124c9565b5b600182019050919050565b600061248d600019846008026126b5565b1980831691505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6125867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff836020036008026126b5565b815481168255505050565b6000819050919050565b6000819050919050565b600081356125b281612a9b565b80915050919050565b600081356125c881612ab2565b80915050919050565b680100000000000000008211156125eb576125ea612527565b5b6125f481611d56565b828255808310156126305761260881611ce5565b61261184611ce5565b61261a84611d16565b81810183820161262a81836120b4565b50505050505b505050565b6801000000000000000082111561264f5761264e612527565b5b805461265a816123b4565b8084111561266f5761266e84828486611e78565b5b808410156126845761268384828486611dcf565b5b50505050565b6000601f19601f8301169050919050565b60008160001b9050919050565b600082821b905092915050565b600082821c905092915050565b600082146126d3576126d261249a565b5b6126dc81612083565b5050565b600082146126f1576126f061249a565b5b6126fa816120f9565b5050565b612706612ac9565b612711818484612a76565b505050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f6470696420616c72656164792075706772616465640000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b7f73747265616d20616c7265616479206861732061206450494400000000000000600082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f756e617574686f72697a65642064706964207570677261646500000000000000600082015250565b61290281611d2b565b61290d8382546123e6565b8083556000825550505050565b600073ffffffffffffffffffffffffffffffffffffffff61293a8461269b565b9350801983169250808416831791505092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61297c8461269b565b9350801983169250808416831791505092915050565b6000600883026129c27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826126a8565b6129cc86836126a8565b95508019841693508086168417925050509392505050565b6129ed82612117565b612a006129f982612591565b835461291a565b8255505050565b612a12838383612171565b505050565b612a228383836121da565b505050565b612a318282612328565b5050565b612a3e8261215f565b612a51612a4a8261259b565b8354612950565b8255505050565b8115612a6757612a6661249a565b5b612a71838261236e565b505050565b612a7f8361215f565b612a93612a8b8261259b565b848454612992565b825550505050565b612aa48161202e565b8114612aaf57600080fd5b50565b612abb8161206c565b8114612ac657600080fd5b50565b60009056fea26469706673582212204ecb8996bb39773559c74839e823c3312f16000e008595f44afba65328f7cb2464736f6c63430008040033"; type DpidAliasRegistryConstructorParams = | [signer?: Signer] From bd265ad0a060c6419ab8ba414f806868bdc28449 Mon Sep 17 00:00:00 2001 From: m0ar Date: Thu, 6 Jun 2024 16:10:46 +0200 Subject: [PATCH 15/34] prisma: add dpidAlias field to node table --- desci-server/prisma/schema.prisma | 1 + 1 file changed, 1 insertion(+) diff --git a/desci-server/prisma/schema.prisma b/desci-server/prisma/schema.prisma index 9890e9c0f..a0d8f88d6 100755 --- a/desci-server/prisma/schema.prisma +++ b/desci-server/prisma/schema.prisma @@ -46,6 +46,7 @@ model Node { DistributionPdfs DistributionPdfs[] PdfPreviews PdfPreviews[] DoiRecord DoiRecord[] + dpidAlias Int? @@index([ownerId]) @@index([uuid]) From a60ebe9663bdf32e7cc0fe03bca34ad1711dfe15 Mon Sep 17 00:00:00 2001 From: m0ar Date: Fri, 7 Jun 2024 15:04:18 +0200 Subject: [PATCH 16/34] add REGISTRY_OWNER_PKEY to env example --- .env.example | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.env.example b/.env.example index 37ff994f3..3bddd15af 100755 --- a/.env.example +++ b/.env.example @@ -69,6 +69,10 @@ AWS_SECRET_ACCESS_KEY= # for faucet HOT_WALLET_KEY= + +# for upgrading legacy dPID's (default is ganache account #1 for local dev) +REGISTRY_OWNER_PKEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 + # https://cso-classifier.internal CSO_CLASSIFIER_API= # vscode runnable From 29b79006def03a6751928e5cee29652620c9c651 Mon Sep 17 00:00:00 2001 From: m0ar Date: Mon, 10 Jun 2024 15:40:50 +0200 Subject: [PATCH 17/34] nodeslib: add getters for contract functions (resolve/find/owner/legacy etc) --- nodes-lib/src/chain.ts | 52 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 48 insertions(+), 4 deletions(-) diff --git a/nodes-lib/src/chain.ts b/nodes-lib/src/chain.ts index 35d0294ee..4fe6501d6 100644 --- a/nodes-lib/src/chain.ts +++ b/nodes-lib/src/chain.ts @@ -1,4 +1,4 @@ -import { BigNumber, ContractReceipt, Signer, providers, utils } from "ethers"; +import { BigNumber, ContractReceipt, Signer, ethers, providers, utils } from "ethers"; import { convertUUIDToHex, convertCidTo0xHex} from "./util/converting.js"; import { changeManifest, prePublishDraftNode, type PrepublishResponse } from "./api.js" import { getNodesLibInternalConfig } from "./config/index.js"; @@ -46,7 +46,7 @@ export const dpidPublish = async ( if (dpidExists) { console.log(`${LOG_CTX} dpid exists for ${uuid}, checking token ownership`); const signingAddress = (await signer.getAddress()).toLowerCase(); - const researchObjectOwner = await getResearchObjectOwner(uuid, signer); + const researchObjectOwner = await getTokenOwner(uuid, signer); if (signingAddress !== researchObjectOwner) { throw new WrongOwnerError({ @@ -109,6 +109,16 @@ export const createDpidAlias = async ( return { dpid, receipt }; }; +export const upgradeDpidAlias = async ( + streamId: string, + dpid: number, + signer: Signer, +): Promise => { + const tx = await dpidAliasRegistryWriter(signer) + .upgradeDpid(BigNumber.from(dpid), streamId); + return await tx.wait(); +}; + /** * Lookup the history of a legacy dPID in the new alias registry. */ @@ -121,6 +131,31 @@ export const lookupLegacyDpid = async ( return await dpidAliasRegistryReader(provider).legacyLookup(dpid); }; +/** + * Resolve codex streamID for a dPID alias. +*/ +export const lookupDpid = async ( + dpid: number +): Promise => { + const provider = new providers.JsonRpcProvider( + getNodesLibInternalConfig().chainConfig.rpcUrl + ); + return await dpidAliasRegistryReader(provider).resolve(dpid); +}; + +/** + * Find the dPID alias of a given streamID, a reverse lookup. +*/ +export const findDpid = async ( + streamId: string, +): Promise => { + const provider = new providers.JsonRpcProvider( + getNodesLibInternalConfig().chainConfig.rpcUrl + ); + const dpidBn = await dpidAliasRegistryReader(provider).find(streamId); + return ethers.BigNumber.from(dpidBn).toNumber(); +}; + /** * Update an existing dPID with a new version of the manifest. * @deprecated @@ -141,7 +176,7 @@ const updateExistingDpid = async ( * Optimistically create a manifest with the next available dPID, * and try to register it as such. * @throws on dpid registration failure. - * @deprecated + * @deprecated use createDpidAlias */ const registerNewDpid = async ( uuid: string, @@ -210,8 +245,17 @@ export const hasDpid = async ( /** * @deprecated */ -export const getResearchObjectOwner = async ( +export const getTokenOwner = async ( uuid: string, signer: Signer, ): Promise => (await researchObjectWriter(signer).ownerOf(convertUUIDToHex(uuid))).toLowerCase();; + + +/** + * Get the research object token ID for a given (legacy) dPID +*/ +export const getTokenId = async ( + dpid: number, + signer: Signer, +): Promise => await dpidRegistryWriter(signer).get("beta", dpid); From 0c1fc0d2521892656e1a927d8097ff0fd3728d72 Mon Sep 17 00:00:00 2001 From: m0ar Date: Tue, 11 Jun 2024 15:44:56 +0200 Subject: [PATCH 18/34] server: generate migration & support fetching dpidAlias --- .../migration.sql | 2 ++ desci-server/src/services/nodeManager.ts | 13 +++++++++++++ 2 files changed, 15 insertions(+) create mode 100644 desci-server/prisma/migrations/20240613093337_add_dpid_alias_field_to_node/migration.sql diff --git a/desci-server/prisma/migrations/20240613093337_add_dpid_alias_field_to_node/migration.sql b/desci-server/prisma/migrations/20240613093337_add_dpid_alias_field_to_node/migration.sql new file mode 100644 index 000000000..16ba436e1 --- /dev/null +++ b/desci-server/prisma/migrations/20240613093337_add_dpid_alias_field_to_node/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "Node" ADD COLUMN "dpidAlias" INTEGER; diff --git a/desci-server/src/services/nodeManager.ts b/desci-server/src/services/nodeManager.ts index 36b53b805..e932fa29d 100644 --- a/desci-server/src/services/nodeManager.ts +++ b/desci-server/src/services/nodeManager.ts @@ -66,6 +66,19 @@ export const setCeramicStream = async (uuid: string, ceramicStream: string) => { }); }; +export const setDpidAlias = async (uuid: string, dpidAlias: number) => { + logger.debug({ fn: 'setDpidAlias', uuid, dpidAlias }, 'node::setDpidAlias'); + uuid = ensureUuidEndsWithDot(uuid); + return await prisma.node.update({ + data: { + dpidAlias, + }, + where: { + uuid, + }, + }); +}; + export const createPublicDataRefs = async ( data: Prisma.PublicDataReferenceCreateManyInput[], userId: number | undefined, From 09d4c1b7f0bf4c05e02c22a198619d8b0fae44dc Mon Sep 17 00:00:00 2001 From: m0ar Date: Wed, 12 Jun 2024 15:53:43 +0200 Subject: [PATCH 19/34] nodeslib: enable getting backfill history from contract legacy entries --- nodes-lib/src/api.ts | 60 ++++++++----- nodes-lib/src/errors.ts | 5 +- nodes-lib/src/publish.ts | 66 ++++++++++---- nodes-lib/test/convert.spec.ts | 22 +++-- nodes-lib/test/root.spec.ts | 160 +++++++++++++++++++++++++++++++-- 5 files changed, 259 insertions(+), 54 deletions(-) diff --git a/nodes-lib/src/api.ts b/nodes-lib/src/api.ts index 188f9c762..28ba9374b 100644 --- a/nodes-lib/src/api.ts +++ b/nodes-lib/src/api.ts @@ -30,7 +30,9 @@ import { makeRequest } from "./routes.js"; import { Signer } from "ethers"; import { type DID } from "dids"; import { getFullState } from "./codex.js"; -import { convertUUIDToDecimal } from "./util/converting.js"; +import { bnToString, convertUUIDToDecimal } from "./util/converting.js"; +import { lookupLegacyDpid } from "./chain.js"; +import { NoSuchEntryError } from "./errors.js"; export const ENDPOINTS = { deleteData: { @@ -255,6 +257,7 @@ export type NodeResponse = { isDeleted: boolean, manifestDocumentId: string, ceramicStream?: string, + dpidAlias?: number, }; /** @@ -289,7 +292,7 @@ export type PrepublishResponse = { updatedManifestCid: string; updatedManifest: ResearchObjectV1; version?: NodeVersion; - ceramicStream?: string; + ceramicStream: string | null; }; export type PublishConfiguration = { @@ -353,8 +356,6 @@ export const publishNode = async ( manifest: publishResult.manifest, ceramicStream: publishResult.ceramicIDs.streamID, commitId: publishResult.ceramicIDs.commitID, - // required in DB & this string is used to detect non-tx's in publish worker - transactionId: "ceramic", }; try { @@ -364,20 +365,6 @@ export const publishNode = async ( throw e; }; - let dpid; - try { - dpid = await createDpid(uuid); - await changeManifest( - uuid, - [{ - type: "Publish Dpid", - dpid: { prefix: "", id: dpid.toString() } - }], - ); - } catch (e) { - console.log(`Failed to create dPID alias for node ${uuid}...`); - }; - return { ceramicIDs: publishResult.ceramicIDs, updatedManifest: publishResult.manifest, @@ -754,13 +741,17 @@ export type IndexedNode = { versions: IndexedNodeVersion[]; }; +/** + * Get the codex publish history for a given node. + * Note: calling this right after publish may fail + * since the publish operation may not have finished. +*/ export const getPublishHistory = async ( uuid: string, ): Promise => { - const { ceramicStream,} = await getDraftNode(uuid); - + const { ceramicStream } = await getDraftNode(uuid); if (!ceramicStream) { - return await getDpidHistory(uuid); + throw new Error(`No known stream for node ${uuid}`); }; const resolved = await getFullState(ceramicStream); @@ -772,7 +763,7 @@ export const getPublishHistory = async ( const indexedNode: IndexedNode = { id: uuid, id10: convertUUIDToDecimal(uuid), - owner: resolved.owner, + owner: resolved.owner.id, recentCid: resolved.manifest, versions, }; @@ -780,9 +771,32 @@ export const getPublishHistory = async ( return indexedNode; }; +/** + * Lookup the history of a legacy dPID in the alias registry. + * @throws (@link NoSuchEntryError) if no such legacy entry exists +*/ +export const getLegacyHistory = async ( + dpid: number, +): Promise => { + const legacyEntry = await lookupLegacyDpid(dpid); + + if (legacyEntry.versions.length === 0) { + throw new NoSuchEntryError({ + name: "NO_SUCH_ENTRY_ERROR", + message: "No legacy history exists for this dPID", + }); + }; + + const nodeVersions = legacyEntry.versions.map( + ({ cid, time }) => ({ cid, time: bnToString(time) }) + ); + + return nodeVersions; +}; + /** * Get the dPID publish history for a node. - * @deprecated use getPublishHistory + * @deprecated use getPublishHistory or getLegacyHistory when using new contracts */ export const getDpidHistory = async ( uuid: string, diff --git a/nodes-lib/src/errors.ts b/nodes-lib/src/errors.ts index fc8f7dc46..f88a52c1d 100644 --- a/nodes-lib/src/errors.ts +++ b/nodes-lib/src/errors.ts @@ -1,14 +1,14 @@ class BaseError extends Error { name: Name; message: string; - cause: Cause; + cause?: Cause; constructor({ name, message, cause }: { name: Name, message: string, - cause: Cause, + cause?: Cause, }) { super(); this.name = name; @@ -22,3 +22,4 @@ export class DpidRegistrationError extends BaseError<"DPID_REGISTRATION_ERROR", export class WrongOwnerError extends BaseError< "WRONG_OWNER_ERROR", { expected: string, actual: string } > {}; +export class NoSuchEntryError extends BaseError<"NO_SUCH_ENTRY_ERROR", Error> {}; diff --git a/nodes-lib/src/publish.ts b/nodes-lib/src/publish.ts index 1ad693e74..f46cb6fe8 100644 --- a/nodes-lib/src/publish.ts +++ b/nodes-lib/src/publish.ts @@ -1,10 +1,19 @@ import { type NodeIDs } from "@desci-labs/desci-codex-lib"; -import { IndexedNodeVersion, getDpidHistory, getDraftNode, prePublishDraftNode } from "./api.js"; -import { dpidPublish, hasDpid, lookupLegacyDpid } from "./chain.js"; +import { + IndexedNodeVersion, + getDpidHistory, + getDraftNode, + getLegacyHistory, + prePublishDraftNode, +} from "./api.js"; +import { + dpidPublish, + hasDpid, +} from "./chain.js"; import { codexPublish } from "./codex.js"; import { Signer } from "ethers"; import { type DID } from "dids"; -import { bnToString } from "./util/converting.js"; +import { NoSuchEntryError } from "./errors.js"; /** * Publish node to Codex, potentially migrating history from dPID token. @@ -16,24 +25,24 @@ export const publish = async ( ) => { const node = await getDraftNode(uuid); const prepubResult = await prePublishDraftNode(uuid); - const dpid = node.manifestData.dpid?.id; + const manifestDpid = node.manifestData.dpid?.id; - // We know about a dPID, but not about a stream => should backfill history - const hasHistory = - (dpid !== undefined) && (prepubResult.ceramicStream === undefined); + const hasDpidInManifest = manifestDpid !== undefined; + const hasStreamOnRecord = prepubResult.ceramicStream !== null; + const shouldDoMigration = hasDpidInManifest && !hasStreamOnRecord; - let history: IndexedNodeVersion[] = []; - if (hasHistory) { - const legacyEntry = await lookupLegacyDpid(parseInt(dpid)); - // Wrangle BigNumber timestamp to string epoch - history = legacyEntry.versions.map( - ({ cid, time }) => ({ cid, time: bnToString(time) }) - ); + let legacyHistory: IndexedNodeVersion[] = []; + if (shouldDoMigration) { + legacyHistory = await findLegacyHistory(uuid, parseInt(manifestDpid)); }; // Performs backfill migration if there is no stream on record, otherwise // we can send the empty history array and avoid the history query - const ceramicIDs = await codexPublish(prepubResult, history, didOrSigner); + const ceramicIDs = await codexPublish( + prepubResult, + legacyHistory, + didOrSigner + ); return { cid: prepubResult.updatedManifestCid, @@ -87,3 +96,30 @@ export const legacyPublish = async ( ceramicIDs, }; }; + +/** + * Looks for legacy history for a dPID, starting with the new contract's + * legacy mapping, falling back to querying the nodes backend for subgraph + * indexed updates. + * + * For public environments, the former should always be enough, but it + * doesn't work for testing migration etc because that logic relies on + * looking up things only published in the legacy registry. + * + * This fallback logic can be cleaned up when the old contracts are paused, + * since the data migration to the alias registry can be made final. +*/ +const findLegacyHistory = async ( + uuid: string, + dpid: number, +): Promise => { + try { + return await getLegacyHistory(dpid); + } catch (e) { + if (!(e instanceof NoSuchEntryError)) { + throw e; + }; + }; + + return (await getDpidHistory(uuid)).versions; +}; diff --git a/nodes-lib/test/convert.spec.ts b/nodes-lib/test/convert.spec.ts index 6f03088ed..72d9e8ece 100644 --- a/nodes-lib/test/convert.spec.ts +++ b/nodes-lib/test/convert.spec.ts @@ -1,27 +1,37 @@ import { test, describe, expect } from "vitest"; -import { convertCidTo0xHex, convert0xHexToCid, convertUUIDToHex } from "../src/util/converting.js"; +import { convertCidTo0xHex, convert0xHexToCid, convertUUIDToHex, convertUUIDToDecimal } from "../src/util/converting.js"; -describe("conversion", async () => { - describe("between UUID and hex", async () => { +describe("conversion", () => { + describe("between UUID and hex", () => { const uuid = "pOV6-0ZN8k8Nlb3iJ7BHgbHt4V_xt-H-dUbRQCLKl78"; const expectedHex = "0xa4e57afb464df24f0d95bde227b04781b1ede15ff1b7e1fe7546d14022ca97bf"; - test("works", async () => { + test("works", () => { const actualHex = convertUUIDToHex(uuid) expect(actualHex).toEqual(expectedHex); }); }); + describe("between UUID and decimal", () => { + const uuid = "pOV6-0ZN8k8Nlb3iJ7BHgbHt4V_xt-H-dUbRQCLKl78"; + const expectedDecimal = "74584763932894785363050678437902601468178104400434333322549483008347345688511"; + + test("works", () => { + const uuid10 = convertUUIDToDecimal(uuid); + expect(uuid10).toEqual(expectedDecimal); + }); + }); + describe("between CID and hex", async () => { const exampleCid = "bafkreihge5qw7sc3mqc4wkf4cgpv6udtvrgipfxwyph7dhlyu6bkkt7tfq"; const expectedHex = "0x0f01551220e627616fc85b6405cb28bc119f5f5073ac4c8796f6c3cff19d78a782a54ff32c"; - test("works one way", async () => { + test("works one way", () => { const cidAsHex = convertCidTo0xHex(exampleCid); expect(cidAsHex).toEqual(expectedHex); }); - test("works the other way", async () => { + test("works the other way", () => { const hexAsCid = convert0xHexToCid(expectedHex); expect(hexAsCid).toEqual(exampleCid); }); diff --git a/nodes-lib/test/root.spec.ts b/nodes-lib/test/root.spec.ts index b099c38fc..60af7ce21 100644 --- a/nodes-lib/test/root.spec.ts +++ b/nodes-lib/test/root.spec.ts @@ -2,7 +2,7 @@ import { test, describe, beforeAll, expect } from "vitest"; import type { AddCodeComponentParams, AddLinkComponentParams, AddPdfComponentParams, - CreateDraftParams, ExternalUrl, PublishResponse, RetrieveResponse, + CreateDraftParams, ExternalUrl, NodeResponse, PublishResponse, RetrieveResponse, UploadFilesResponse, } from "../src/api.js" import { @@ -13,10 +13,12 @@ import { deleteComponent, updateComponent, changeManifest, updateTitle, updateDescription, updateLicense, updateResearchFields, addContributor, removeContributor, addExternalCid, updateCoverImage, + publishNode, + getPublishHistory, } from "../src/api.js"; import axios from "axios"; -import { getCodexHistory, getPublishedFromCodex, getRawState } from "../src/codex.js"; -import { dpidPublish } from "../src/chain.js"; +import { getCodexHistory, getCurrentState, getRawState } from "../src/codex.js"; +import { dpidPublish, findDpid, lookupLegacyDpid } from "../src/chain.js"; import { sleep } from "./util.js"; import { convert0xHexToCid } from "../src/util/converting.js"; import { @@ -56,7 +58,7 @@ describe("nodes-lib", () => { "Failed to connect to desci-server; is the service running?", ); process.exit(1); - } + }; }); describe("draft nodes", async () => { test("can be created", async () => { @@ -268,7 +270,7 @@ describe("nodes-lib", () => { }); }); - describe("publishing ", async () => { + describe("legacy publishing ", async () => { let uuid: string; let publishResult: PublishResponse; const did = await authorizedSessionDidFromSigner(testSigner, getResources()); @@ -298,7 +300,7 @@ describe("nodes-lib", () => { test("to codex", async () => { expect(publishResult.ceramicIDs).not.toBeUndefined(); - const ceramicObject = await getPublishedFromCodex(publishResult.ceramicIDs!.streamID); + const ceramicObject = await getCurrentState(publishResult.ceramicIDs!.streamID); expect(ceramicObject?.manifest).toEqual(publishResult.updatedManifestCid); }); @@ -340,7 +342,7 @@ describe("nodes-lib", () => { test("publishes to codex stream", async () => { expect(publishResult.ceramicIDs).not.toBeUndefined(); - const ceramicObject = await getPublishedFromCodex(publishResult.ceramicIDs!.streamID); + const ceramicObject = await getCurrentState(publishResult.ceramicIDs!.streamID); expect(ceramicObject?.manifest).toEqual(publishResult.updatedManifestCid); const ceramicHistory = await getCodexHistory(publishResult.ceramicIDs!.streamID); @@ -361,7 +363,7 @@ describe("nodes-lib", () => { const pubResult = await publishDraftNode(uuid, testSigner, did); // Allow graph node to index - await sleep(1_500); + await sleep(2_500); // make sure codex history is of equal length const dpidHistory = await getDpidHistory(uuid); @@ -381,6 +383,148 @@ describe("nodes-lib", () => { }); + describe.only("publishing ", async () => { + let uuid: string; + let publishResult: PublishResponse; + const did = await authorizedSessionDidFromSigner(testSigner, getResources()); + + beforeAll(async () => { + const { node } = await createBoilerplateNode(); + uuid = node.uuid; + publishResult = await publishNode(uuid, did); + }); + + describe("new node", async () => { + test("to codex", async () => { + expect(publishResult.ceramicIDs).not.toBeUndefined(); + const ceramicObject = await getCurrentState(publishResult.ceramicIDs!.streamID); + expect(ceramicObject?.manifest).toEqual(publishResult.updatedManifestCid); + }); + + test("has a new version", async () => { + const history = await getCodexHistory(publishResult.ceramicIDs!.streamID); + expect(history.length).toEqual(1); + }); + + test("does NOT set dPID in manifest", async () => { + const node = await getDraftNode(uuid); + expect(node.manifestData.dpid).toBeUndefined(); + }); + + test("has a CACAO from the passed DID", async () => { + const streamState = await getRawState(publishResult.ceramicIDs!.streamID); + const controller = streamState.state.metadata.controllers.at(0); + const signerAddress = (await testSigner.getAddress()).toLowerCase(); + + expect(controller).toEqual(did.parent); + expect(controller!.replace("did:pkh:eip155:1337:", "")).toEqual(signerAddress); + }); + + test("can optionally derive DID from just a signer", async () => { + const { node } = await createBoilerplateNode(); + const result = await publishNode(node.uuid, testSigner); + const streamState = await getRawState(result.ceramicIDs!.streamID); + const controller = streamState.state.metadata.controllers.at(0); + const signerAddress = (await testSigner.getAddress()).toLowerCase(); + expect(controller!.replace("did:pkh:eip155:1337:", "")).toEqual(signerAddress); + }); + + test("tracks streamID with node state", async () => { + const node = await getDraftNode(uuid); + expect(node.ceramicStream).toEqual(publishResult.ceramicIDs?.streamID); + }); + + test("tracks new dpid alias with node state", async () => { + const node = await getDraftNode(uuid); + const dpidAlias = await findDpid(node.ceramicStream!); + expect(node.dpidAlias).toEqual(dpidAlias); + }); + }); + + describe("node update", async () => { + let updateResult: PublishResponse; + let nodeStateBefore: NodeResponse; + + beforeAll(async () => { + nodeStateBefore = await getDraftNode(uuid); + updateResult = await publishNode(uuid, did); + }); + + test("updates most recent state", async () => { + const ceramicObject = await getCurrentState(updateResult.ceramicIDs!.streamID); + expect(ceramicObject?.manifest).toEqual(updateResult.updatedManifestCid); + }); + + test("adds a new version", async () => { + const ceramicHistory = await getCodexHistory(updateResult.ceramicIDs!.streamID); + expect(ceramicHistory.length).toEqual(2); + }); + + test("does not change the tracked streamID", async () => { + const node = await getDraftNode(uuid); + expect(node.ceramicStream).toEqual(nodeStateBefore.ceramicStream); + }); + + test("does not mint a new dPID alias", async () => { + const node = await getDraftNode(uuid); + expect(node.dpidAlias).toEqual(nodeStateBefore.dpidAlias); + }); + }); + + describe("node with legacy history", async () => { + let uuid: string; + let pubResult: PublishResponse; + let legacyDpid: number; + + beforeAll(async () => { + const { node } = await createBoilerplateNode(); + uuid = node.uuid; + + // make a dpid-only publish + const { prepubResult: { updatedManifest }} = await dpidPublish(uuid, false, testSigner); + + legacyDpid = parseInt(updatedManifest.dpid!.id); + + // Allow graph node to index + await sleep(2_500); + + // make a regular publish + pubResult = await publishNode(uuid, did); + }); + + test("migrates history to new stream", async () => { + // legacy registry only knows about the first update + const dpidHistory = await getDpidHistory(uuid); + expect(dpidHistory.versions.length).toEqual(1); + + // codex history has the legacy and the new update + const codexHistory = await getCodexHistory(pubResult.ceramicIDs!.streamID); + expect (codexHistory.length).toEqual(2); + }); + + test("tracks streamID with node state", async () => { + const node = await getDraftNode(uuid); + expect(node.ceramicStream).toEqual(pubResult.ceramicIDs?.streamID); + }); + + test("tracks upgraded dpid alias with node state", async () => { + const node = await getDraftNode(uuid); + const dpidAlias = await findDpid(node.ceramicStream!); + expect(dpidAlias).toEqual(legacyDpid); + }); + }); + + /** This is not an user feature, but part of error handling during legacy publish */ + test("can remove dPID from manifest", async () => { + await changeManifest( + uuid, [{ type: "Remove Dpid" }] + ); + const node = await getDraftNode(uuid); + expect(node.manifestData.dpid).toBeUndefined(); + }); + + }); + describe("data management", async () => { describe("trees", async () => { test("can be retrieved by owner", async () => { From 3859c7fe9c1a75cdf25b7d3a9e71c90612f7ba71 Mon Sep 17 00:00:00 2001 From: m0ar Date: Wed, 12 Jun 2024 15:58:28 +0200 Subject: [PATCH 20/34] server: add createDpid endpoint/controller --- .../src/controllers/nodes/createDpid.ts | 132 +++++++++++++----- 1 file changed, 96 insertions(+), 36 deletions(-) diff --git a/desci-server/src/controllers/nodes/createDpid.ts b/desci-server/src/controllers/nodes/createDpid.ts index 84c82808c..fbc6daea0 100644 --- a/desci-server/src/controllers/nodes/createDpid.ts +++ b/desci-server/src/controllers/nodes/createDpid.ts @@ -3,7 +3,8 @@ import { ethers } from "ethers"; import { logger as parentLogger } from '../../logger.js'; import { RequestWithNode } from "../../middleware/authorisation.js"; import { contracts, typechain as tc } from "@desci-labs/desci-contracts"; -import { DpidMintedEvent } from "@desci-labs/desci-contracts/dist/typechain-types/DpidAliasRegistry.js"; +import { DpidMintedEvent, UpgradedDpidEvent } from "@desci-labs/desci-contracts/dist/typechain-types/DpidAliasRegistry.js"; +import { setDpidAlias } from "../../services/nodeManager.js"; type DpidResponse = DpidSuccessResponse | DpidErrorResponse; export type DpidSuccessResponse = { @@ -15,7 +16,7 @@ export type DpidErrorResponse = { }; /** Not secret: pre-seeded ganache account for local dev */ -const GANACHE_PKEY = "59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d"; +const GANACHE_PKEY = "ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80"; let aliasRegistryAddress: string; const url = process.env.SERVER_URL; @@ -56,44 +57,103 @@ export const createDpid = async (req: RequestWithNode, res: Response => { + const logger = parentLogger.child({ + module: "NODE::mintDpid", + ceramicStream: streamId, + }); + + const provider = new ethers.providers.JsonRpcProvider( + process.env.ETHEREUM_RPC_URL + ); + + await provider.ready; + const wallet = new ethers.Wallet( + url.includes("localhost") ? GANACHE_PKEY : process.env.HOT_WALLET_KEY, + provider, + ); + + const dpidAliasRegistry = tc.DpidAliasRegistry__factory.connect( + aliasRegistryAddress, + wallet, + ); + + const checkDpid = await dpidAliasRegistry.find(streamId); + const existingDpid = ethers.BigNumber.from(checkDpid).toNumber(); + + if (existingDpid !== 0) { + logger.info(`Skipping alias creation, stream ${streamId} already bound to ${existingDpid}`); + return existingDpid; + }; + + const tx = await dpidAliasRegistry.mintDpid(streamId); + const receipt = await tx.wait(); + const { args: [ dpidBn ] } = receipt.events[0] as DpidMintedEvent; + const dpid = ethers.BigNumber.from(dpidBn).toNumber(); + + logger.info( + `Created dPID alias ${dpid} for stream ${streamId}`, + ); + + return dpid; +}; + +/** + * Related, but not directly API exposed, functionality to upgrade a legacy + * dPID. Neither this function nor the contract can do any validation that + * this stream represents the history of that dPID, so this needs to be + * verified before this function is called. + * + * Note: this method in the registry contract is only callable by contract + * owner, so this is not generally available. +*/ +export const upgradeDpid = async ( + dpid: number, + ceramicStream: string, +): Promise => { + const logger = parentLogger.child({ + module: "NODE::upgradeDpid", + ceramicStream, + }); + + const provider = new ethers.providers.JsonRpcProvider( + process.env.ETHEREUM_RPC_URL + ); + + if (!process.env.REGISTRY_OWNER_PKEY) { + throw new Error("REGISTRY_OWNER_PKEY missing, cannot upgrade dpid"); + }; + + await provider.ready; + const wallet = new ethers.Wallet( + url.includes("localhost") ? GANACHE_PKEY : process.env.REGISTRY_OWNER_PKEY, + provider, + ); + + const dpidAliasRegistry = tc.DpidAliasRegistry__factory.connect( + aliasRegistryAddress, + wallet, + ); + + const tx = await dpidAliasRegistry.upgradeDpid(dpid, ceramicStream); + await tx.wait(); + + logger.info( + `Upgraded dPID ${dpid} to track stream ${ceramicStream}`, + ); + + return dpid; +}; From 8c9f83d466d019f07614e92daa10b03a18e8ad66 Mon Sep 17 00:00:00 2001 From: m0ar Date: Thu, 13 Jun 2024 15:59:19 +0200 Subject: [PATCH 21/34] server: fix raw/versions not checking dot UUID suffix --- desci-server/src/controllers/raw/versions.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/desci-server/src/controllers/raw/versions.ts b/desci-server/src/controllers/raw/versions.ts index 422991997..914e2f6e7 100644 --- a/desci-server/src/controllers/raw/versions.ts +++ b/desci-server/src/controllers/raw/versions.ts @@ -2,12 +2,13 @@ import { Request, Response, NextFunction } from 'express'; import { logger } from '../../logger.js'; import { getIndexedResearchObjects } from '../../theGraph.js'; +import { ensureUuidEndsWithDot } from '../../utils.js'; /** * Get all versions of research object from index (publicView) */ export const versions = async (req: Request, res: Response, next: NextFunction) => { - const uuid = req.params.uuid; + const uuid = ensureUuidEndsWithDot(req.params.uuid); let graphOk = false; let result; try { From 47626533005872e891f48313f55e4859932df1a7 Mon Sep 17 00:00:00 2001 From: m0ar Date: Thu, 13 Jun 2024 16:01:12 +0200 Subject: [PATCH 22/34] server: refactor publish flow, default to dpid alias registry unless overridden --- .env.example | 3 + desci-server/package.json | 2 +- desci-server/src/controllers/nodes/publish.ts | 375 ++++++++++++------ desci-server/src/workers/publish.ts | 7 +- desci-server/yarn.lock | 8 +- 5 files changed, 266 insertions(+), 129 deletions(-) diff --git a/.env.example b/.env.example index 3bddd15af..4856b89fd 100755 --- a/.env.example +++ b/.env.example @@ -134,3 +134,6 @@ DOI_PREFIX=https://doi.org/10.62891 CROSSREF_API=https://api.crossref.org CROSSREF_API_KEY= CROSSREF_EMAIL= + +# Set this truthy to use legacy dPID publish +FALLBACK_LEGACY_DPID= diff --git a/desci-server/package.json b/desci-server/package.json index d346ff251..4a47a9aeb 100755 --- a/desci-server/package.json +++ b/desci-server/package.json @@ -56,7 +56,7 @@ "@automerge/automerge-repo-network-websocket": "^1.0.19", "@aws-sdk/client-s3": "^3.537.0", "@desci-labs/desci-models": "0.2.7-rc3", - "@desci-labs/desci-contracts": "0.2.5-rc3", + "@desci-labs/desci-contracts": "0.2.5-rc6", "@honeycombio/opentelemetry-node": "^0.3.2", "@ipld/dag-pb": "^4.0.0", "@opentelemetry/api": "^1.8.0", diff --git a/desci-server/src/controllers/nodes/publish.ts b/desci-server/src/controllers/nodes/publish.ts index 47e5c18e7..e4b03fba9 100644 --- a/desci-server/src/controllers/nodes/publish.ts +++ b/desci-server/src/controllers/nodes/publish.ts @@ -1,24 +1,27 @@ import { ResearchObjectV1 } from '@desci-labs/desci-models'; -import { ActionType, Prisma, PublishTaskQueueStatus, User } from '@prisma/client'; +import { ActionType, Node, Prisma, PublishTaskQueue, PublishTaskQueueStatus, User } from '@prisma/client'; import { Request, Response, NextFunction } from 'express'; import { prisma } from '../../client.js'; import { logger as parentLogger } from '../../logger.js'; import { getManifestByCid } from '../../services/data/processing.js'; -import { fixDpid, getTargetDpidUrl } from '../../services/fixDpid.js'; +import { getTargetDpidUrl } from '../../services/fixDpid.js'; import { saveInteraction, saveInteractionWithoutReq } from '../../services/interactionLog.js'; import { - publishResearchObject, cacheNodeMetadata, getAllCidsRequiredForPublish, createPublicDataRefs, - createDataMirrorJobs, setCeramicStream, + setDpidAlias, } from '../../services/nodeManager.js'; +<<<<<<< HEAD import orcidApiService from '../../services/orcid.js'; import { publishServices } from '../../services/PublishServices.js'; +======= +>>>>>>> a91865b (server: refactor publish flow, default to dpid alias registry unless overridden) import { discordNotify } from '../../utils/discordUtils.js'; import { ensureUuidEndsWithDot } from '../../utils.js'; +import { getOrCreateDpid, upgradeDpid } from './createDpid.js'; export type PublishReqBody = { uuid: string; @@ -36,7 +39,7 @@ export type PublishRequest = Request & { export type PublishResBody = | { ok: boolean; - taskId: number; + taskId?: number; } | { error: string; @@ -98,44 +101,60 @@ export const publish = async (req: PublishRequest, res: Response return res.status(400).json({ error: 'failed' }); } + // Check if there is already an ongoing publish job in the queue const task = await prisma.publishTaskQueue.findFirst({ where: { uuid: ensureUuidEndsWithDot(uuid), status: { not: PublishTaskQueueStatus.FAILED } }, }); if (task) return res.status(400).json({ error: 'Node publishing in progress' }); + let publishTask: PublishTaskQueue | undefined; + + // Do synchronous publish if the caller passed stream information + if (!process.env.FALLBACK_LEGACY_DPID) { + await syncPublish( + ceramicStream, + commitId, + node, + owner, + cid, + uuid, + manifest, + ); + } else { + publishTask = await prisma.publishTaskQueue.create({ + data: { + cid, + dpid: manifest.dpid?.id, + userId: owner.id, + transactionId, + ceramicStream, + commitId, + uuid: ensureUuidEndsWithDot(uuid), + status: PublishTaskQueueStatus.WAITING, + }, + }); + }; + saveInteraction( req, ActionType.PUBLISH_NODE, { cid, - dpid: manifest.dpid.id, + dpid: manifest.dpid?.id, userId: owner.id, transactionId, - ceramicStream: ceramicStream ?? '', - commitId: commitId ?? '', + ceramicStream, + commitId, uuid: ensureUuidEndsWithDot(uuid), status: PublishTaskQueueStatus.WAITING, }, owner.id, ); - const publishTask = await prisma.publishTaskQueue.create({ - data: { - cid, - dpid: manifest.dpid.id, - userId: owner.id, - transactionId, - ceramicStream: ceramicStream ?? '', - commitId: commitId ?? '', - uuid: ensureUuidEndsWithDot(uuid), - status: PublishTaskQueueStatus.WAITING, - }, - }); - return res.send({ ok: true, - taskId: publishTask.id, + taskId: publishTask?.id, }); } catch (err) { logger.error({ err }, '[publish::publish] node-publish-err'); @@ -143,6 +162,212 @@ export const publish = async (req: PublishRequest, res: Response } }; +/** + * Synchronously perform publish steps before returning. + * + * This is generally fast because the ceramic update is already done, + * but two cases are a bit slower: + * 1. first time publish (wait on backend tx) + * 2. dpid upgrade (wait on backend tx) + * + * Semantically, these can both be made fire-and-forget promises if we can + * manage without instantly having the dPID alias available in this function. +*/ +const syncPublish = async ( + ceramicStream: string, + commitId: string, + node: Node, + owner: User, + cid: string, + uuid: string, + manifest: ResearchObjectV1, +): Promise => { + const logger = parentLogger.child({ + module: 'NODE::syncPublish', + uuid, + cid, + ceramicStream, + commitId, + }); + + const latestNodeVersion = await prisma.nodeVersion.findFirst({ + where: { + id: -1, + nodeId: node.id, + }, + orderBy: { + id: "desc", + }, + }); + + // Prevent duplicating the NodeVersion entry if the latest version is the same as the one we're trying to publish, as a draft save is triggered before publishing + const latestNodeVersionId = latestNodeVersion?.manifestUrl === cid + ? latestNodeVersion.id + : -1; + + const nodeVersion = await prisma.nodeVersion.upsert({ + where: { + id: latestNodeVersionId, + }, + update: { + commitId, + }, + create: { + nodeId: node.id, + manifestUrl: cid, + commitId, + }, + }); + + // first time we see a stream for this node, make sure we bind it in the db + if (!node.ceramicStream) { + logger.trace(`[publish:publish] setting streamID ${ceramicStream} on node ${uuid}`); + await setCeramicStream(uuid, ceramicStream); + } else if (node.ceramicStream !== ceramicStream) { + logger.warn( + // This is unexpected and weird, but important to know if it occurs + `[publish:publish] stream on record does not match passed streamID`, + { database: node.ceramicStream, ceramicStream }, + ); + }; + + const legacyDpid = manifest.dpid?.id ? parseInt(manifest.dpid.id) : undefined; + let dpidAlias: number = node.dpidAlias; + + // Do dataRef and dPID registration operations concurrently + const promises = []; + + if (!dpidAlias) { + // The only reason this isn't just fire-and-forget is that we want the dpid + // for the discord notification, which won't be available otherwise for + // first time publishes. + promises.push( + createOrUpgradeDpidAlias(legacyDpid, ceramicStream, uuid) + .then(dpid => dpidAlias = dpid) + ); + }; + + promises.push( + handlePublicDataRefs({ + nodeId: node.id, + userId: owner.id, + manifestCid: cid, + nodeVersionId: nodeVersion.id, + nodeUuid: node.uuid, + }) + ); + + await Promise.all(promises); + + // TODO: different resolver url for codex? :thinking: + const targetDpidUrl = getTargetDpidUrl(); + + discordNotify(`${targetDpidUrl}/${dpidAlias}`); + + /** + * Save the cover art for this Node for later sharing: PDF -> JPG for this version + */ + cacheNodeMetadata(node.uuid, cid); +}; + +/** + * Creates new dPID if legacyDpid is falsy, otherwise tries to upgrade + * the dPID by binding the stream in the alias registry for that dPID. +*/ +const createOrUpgradeDpidAlias = async ( + legacyDpid: number | undefined, + ceramicStream: string, + uuid: string, +): Promise => { + let dpidAlias: number; + if (legacyDpid) { + // Requires the REGISTRY_OWNER_PKEY to be set in env + dpidAlias = await upgradeDpid(legacyDpid, ceramicStream); + } else { + // Will nicely return the existing dpid if this is called multiple times + dpidAlias = await getOrCreateDpid(ceramicStream); + }; + await setDpidAlias(uuid, dpidAlias); + return dpidAlias; +}; + +type PublishData = { + nodeId: number, + nodeUuid: string, + userId: number, + manifestCid: string, + nodeVersionId: number, +}; + +const handlePublicDataRefs = async ( + params: PublishData, +): Promise => { + const { + nodeId, + nodeUuid, + userId, + manifestCid, + nodeVersionId, + } = params; + + const logger = parentLogger.child({ + module: 'NODE::handlePublicDataRefs', + uuid: nodeUuid, + cid: manifestCid, + }); + + /** + * Publish Step 1: + * Create public data refs and data mirror jobs from the CIDs in the manifest + */ + let cidsRequiredForPublish: Prisma.PublicDataReferenceCreateManyInput[] = []; + try { + /*** + * Traverse the DAG structure to find all relevant CIDs and get relevant info for indexing + */ + cidsRequiredForPublish = await getAllCidsRequiredForPublish( + manifestCid, + nodeUuid, + userId, + nodeId, + nodeVersionId + ); + + /** + * Index the DAGs from IPFS in order to avoid recurrent IPFS calls when requesting data in the future + */ + const newPublicDataRefs = await createPublicDataRefs( + cidsRequiredForPublish, + userId, + nodeVersionId, + ); + + /** + * Save a success for configurable service quality tracking purposes + */ + await saveInteractionWithoutReq( + ActionType.PUBLISH_NODE_CID_SUCCESS, + { + params, + result: { newPublicDataRefs }, + } + ); + } catch (error) { + logger.error({ error }, `[publish::publish] error=${error}`); + /** + * Save a failure for configurable service quality tracking purposes + */ + await saveInteractionWithoutReq( + ActionType.PUBLISH_NODE_CID_FAIL, + { + params, + error + } + ); + throw error; + }; +}; + export const publishHandler = async ({ transactionId, userId, @@ -232,107 +457,17 @@ export const publishHandler = async ({ logger.trace(`[publish::publish] nodeUuid=${node.uuid}, manifestCid=${cid}, transaction=${transactionId}`); - const cidsPayload = { - nodeId: node.id, - userId: owner.id, - manifestCid: cid, - nodeVersionId: nodeVersion.id, - nodeUuid: node.uuid, - }; - - /** - * Publish Step 1: - * Create public data refs and data mirror jobs from the CIDs in the manifest - */ - let cidsRequiredForPublish: Prisma.PublicDataReferenceCreateManyInput[] = []; - // debugger; - try { - /*** - * Traverse the DAG structure to find all relevant CIDs and get relevant info for indexing - */ - cidsRequiredForPublish = await getAllCidsRequiredForPublish(cid, node.uuid, owner.id, node.id, nodeVersion.id); - - /** - * Index the DAGs from IPFS in order to avoid recurrent IPFS calls when requesting data in the future - */ - const newPublicDataRefs = await createPublicDataRefs(cidsRequiredForPublish, owner.id, nodeVersion.id); - - /** - * Create a job per mirror in order to track the status of the upload - * There can be multiple mirrors per node, right now there is just Estuary - * - * NOTE: uncomment when reactivating public ref mirroring - const dataMirrorJobs = await createDataMirrorJobs(cidsRequiredForPublish, owner.id); - */ - - // TODO: update public data refs to link versionId - - /** - * Save a success for configurable service quality tracking purposes - */ - await saveInteractionWithoutReq(ActionType.PUBLISH_NODE_CID_SUCCESS, { - cidsPayload, - result: { newPublicDataRefs }, - }); - } catch (error) { - logger.error({ error }, `[publish::publish] error=${error}`); - /** - * Save a failure for configurable service quality tracking purposes - */ - await saveInteractionWithoutReq(ActionType.PUBLISH_NODE_CID_FAIL, { cidsPayload, error }); - throw error; - } + await handlePublicDataRefs({ + nodeId: node.id, + nodeUuid: node.uuid, + userId: owner.id, + manifestCid: cid, + nodeVersionId: nodeVersion.id, + }); - /** - * Publish Step 2: - * Initiate IPFS storage upload using Estuary - */ const manifest = await getManifestByCid(cid); - const targetDpidUrl = getTargetDpidUrl(); - - // const researchObjectToPublish = { uuid, cid, manifest, ownerId: owner.id }; - const sendDiscordNotification = (error: boolean) => { - const manifestSource = manifest as ResearchObjectV1; - discordNotify(`${targetDpidUrl}/${manifestSource.dpid?.id}${error ? ' (note: estuary-err)' : ''}`); - }; - - // Send an email update to all contributors - // await publishServices.sendVersionUpdateEmailToAllContributors({ node }); - - /** - * NOTE: uncomment when reactivating public ref mirroring - const handleMirrorSuccess = async (publishedResearchObjectResult) => { - await saveInteractionWithoutReq(ActionType.PUBLISH_NODE_RESEARCH_OBJECT_SUCCESS, { - researchObjectToPublish, - result: publishedResearchObjectResult, - }); - - sendDiscordNotification(false); - }; - const handleMirrorFail = async (error) => { - await saveInteractionWithoutReq(ActionType.PUBLISH_NODE_RESEARCH_OBJECT_FAIL, { - researchObjectToPublish, - error, - }); - - sendDiscordNotification(true); - }; - - const publicDataReferences = await prisma.publicDataReference.findMany({ - where: { - versionId: nodeVersion.id, - }, - }); - logger.debug( - { publicDataReferences }, - `[publish::publish] publicDataReferences=${JSON.stringify(publicDataReferences)}`, - ); - - // trigger ipfs storage upload, but don't wait for it to finish, will happen async - publishResearchObject(publicDataReferences).then(handleMirrorSuccess).catch(handleMirrorFail); - */ - sendDiscordNotification(false); + discordNotify(`${targetDpidUrl}/${manifest.dpid?.id}`); /** * Save the cover art for this Node for later sharing: PDF -> JPG for this version diff --git a/desci-server/src/workers/publish.ts b/desci-server/src/workers/publish.ts index 8d20eaadf..d78b1484b 100644 --- a/desci-server/src/workers/publish.ts +++ b/desci-server/src/workers/publish.ts @@ -7,7 +7,6 @@ import { prisma } from '../client.js'; import { publishHandler } from '../controllers/nodes/publish.js'; import { logger as parentLogger } from '../logger.js'; import { lockService } from '../redisClient.js'; -import { getManifestByCid } from '../services/data/processing.js'; import { fixDpid, getTargetDpidUrl } from '../services/fixDpid.js'; enum ProcessOutcome { @@ -25,7 +24,7 @@ const logger = parentLogger.child({ module: 'PUBLISH WORKER', hostname }); const checkTransaction = async (transactionId: string, uuid: string) => { const provider = ethers.getDefaultProvider(ETHEREUM_RPC_URL); - if (!process.env.MUTE_PUBLISH_WORKER) + if (!process.env.MUTE_PUBLISH_WORKER) { logger.info( { uuid, @@ -34,6 +33,7 @@ const checkTransaction = async (transactionId: string, uuid: string) => { }, 'TX::check transaction', ); + }; const tx = await provider.getTransactionReceipt(transactionId); logger.info({ tx, uuid, transactionId, ETHEREUM_RPC_URL, network: await provider.getNetwork() }, 'TX::Receipt'); @@ -58,8 +58,7 @@ async function processPublishQueue() { await fixDpid(task.dpid); } else { logger.warn('DPID URL not set, skipping dpid fix'); - } - + }; lockService.freeLock(task.transactionId); }) .catch((err) => { diff --git a/desci-server/yarn.lock b/desci-server/yarn.lock index 68750092f..4db133102 100644 --- a/desci-server/yarn.lock +++ b/desci-server/yarn.lock @@ -1635,10 +1635,10 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" -"@desci-labs/desci-contracts@0.2.5-rc3": - version "0.2.5-rc3" - resolved "https://registry.yarnpkg.com/@desci-labs/desci-contracts/-/desci-contracts-0.2.5-rc3.tgz#bd9f0b221bf4df295855a50853f35161ce6d066e" - integrity sha512-+b0TTZCZjceCw5DuVqCxu9LlkHBMvF5PHw2Q/5N+cuveb2YMtPcj+TlVAEfsi+HcgAiagqaUKWI9903Kf8X1IA== +"@desci-labs/desci-contracts@0.2.5-rc6": + version "0.2.5-rc6" + resolved "https://registry.yarnpkg.com/@desci-labs/desci-contracts/-/desci-contracts-0.2.5-rc6.tgz#5c95b517865beeed45630c40c389a9b28d89f39a" + integrity sha512-SoPFZ6RnhtlqISuV5fJ+YbiTbmuIMwYxm4Htg+ePj8flTe6iWbW9Ddj1Bo9y0XmRasgfrR8DTnbdNAnyX95Pdw== "@desci-labs/desci-models@0.2.7-rc3": version "0.2.7-rc3" From fc22f75e3040aaaba1c7b68b4cca698967035155 Mon Sep 17 00:00:00 2001 From: m0ar Date: Thu, 13 Jun 2024 16:44:46 +0200 Subject: [PATCH 23/34] server: fix leftover conflict marker --- desci-server/src/controllers/nodes/publish.ts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/desci-server/src/controllers/nodes/publish.ts b/desci-server/src/controllers/nodes/publish.ts index e4b03fba9..70548c18d 100644 --- a/desci-server/src/controllers/nodes/publish.ts +++ b/desci-server/src/controllers/nodes/publish.ts @@ -14,11 +14,6 @@ import { setCeramicStream, setDpidAlias, } from '../../services/nodeManager.js'; -<<<<<<< HEAD -import orcidApiService from '../../services/orcid.js'; -import { publishServices } from '../../services/PublishServices.js'; -======= ->>>>>>> a91865b (server: refactor publish flow, default to dpid alias registry unless overridden) import { discordNotify } from '../../utils/discordUtils.js'; import { ensureUuidEndsWithDot } from '../../utils.js'; import { getOrCreateDpid, upgradeDpid } from './createDpid.js'; From d9cdb6dc980658f022a5ab63a6d6207ab02828d6 Mon Sep 17 00:00:00 2001 From: m0ar Date: Fri, 14 Jun 2024 09:25:24 +0200 Subject: [PATCH 24/34] server: switch publish function with payload instead of env --- .env.example | 3 --- desci-server/src/controllers/nodes/publish.ts | 15 ++++++++++----- nodes-lib/src/api.ts | 3 +++ nodes-lib/test/root.spec.ts | 3 ++- 4 files changed, 15 insertions(+), 9 deletions(-) diff --git a/.env.example b/.env.example index 4856b89fd..3bddd15af 100755 --- a/.env.example +++ b/.env.example @@ -134,6 +134,3 @@ DOI_PREFIX=https://doi.org/10.62891 CROSSREF_API=https://api.crossref.org CROSSREF_API_KEY= CROSSREF_EMAIL= - -# Set this truthy to use legacy dPID publish -FALLBACK_LEGACY_DPID= diff --git a/desci-server/src/controllers/nodes/publish.ts b/desci-server/src/controllers/nodes/publish.ts index 70548c18d..51743c335 100644 --- a/desci-server/src/controllers/nodes/publish.ts +++ b/desci-server/src/controllers/nodes/publish.ts @@ -25,6 +25,7 @@ export type PublishReqBody = { transactionId: string; ceramicStream?: string; commitId?: string; + useNewPublish: boolean; }; export type PublishRequest = Request & { @@ -41,8 +42,12 @@ export type PublishResBody = }; // call node publish service and add job to queue -export const publish = async (req: PublishRequest, res: Response, _next: NextFunction) => { - const { uuid, cid, manifest, transactionId, ceramicStream, commitId } = req.body; +export const publish = async ( + req: PublishRequest, + res: Response, + _next: NextFunction +) => { + const { uuid, cid, manifest, transactionId, ceramicStream, commitId, useNewPublish } = req.body; // debugger; const email = req.user.email; const logger = parentLogger.child({ @@ -57,6 +62,7 @@ export const publish = async (req: PublishRequest, res: Response commitId, email, user: req.user, + useNewPublish, }); if (!uuid || !cid || !manifest) { @@ -105,8 +111,7 @@ export const publish = async (req: PublishRequest, res: Response let publishTask: PublishTaskQueue | undefined; - // Do synchronous publish if the caller passed stream information - if (!process.env.FALLBACK_LEGACY_DPID) { + if (useNewPublish) { await syncPublish( ceramicStream, commitId, @@ -154,7 +159,7 @@ export const publish = async (req: PublishRequest, res: Response } catch (err) { logger.error({ err }, '[publish::publish] node-publish-err'); return res.status(400).send({ ok: false, error: err.message }); - } + }; }; /** diff --git a/nodes-lib/src/api.ts b/nodes-lib/src/api.ts index 28ba9374b..0385a80f2 100644 --- a/nodes-lib/src/api.ts +++ b/nodes-lib/src/api.ts @@ -323,6 +323,7 @@ type PublishParams = { nodeVersionId?: string, ceramicStream?: string, commitId?: string, + useNewPublish: boolean, }; /** Result of publishing a draft node */ @@ -356,6 +357,7 @@ export const publishNode = async ( manifest: publishResult.manifest, ceramicStream: publishResult.ceramicIDs.streamID, commitId: publishResult.ceramicIDs.commitID, + useNewPublish: true, }; try { @@ -417,6 +419,7 @@ export const publishDraftNode = async ( transactionId: publishResult.transactionId, ceramicStream: publishResult.ceramicIDs?.streamID, commitId: publishResult.ceramicIDs?.commitID, + useNewPublish: false, }; try { diff --git a/nodes-lib/test/root.spec.ts b/nodes-lib/test/root.spec.ts index 60af7ce21..b9efa2131 100644 --- a/nodes-lib/test/root.spec.ts +++ b/nodes-lib/test/root.spec.ts @@ -383,7 +383,7 @@ describe("nodes-lib", () => { }); - describe.only("publishing ", async () => { + describe("publishing ", async () => { let uuid: string; let publishResult: PublishResponse; const did = await authorizedSessionDidFromSigner(testSigner, getResources()); @@ -490,6 +490,7 @@ describe("nodes-lib", () => { // make a regular publish pubResult = await publishNode(uuid, did); + await sleep(1000); }); test("migrates history to new stream", async () => { From d490ed94dc6c03506fbde753548d976f4bb843be Mon Sep 17 00:00:00 2001 From: m0ar Date: Fri, 14 Jun 2024 09:55:54 +0200 Subject: [PATCH 25/34] nodeslib: tweak test timeouts to reduce flakiness --- nodes-lib/test/root.spec.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/nodes-lib/test/root.spec.ts b/nodes-lib/test/root.spec.ts index b9efa2131..8d43cdc13 100644 --- a/nodes-lib/test/root.spec.ts +++ b/nodes-lib/test/root.spec.ts @@ -329,7 +329,7 @@ describe("nodes-lib", () => { await sleep(5_000); await publishDraftNode(uuid, testSigner, did); // Allow graph node to index - await sleep(1_500); + await sleep(2_500); }); test("updates entry in dpid registry", async () => { @@ -370,7 +370,7 @@ describe("nodes-lib", () => { const codexHistory = await getCodexHistory(pubResult.ceramicIDs!.streamID); expect(dpidHistory.versions.length).toEqual(2); expect (codexHistory.length).toEqual(2); - }); + }, { timeout: 10_000}); /** This is not an user feature, but part of error handling during publish */ test("can remove dPID from manifest", async () => { @@ -448,6 +448,7 @@ describe("nodes-lib", () => { beforeAll(async () => { nodeStateBefore = await getDraftNode(uuid); updateResult = await publishNode(uuid, did); + await sleep(1000); }); test("updates most recent state", async () => { From be8bf3bc10d4e1d4916de6f527b8dabef2c7ead8 Mon Sep 17 00:00:00 2001 From: m0ar Date: Fri, 14 Jun 2024 10:07:53 +0200 Subject: [PATCH 26/34] unlink local deps in server and nodes-lib --- desci-server/package.json | 2 +- desci-server/yarn.lock | 8 ++++---- nodes-lib/package-lock.json | 14 +++++++------- nodes-lib/package.json | 2 +- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/desci-server/package.json b/desci-server/package.json index 4a47a9aeb..5ee83cb9b 100755 --- a/desci-server/package.json +++ b/desci-server/package.json @@ -55,8 +55,8 @@ "@automerge/automerge-repo": "^1.0.19", "@automerge/automerge-repo-network-websocket": "^1.0.19", "@aws-sdk/client-s3": "^3.537.0", - "@desci-labs/desci-models": "0.2.7-rc3", "@desci-labs/desci-contracts": "0.2.5-rc6", + "@desci-labs/desci-models": "0.2.7-rc5", "@honeycombio/opentelemetry-node": "^0.3.2", "@ipld/dag-pb": "^4.0.0", "@opentelemetry/api": "^1.8.0", diff --git a/desci-server/yarn.lock b/desci-server/yarn.lock index 4db133102..087a09cfd 100644 --- a/desci-server/yarn.lock +++ b/desci-server/yarn.lock @@ -1640,10 +1640,10 @@ resolved "https://registry.yarnpkg.com/@desci-labs/desci-contracts/-/desci-contracts-0.2.5-rc6.tgz#5c95b517865beeed45630c40c389a9b28d89f39a" integrity sha512-SoPFZ6RnhtlqISuV5fJ+YbiTbmuIMwYxm4Htg+ePj8flTe6iWbW9Ddj1Bo9y0XmRasgfrR8DTnbdNAnyX95Pdw== -"@desci-labs/desci-models@0.2.7-rc3": - version "0.2.7-rc3" - resolved "https://registry.yarnpkg.com/@desci-labs/desci-models/-/desci-models-0.2.7-rc3.tgz#b033073e6b77edde85491731d5c03469f443aaa1" - integrity sha512-RL1vwUHTumpmj7goX6+AcSVt0MGpdm4QWZ20gkmE9+BlL1eIxX+oQzQFmW92XXHWUQOETIaL1YnHsGCVz4gJNw== +"@desci-labs/desci-models@0.2.7-rc5": + version "0.2.7-rc5" + resolved "https://registry.yarnpkg.com/@desci-labs/desci-models/-/desci-models-0.2.7-rc5.tgz#fec8cd3372eaa22fd727d87fa8967a7c093e6d5f" + integrity sha512-mA3rpgaWfDAxO6BXejijP+mvmzvVTHPQ/vEyWkzeZ/V8DGUHzcScYAa6W5RD5mWRmFIAXGAg/zQuwaxw7PaOSg== dependencies: jsonld "^8.1.1" schema-dts "^1.1.2" diff --git a/nodes-lib/package-lock.json b/nodes-lib/package-lock.json index 38a0798bb..f6908d891 100644 --- a/nodes-lib/package-lock.json +++ b/nodes-lib/package-lock.json @@ -10,7 +10,7 @@ "license": "MIT", "dependencies": { "@desci-labs/desci-codex-lib": "^1.1.7", - "@desci-labs/desci-contracts": "^0.2.5-rc1", + "@desci-labs/desci-contracts": "^0.2.5-rc6", "@desci-labs/desci-models": "^0.2.3-rc1", "@didtools/cacao": "^3.0.1", "@didtools/pkh-ethereum": "^0.5.0", @@ -1010,9 +1010,9 @@ } }, "node_modules/@desci-labs/desci-contracts": { - "version": "0.2.5-rc1", - "resolved": "https://registry.npmjs.org/@desci-labs/desci-contracts/-/desci-contracts-0.2.5-rc1.tgz", - "integrity": "sha512-wA4zDRp3GT3ZKo0/qFT2fKuLElQFXgycBnuaa2RPCOEfxQXFOqDYOyaqnhbklnutjit1MjwitiO6E6SFWzk6zg==" + "version": "0.2.5-rc6", + "resolved": "https://registry.npmjs.org/@desci-labs/desci-contracts/-/desci-contracts-0.2.5-rc6.tgz", + "integrity": "sha512-SoPFZ6RnhtlqISuV5fJ+YbiTbmuIMwYxm4Htg+ePj8flTe6iWbW9Ddj1Bo9y0XmRasgfrR8DTnbdNAnyX95Pdw==" }, "node_modules/@desci-labs/desci-models": { "version": "0.2.3-rc1", @@ -10840,9 +10840,9 @@ } }, "@desci-labs/desci-contracts": { - "version": "0.2.5-rc1", - "resolved": "https://registry.npmjs.org/@desci-labs/desci-contracts/-/desci-contracts-0.2.5-rc1.tgz", - "integrity": "sha512-wA4zDRp3GT3ZKo0/qFT2fKuLElQFXgycBnuaa2RPCOEfxQXFOqDYOyaqnhbklnutjit1MjwitiO6E6SFWzk6zg==" + "version": "0.2.5-rc6", + "resolved": "https://registry.npmjs.org/@desci-labs/desci-contracts/-/desci-contracts-0.2.5-rc6.tgz", + "integrity": "sha512-SoPFZ6RnhtlqISuV5fJ+YbiTbmuIMwYxm4Htg+ePj8flTe6iWbW9Ddj1Bo9y0XmRasgfrR8DTnbdNAnyX95Pdw==" }, "@desci-labs/desci-models": { "version": "0.2.3-rc1", diff --git a/nodes-lib/package.json b/nodes-lib/package.json index 1d4017f29..5cfeb804b 100644 --- a/nodes-lib/package.json +++ b/nodes-lib/package.json @@ -27,7 +27,7 @@ }, "dependencies": { "@desci-labs/desci-codex-lib": "^1.1.7", - "@desci-labs/desci-contracts": "^0.2.5-rc5", + "@desci-labs/desci-contracts": "^0.2.5-rc6", "@desci-labs/desci-models": "^0.2.3-rc1", "@didtools/cacao": "^3.0.1", "@didtools/pkh-ethereum": "^0.5.0", From 2496773e24eb52e9aed4d7de303d5e9df5c4ad08 Mon Sep 17 00:00:00 2001 From: m0ar Date: Fri, 14 Jun 2024 10:13:36 +0200 Subject: [PATCH 27/34] contracts: cleanup hardhat config --- desci-contracts/hardhat.config.ts | 29 +++-------------------------- 1 file changed, 3 insertions(+), 26 deletions(-) diff --git a/desci-contracts/hardhat.config.ts b/desci-contracts/hardhat.config.ts index 393ef0e54..f088d2ecd 100644 --- a/desci-contracts/hardhat.config.ts +++ b/desci-contracts/hardhat.config.ts @@ -50,34 +50,11 @@ module.exports = { mnemonic: process.env.MNEMONIC || DEFAULT_MNEMONIC, }, }, - rinkeby: { - chainId: 4, - saveDeployments: true, - providerType: "WebSocketProvider", - url: "http://eth-rinkeby.alchemyapi.io/v2/X6CiiZczzALlTM2mAIm_cJnpnFWKTu0l", - accounts: process.env.PRIVATE_KEY - ? [process.env.PRIVATE_KEY] - : { - mnemonic: process.env.MNEMONIC || DEFAULT_MNEMONIC, - }, - }, - goerli: { - chainId: 5, - live: true, - saveDeployments: true, - url: "https://eth-goerli.g.alchemy.com/v2/ZeIzCAJyPpRnTtPNSmddHGF-q2yp-2Uy", - accounts: process.env.PRIVATE_KEY - ? [process.env.PRIVATE_KEY] - : { - mnemonic: process.env.MNEMONIC || DEFAULT_MNEMONIC, - }, - gasPrice: 35000000000, - }, sepoliaDev: { chainId: 11155111, live: true, saveDeployments: true, - url: "https://eth-sepolia.g.alchemy.com/v2/Dg4eT90opKOFZ7w-YCxVwX9O-sriKn0N", + url: "https://reverse-proxy-dev.desci.com/rpc_sepolia", accounts: process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : { @@ -89,7 +66,7 @@ module.exports = { chainId: 11155111, live: true, saveDeployments: true, - url: "https://eth-sepolia.g.alchemy.com/v2/Dg4eT90opKOFZ7w-YCxVwX9O-sriKn0N", + url: "https://reverse-proxy-dev.desci.com/rpc_sepolia", accounts: process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : { @@ -113,7 +90,7 @@ module.exports = { chainId: 11155420, live: true, saveDeployments: true, - url: "https://opt-sepolia.g.alchemy.com/v2/vr-m5h17EAZPdtt88rpvkMy8kwo1-iig", //https://reverse-proxy-dev.desci.com/rpc_opt_sepolia", + url: "https://reverse-proxy-dev.desci.com/rpc_opt_sepolia", accounts: process.env.PRIVATE_KEY ? [ process.env.PRIVATE_KEY ] : { From 9ca0a93f53a67880555c8eda625119936392e81d Mon Sep 17 00:00:00 2001 From: m0ar Date: Fri, 14 Jun 2024 13:29:45 +0200 Subject: [PATCH 28/34] contracts: make it harder to accidentally run production env against new dev contracts --- desci-contracts/index.ts | 4 ++-- desci-contracts/package.json | 2 +- desci-server/package.json | 2 +- desci-server/yarn.lock | 8 ++++---- nodes-lib/package-lock.json | 14 +++++++------- nodes-lib/package.json | 2 +- nodes-lib/src/config/chain.ts | 2 +- 7 files changed, 17 insertions(+), 17 deletions(-) diff --git a/desci-contracts/index.ts b/desci-contracts/index.ts index 960d0e4d1..4f5d0fb82 100644 --- a/desci-contracts/index.ts +++ b/desci-contracts/index.ts @@ -17,6 +17,6 @@ export const contracts = { prodDpidInfo, localDpidAliasInfo, devDpidAliasInfo, - // TODO update as soon as deployment is done - prodDpidAliasInfo: localDpidAliasInfo, + // TODO update when opt mainnet contracts are deployed + prodDpidAliasInfo: { proxies: [ { address: "NOT_DEPLOYED" }]}, }; diff --git a/desci-contracts/package.json b/desci-contracts/package.json index f4c99c90e..1ead0e72f 100644 --- a/desci-contracts/package.json +++ b/desci-contracts/package.json @@ -1,7 +1,7 @@ { "name": "@desci-labs/desci-contracts", "description": "Smart contracts implementing DeSci Nodes on-chain state and logic", - "version": "0.2.5-rc6", + "version": "0.2.5-rc7", "license": "MIT", "scripts": { "test": "hardhat clean && hardhat test", diff --git a/desci-server/package.json b/desci-server/package.json index 5ee83cb9b..11d8d5fba 100755 --- a/desci-server/package.json +++ b/desci-server/package.json @@ -55,7 +55,7 @@ "@automerge/automerge-repo": "^1.0.19", "@automerge/automerge-repo-network-websocket": "^1.0.19", "@aws-sdk/client-s3": "^3.537.0", - "@desci-labs/desci-contracts": "0.2.5-rc6", + "@desci-labs/desci-contracts": "0.2.5-rc7", "@desci-labs/desci-models": "0.2.7-rc5", "@honeycombio/opentelemetry-node": "^0.3.2", "@ipld/dag-pb": "^4.0.0", diff --git a/desci-server/yarn.lock b/desci-server/yarn.lock index 087a09cfd..c13101e31 100644 --- a/desci-server/yarn.lock +++ b/desci-server/yarn.lock @@ -1635,10 +1635,10 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" -"@desci-labs/desci-contracts@0.2.5-rc6": - version "0.2.5-rc6" - resolved "https://registry.yarnpkg.com/@desci-labs/desci-contracts/-/desci-contracts-0.2.5-rc6.tgz#5c95b517865beeed45630c40c389a9b28d89f39a" - integrity sha512-SoPFZ6RnhtlqISuV5fJ+YbiTbmuIMwYxm4Htg+ePj8flTe6iWbW9Ddj1Bo9y0XmRasgfrR8DTnbdNAnyX95Pdw== +"@desci-labs/desci-contracts@0.2.5-rc7": + version "0.2.5-rc7" + resolved "https://registry.yarnpkg.com/@desci-labs/desci-contracts/-/desci-contracts-0.2.5-rc7.tgz#a8a49c9518107305be712bcbdbb352faa4057a44" + integrity sha512-W1hf+mv5KWnqCuXX3uBiBsll+iMD82GJbsGs3huzH6qY2TySVFUCLov017B0RGz2Ap1WRB9w7h3o9CEwDuV5lQ== "@desci-labs/desci-models@0.2.7-rc5": version "0.2.7-rc5" diff --git a/nodes-lib/package-lock.json b/nodes-lib/package-lock.json index f6908d891..84fd74bab 100644 --- a/nodes-lib/package-lock.json +++ b/nodes-lib/package-lock.json @@ -10,7 +10,7 @@ "license": "MIT", "dependencies": { "@desci-labs/desci-codex-lib": "^1.1.7", - "@desci-labs/desci-contracts": "^0.2.5-rc6", + "@desci-labs/desci-contracts": "^0.2.5-rc7", "@desci-labs/desci-models": "^0.2.3-rc1", "@didtools/cacao": "^3.0.1", "@didtools/pkh-ethereum": "^0.5.0", @@ -1010,9 +1010,9 @@ } }, "node_modules/@desci-labs/desci-contracts": { - "version": "0.2.5-rc6", - "resolved": "https://registry.npmjs.org/@desci-labs/desci-contracts/-/desci-contracts-0.2.5-rc6.tgz", - "integrity": "sha512-SoPFZ6RnhtlqISuV5fJ+YbiTbmuIMwYxm4Htg+ePj8flTe6iWbW9Ddj1Bo9y0XmRasgfrR8DTnbdNAnyX95Pdw==" + "version": "0.2.5-rc7", + "resolved": "https://registry.npmjs.org/@desci-labs/desci-contracts/-/desci-contracts-0.2.5-rc7.tgz", + "integrity": "sha512-W1hf+mv5KWnqCuXX3uBiBsll+iMD82GJbsGs3huzH6qY2TySVFUCLov017B0RGz2Ap1WRB9w7h3o9CEwDuV5lQ==" }, "node_modules/@desci-labs/desci-models": { "version": "0.2.3-rc1", @@ -10840,9 +10840,9 @@ } }, "@desci-labs/desci-contracts": { - "version": "0.2.5-rc6", - "resolved": "https://registry.npmjs.org/@desci-labs/desci-contracts/-/desci-contracts-0.2.5-rc6.tgz", - "integrity": "sha512-SoPFZ6RnhtlqISuV5fJ+YbiTbmuIMwYxm4Htg+ePj8flTe6iWbW9Ddj1Bo9y0XmRasgfrR8DTnbdNAnyX95Pdw==" + "version": "0.2.5-rc7", + "resolved": "https://registry.npmjs.org/@desci-labs/desci-contracts/-/desci-contracts-0.2.5-rc7.tgz", + "integrity": "sha512-W1hf+mv5KWnqCuXX3uBiBsll+iMD82GJbsGs3huzH6qY2TySVFUCLov017B0RGz2Ap1WRB9w7h3o9CEwDuV5lQ==" }, "@desci-labs/desci-models": { "version": "0.2.3-rc1", diff --git a/nodes-lib/package.json b/nodes-lib/package.json index 5cfeb804b..9a6fa0086 100644 --- a/nodes-lib/package.json +++ b/nodes-lib/package.json @@ -27,7 +27,7 @@ }, "dependencies": { "@desci-labs/desci-codex-lib": "^1.1.7", - "@desci-labs/desci-contracts": "^0.2.5-rc6", + "@desci-labs/desci-contracts": "^0.2.5-rc7", "@desci-labs/desci-models": "^0.2.3-rc1", "@didtools/cacao": "^3.0.1", "@didtools/pkh-ethereum": "^0.5.0", diff --git a/nodes-lib/src/config/chain.ts b/nodes-lib/src/config/chain.ts index 3f1c72b05..d11da6fc0 100644 --- a/nodes-lib/src/config/chain.ts +++ b/nodes-lib/src/config/chain.ts @@ -117,7 +117,7 @@ export const CHAIN_CONFIGS = { chainId: "10", rpcUrl: "https://reverse-proxy-prod.desci.com/rpc_opt_mainnet", dpidAliasRegistryConnector: signerOrProvider => tc.DpidAliasRegistry__factory.connect( - "NOT_DEPLOYED",//contracts.prodDpidAliasInfo.proxies.at(0)!.address, + contracts.prodDpidAliasInfo.proxies.at(0)!.address, signerOrProvider, ), } From 2654a8456dc1db6c71265e9b0f8bc7f33d5b50ce Mon Sep 17 00:00:00 2001 From: m0ar Date: Mon, 17 Jun 2024 12:15:15 +0200 Subject: [PATCH 29/34] server: enforce history validation before upgrading dpid --- Dockerfile | 3 +- desci-server/package.json | 1 + .../src/controllers/nodes/createDpid.ts | 78 +- desci-server/src/controllers/nodes/publish.ts | 4 + desci-server/yarn.lock | 3087 ++++++++++++++++- 5 files changed, 3124 insertions(+), 49 deletions(-) diff --git a/Dockerfile b/Dockerfile index 147c5a5da..4ae02c588 100755 --- a/Dockerfile +++ b/Dockerfile @@ -46,7 +46,8 @@ COPY --chown=node:node ./desci-contracts/artifacts ./src/desci-contracts-artifac RUN mv package.json package.json.old RUN sed 's/link:/file:/' package.json.old > package.json -RUN --mount=type=cache,target=/root/.yarn YARN_CACHE_FOLDER=/root/.yarn yarn install +# Remove ignore-engines flag after bump to node 20, composedb CLI blocks installing meanwhile +RUN --mount=type=cache,target=/root/.yarn YARN_CACHE_FOLDER=/root/.yarn yarn install --ignore-engines RUN chown -R node /app/node_modules/.prisma RUN chown -R node /root/.cache/prisma/master diff --git a/desci-server/package.json b/desci-server/package.json index 11d8d5fba..d30ffece4 100755 --- a/desci-server/package.json +++ b/desci-server/package.json @@ -55,6 +55,7 @@ "@automerge/automerge-repo": "^1.0.19", "@automerge/automerge-repo-network-websocket": "^1.0.19", "@aws-sdk/client-s3": "^3.537.0", + "@desci-labs/desci-codex-lib": "^1.1.7", "@desci-labs/desci-contracts": "0.2.5-rc7", "@desci-labs/desci-models": "0.2.7-rc5", "@honeycombio/opentelemetry-node": "^0.3.2", diff --git a/desci-server/src/controllers/nodes/createDpid.ts b/desci-server/src/controllers/nodes/createDpid.ts index fbc6daea0..8dd498d76 100644 --- a/desci-server/src/controllers/nodes/createDpid.ts +++ b/desci-server/src/controllers/nodes/createDpid.ts @@ -3,8 +3,10 @@ import { ethers } from "ethers"; import { logger as parentLogger } from '../../logger.js'; import { RequestWithNode } from "../../middleware/authorisation.js"; import { contracts, typechain as tc } from "@desci-labs/desci-contracts"; -import { DpidMintedEvent, UpgradedDpidEvent } from "@desci-labs/desci-contracts/dist/typechain-types/DpidAliasRegistry.js"; +import { DpidAliasRegistry, type DpidMintedEvent } from "@desci-labs/desci-contracts/dist/typechain-types/DpidAliasRegistry.js"; import { setDpidAlias } from "../../services/nodeManager.js"; +import { newCeramicClient, resolveHistory } from "@desci-labs/desci-codex-lib"; +import { Logger } from "pino"; type DpidResponse = DpidSuccessResponse | DpidErrorResponse; export type DpidSuccessResponse = { @@ -15,15 +17,17 @@ export type DpidErrorResponse = { error: string; }; +const CERAMIC_API = process.env.CERAMIC_API; + /** Not secret: pre-seeded ganache account for local dev */ const GANACHE_PKEY = "ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80"; let aliasRegistryAddress: string; -const url = process.env.SERVER_URL; +const apiServerUrl = process.env.SERVER_URL; -if (url.includes("localhost")) { +if (apiServerUrl.includes("localhost")) { aliasRegistryAddress = contracts.localDpidAliasInfo.proxies.at(0).address; -} else if (url.includes("dev") || url.includes("staging")) { +} else if (apiServerUrl.includes("dev") || apiServerUrl.includes("staging")) { aliasRegistryAddress = contracts.devDpidAliasInfo.proxies.at(0).address; } else if (process.env.NODE_ENV === "production") { aliasRegistryAddress = contracts.prodDpidAliasInfo.proxies.at(0).address; @@ -48,12 +52,12 @@ export const createDpid = async (req: RequestWithNode, res: Response { + if (!CERAMIC_API) { + throw new Error("CERAMIC_API not configured"); + }; + + const client = newCeramicClient(CERAMIC_API); + const [_owner, legacyVersions] = await registry.legacyLookup(dpid); + + const streamEvents = await resolveHistory(client, ceramicStream) + const streamStates = await Promise.all(streamEvents + .map(s => s.commit) + .map(c => client.loadStream(c)) + ); + + // Stream could have one or more additional entries + if (legacyVersions.length < streamStates.length) { + logger.error( + "Stream history shorter than legacy history", + { legacyVersions, streamStates} + ); + return false; + }; + + for (const [i, streamState] of streamStates.entries()) { + // Cant compare timestamp because anchor time WILL differ + const expectedCid = legacyVersions[i][0]; + if (expectedCid !== streamState.content.manifest) { + logger.error( + "Manifest CID mismatch between legacy and stream history", + { legacyVersions, streamStates} + ); + return false; + }; + }; + + return true; +} diff --git a/desci-server/src/controllers/nodes/publish.ts b/desci-server/src/controllers/nodes/publish.ts index 51743c335..f6d617968 100644 --- a/desci-server/src/controllers/nodes/publish.ts +++ b/desci-server/src/controllers/nodes/publish.ts @@ -112,6 +112,10 @@ export const publish = async ( let publishTask: PublishTaskQueue | undefined; if (useNewPublish) { + logger.info( + {ceramicStream, commitId, uuid, owner: owner.id}, + "Triggering new publish flow" + ); await syncPublish( ceramicStream, commitId, diff --git a/desci-server/yarn.lock b/desci-server/yarn.lock index c13101e31..f0a507ed3 100644 --- a/desci-server/yarn.lock +++ b/desci-server/yarn.lock @@ -7,6 +7,11 @@ resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== +"@adraffy/ens-normalize@1.10.0": + version "1.10.0" + resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.10.0.tgz#d2a39395c587e092d77cbbc80acf956a54f38bf7" + integrity sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q== + "@alloc/quick-lru@^5.2.0": version "5.2.0" resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" @@ -1349,6 +1354,13 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.0.tgz#26a3d1ff49031c53a97d03b604375f028746a9ac" integrity sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg== +"@babel/runtime@7.6.0": + version "7.6.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.6.0.tgz#4fc1d642a9fd0299754e8b5de62c631cf5568205" + integrity sha512-89eSBLJsxNxOERC0Op4vd+0Bqm6wRMqMbFtV3i0/fbaWw/mJ8Q3eBvgX0G4SyrOOLCtbu98HspF8o09MRT+KzQ== + dependencies: + regenerator-runtime "^0.13.2" + "@babel/runtime@^7.13.10", "@babel/runtime@^7.23.5": version "7.24.1" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.1.tgz#431f9a794d173b53720e69a6464abc6f0e2a5c57" @@ -1356,6 +1368,13 @@ dependencies: regenerator-runtime "^0.14.0" +"@babel/runtime@^7.16.3", "@babel/runtime@^7.17.2": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.7.tgz#f4f0d5530e8dbdf59b3451b9b3e594b6ba082e12" + integrity sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw== + dependencies: + regenerator-runtime "^0.14.0" + "@babel/runtime@^7.21.0": version "7.24.0" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.0.tgz#584c450063ffda59697021430cb47101b085951e" @@ -1427,6 +1446,453 @@ resolved "https://registry.yarnpkg.com/@cbor-extract/cbor-extract-win32-x64/-/cbor-extract-win32-x64-2.2.0.tgz#4b3f07af047f984c082de34b116e765cb9af975f" integrity sha512-l2M+Z8DO2vbvADOBNLbbh9y5ST1RY5sqkWOg/58GkUPBYou/cuNZ68SGQ644f1CvZ8kcOxyZtw06+dxWHIoN/w== +"@ceramicnetwork/anchor-listener@^4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/anchor-listener/-/anchor-listener-4.13.0.tgz#241d9b6898d7e83901e97a4418015bc0cf4d3d32" + integrity sha512-HGqnMlHIy4F0HheEGoajUmVAkEmLmadFq60QtegYlul03b12X2F56QPolmdnkfvilZDIgXR5z/OGloZKKso9UA== + dependencies: + "@ceramicnetwork/anchor-utils" "^4.13.0" + "@ethersproject/providers" "^5.5.1" + rxjs "^7.8.1" + +"@ceramicnetwork/anchor-utils@^4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/anchor-utils/-/anchor-utils-4.13.0.tgz#8b25cd6b89c32777dedb614479253a07ac397f45" + integrity sha512-qkmh+hk9uuNUO2TtRPbXZjBsD+Jsazl1olQGP/yAsBmjriE6szzJhf5hnBclRcJ78ssOFcn8k3NPuzBycJFFGg== + dependencies: + "@ceramicnetwork/common" "^5.13.0" + "@ethersproject/abi" "^5.7.0" + multiformats "^13.0.0" + uint8arrays "^5.0.1" + +"@ceramicnetwork/blockchain-utils-linking@^5.3.0": + version "5.3.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/blockchain-utils-linking/-/blockchain-utils-linking-5.3.0.tgz#fdab99a1aa70235e946bdebbc7b05b69041f896d" + integrity sha512-UDxnnlmWHobCRR3ni7SBf9HdNojDxExOPenLx0tjXBcYeJk5LN/APU1OkVOCd0YePRhr1v9b7kxCF0NwtEIUAA== + dependencies: + "@ceramicnetwork/streamid" "^5.3.0" + "@didtools/cacao" "^3.0.0" + "@stablelib/random" "^1.0.1" + "@stablelib/sha256" "^1.0.1" + caip "~1.1.0" + near-api-js "^0.44.2" + uint8arrays "^5.0.1" + +"@ceramicnetwork/blockchain-utils-validation@^5.13.0": + version "5.13.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/blockchain-utils-validation/-/blockchain-utils-validation-5.13.0.tgz#cb27609503d63f4e684b44434eea5ae56131cffd" + integrity sha512-g96+mR7s+rZ1lFSLHsdYx3cAXybBqExG7e7K7kKYQ/EJkKFNDAb0ABGCA1+3VdYvRwJJHq5XYyPiR1e1f6gPfA== + dependencies: + "@ceramicnetwork/blockchain-utils-linking" "^5.3.0" + "@ceramicnetwork/common" "^5.13.0" + "@ethersproject/contracts" "^5.5.0" + "@ethersproject/providers" "^5.5.1" + "@ethersproject/wallet" "^5.5.0" + "@noble/curves" "^1.1.0" + "@polkadot/util-crypto" "^7.0.2" + "@smontero/eosio-signing-tools" "^0.0.6" + "@taquito/utils" "^11.2.0" + "@tendermint/sig" "^0.6.0" + "@zondax/filecoin-signing-tools" "^0.18.2" + caip "~1.1.0" + tweetnacl "^1.0.3" + uint8arrays "^5.0.1" + +"@ceramicnetwork/codecs@^2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/codecs/-/codecs-2.4.1.tgz#345ea2857915191d563abe7b9b165075b289f644" + integrity sha512-QhdUHp7PJm+qL05f6ovlUe7K85urBt3V7JKQrmq33jCYt4YlVT2bTyUdsrgcyA+IJZnXP1KEWuSdcpE1V3Qe/A== + dependencies: + "@ceramicnetwork/streamid" "^3.4.1" + cartonne "^3.0.1" + codeco "^1.1.0" + dag-jose "^4.0.0" + multiformats "^13.0.0" + uint8arrays "^5.0.1" + +"@ceramicnetwork/codecs@^4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/codecs/-/codecs-4.13.0.tgz#206597f42a5700f694a6eb6437c37acea28f3c5f" + integrity sha512-/p7+PdP4c+qBZXuHy1nd7cPNvlx/WHaCZgCdsLoB/ff+jbt0z0wIf34snEXvJddTAxfi5fAYYoMaqr7IhG0l7A== + dependencies: + "@ceramicnetwork/common" "^5.13.0" + "@ceramicnetwork/streamid" "^5.3.0" + cartonne "^3.0.1" + codeco "^1.1.0" + dag-jose "^4.0.0" + multiformats "^13.0.0" + uint8arrays "^5.0.1" + +"@ceramicnetwork/common@^3.4.1": + version "3.4.1" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/common/-/common-3.4.1.tgz#47f24157742fbfb9a9137a585818fa5dc29e74ca" + integrity sha512-SVtPG6tkaDF77iM2mweXV+JSgZa3tKvuku0TIrA+pZswa1EHtnRHssSilaj4q91JNaTy2Gsk86oK6MuQp9+LKg== + dependencies: + "@ceramicnetwork/codecs" "^2.4.1" + "@ceramicnetwork/streamid" "^3.4.1" + "@didtools/cacao" "^3.0.0" + "@didtools/pkh-ethereum" "^0.2.0" + "@didtools/pkh-solana" "^0.2.0" + "@didtools/pkh-stacks" "^0.2.0" + "@didtools/pkh-tezos" "^0.3.0" + "@stablelib/random" "^1.0.1" + caip "~1.1.0" + flat "^5.0.2" + it-first "^3.0.4" + jet-logger "1.2.2" + lodash.clonedeep "^4.5.0" + logfmt "^1.3.2" + multiformats "^13.0.0" + rxjs "^7.8.1" + uint8arrays "^5.0.1" + +"@ceramicnetwork/common@^5.1.0", "@ceramicnetwork/common@^5.13.0": + version "5.13.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/common/-/common-5.13.0.tgz#0157449b8e8cf96148f81389bd79f1a78977b362" + integrity sha512-gYLXoABZqdhkci8JgeASkmWuGJSSGrLrscqa1RADb2VM1uq6Mv08oojCEgHN5MpxB8Hyb3/zbf1JHIttY4mpwQ== + dependencies: + "@ceramicnetwork/model-metrics" "^1.2.5" + "@ceramicnetwork/streamid" "^5.3.0" + "@didtools/cacao" "^3.0.0" + "@didtools/key-webauthn" "^2.0.2" + "@didtools/pkh-ethereum" "^0.2.0" + "@didtools/pkh-solana" "^0.2.0" + "@didtools/pkh-stacks" "^0.2.0" + "@didtools/pkh-tezos" "^0.3.0" + "@ipld/dag-cbor" "^9.1.0" + "@stablelib/random" "^1.0.1" + caip "~1.1.0" + flat "^5.0.2" + it-first "^3.0.4" + jet-logger "1.2.2" + lodash.clonedeep "^4.5.0" + logfmt "^1.3.2" + multiformats "^13.0.0" + rxjs "^7.8.1" + uint8arrays "^5.0.1" + +"@ceramicnetwork/core@^5.2.0": + version "5.14.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/core/-/core-5.14.0.tgz#6ff0ac6daa7a08ba3b80074683488894c39ae34d" + integrity sha512-ybKYgfMRhDkoraiskDee8Gp5holzdg9dy06cvczSAhEkTQFUZqrrO/hozaSyumoHO5SP7Xzyx2svYVGvOxyCXg== + dependencies: + "@ceramicnetwork/anchor-listener" "^4.13.0" + "@ceramicnetwork/anchor-utils" "^4.13.0" + "@ceramicnetwork/codecs" "^4.13.0" + "@ceramicnetwork/common" "^5.13.0" + "@ceramicnetwork/indexing" "^4.14.0" + "@ceramicnetwork/ipfs-topology" "^5.13.0" + "@ceramicnetwork/job-queue" "^4.14.0" + "@ceramicnetwork/model-metrics" "^1.2.5" + "@ceramicnetwork/observability" "^1.4.4" + "@ceramicnetwork/pinning-aggregation" "^5.13.0" + "@ceramicnetwork/pinning-ipfs-backend" "^5.13.0" + "@ceramicnetwork/stream-caip10-link" "^5.13.0" + "@ceramicnetwork/stream-caip10-link-handler" "^5.14.0" + "@ceramicnetwork/stream-handler-common" "^4.13.0" + "@ceramicnetwork/stream-model" "^4.13.0" + "@ceramicnetwork/stream-model-handler" "^4.14.0" + "@ceramicnetwork/stream-model-instance" "^4.14.0" + "@ceramicnetwork/stream-model-instance-handler" "^4.14.0" + "@ceramicnetwork/stream-tile" "^5.13.0" + "@ceramicnetwork/stream-tile-handler" "^5.14.0" + "@ceramicnetwork/streamid" "^5.3.0" + "@ceramicnetwork/wasm-bloom-filter" "^0.1.0" + "@datastructures-js/priority-queue" "^6.1.0" + "@ethersproject/providers" "^5.5.1" + "@ipld/dag-cbor" "^7.0.0" + "@scarf/scarf" "^1.1.1" + "@stablelib/random" "^1.0.1" + "@stablelib/sha256" "^1.0.1" + "@stablelib/uuid" "^1.0.1" + ajv "^8.8.2" + ajv-formats "^2.1.1" + await-semaphore "^0.1.3" + cartonne "^3.0.1" + codeco "^1.1.0" + dag-jose "^4.0.0" + dids "^5.0.0" + it-all "^3.0.1" + it-batch "^3.0.1" + it-first "^3.0.4" + knex "^2.5.1" + least-recent "^1.0.3" + level "^8.0.1" + lodash.clonedeep "^4.5.0" + mapmoize "^1.2.1" + multiformats "^13.0.0" + p-queue "^8.0.1" + pg "^8.11.3" + rxjs "^7.8.1" + sqlite3 "^5.0.8" + uint8arrays "^5.0.1" + +"@ceramicnetwork/http-client@^5.2.0": + version "5.14.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/http-client/-/http-client-5.14.0.tgz#2515b74909f79b80a78b4d646c279bf2de0c675a" + integrity sha512-/wcqy7ikaxaeXDRxx+CSgIJZtTisp0WD0lRxIIDrmqblmwsmame1sK0EFQ1Ha6YzxAQ13ZMgUfWbzv8lbFG7jw== + dependencies: + "@ceramicnetwork/common" "^5.13.0" + "@ceramicnetwork/stream-caip10-link" "^5.13.0" + "@ceramicnetwork/stream-model" "^4.13.0" + "@ceramicnetwork/stream-model-instance" "^4.14.0" + "@ceramicnetwork/stream-tile" "^5.13.0" + "@ceramicnetwork/streamid" "^5.3.0" + "@scarf/scarf" "^1.1.1" + query-string "^7.1.0" + rxjs "^7.8.1" + +"@ceramicnetwork/indexing@^4.14.0": + version "4.14.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/indexing/-/indexing-4.14.0.tgz#2bffc342106c9fe9d4e97b4b3ad354140a86a386" + integrity sha512-9J9WKcJdGDmvWdeniZhRcoVpZoGwVmYxOKNuHEQTySnDbiJp0mHZHY8BVNbasf4Ih/PrcJ6/O0cz2tBzKKGeVg== + dependencies: + "@ceramicnetwork/anchor-listener" "^4.13.0" + "@ceramicnetwork/anchor-utils" "^4.13.0" + "@ceramicnetwork/common" "^5.13.0" + "@ceramicnetwork/job-queue" "^4.14.0" + "@ceramicnetwork/stream-model" "^4.13.0" + "@ceramicnetwork/streamid" "^5.3.0" + "@ethersproject/providers" "^5.5.1" + knex "^2.5.1" + lodash.clonedeep "^4.5.0" + multiformats "^13.0.0" + p-queue "^8.0.1" + pg-boss "^8.2.0" + rxjs "^7.8.1" + uint8arrays "^5.0.1" + +"@ceramicnetwork/ipfs-topology@^5.13.0": + version "5.13.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/ipfs-topology/-/ipfs-topology-5.13.0.tgz#c1c958e0074cd5b1a6829787e78c3b6f9383a8ef" + integrity sha512-uG3wMoo1PssGw7+++NDjfU9+cCb7MZpyPZHanMMTBgXzae1fasRHBOq7FSlBfo8d2pbjlzrshfpqxsP4G2YtUQ== + dependencies: + "@ceramicnetwork/common" "^5.13.0" + +"@ceramicnetwork/job-queue@^4.14.0": + version "4.14.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/job-queue/-/job-queue-4.14.0.tgz#b88131cb41a40ab713147812f390e9662ce98f1e" + integrity sha512-yxZbs11npPOIlwomO7W6bOByT3LWktUpHkhMxnEcrPt4ITmN59D+Lptq1xXffwog0ciTHEUhZiePQmbgxubKvA== + dependencies: + "@ceramicnetwork/common" "^5.13.0" + pg "^8.11.3" + pg-boss "^8.2.0" + rxjs "^7.8.1" + +"@ceramicnetwork/model-metrics@^1.2.5": + version "1.2.5" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/model-metrics/-/model-metrics-1.2.5.tgz#5a8b4f12918671d7d532bf768f06ef1d8ed3cf67" + integrity sha512-L2T0K57CWCyHzTkGmBdM3BNX35YRPX9KqRVkPSjBv2q3Cwwm9KkrBRYHLN6W+37eWVBmKOq57lSTiQsnuSskAw== + dependencies: + "@ceramicnetwork/stream-model-instance" "^2.3.0" + "@ceramicnetwork/streamid" "^3.3.0" + dids "^5.0.2" + fs "0.0.1-security" + key-did-provider-ed25519 "^3.0.2" + key-did-resolver "^4.0.0" + uint8arrays "^5.0.1" + +"@ceramicnetwork/observability@^1.4.4": + version "1.5.6" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/observability/-/observability-1.5.6.tgz#b47cdb493090ff399e446224f99f9d548ba49ffd" + integrity sha512-cminxgAru5VvoBPEMURTaWzdEQqVMiV1e89iaAqPyjr+hAjALWStm90btNPt/PlHlpdkr/jmi4AFi1mFtdT9mQ== + dependencies: + "@opentelemetry/api" "^1.8.0" + "@opentelemetry/exporter-metrics-otlp-http" "^0.50.0" + "@opentelemetry/exporter-prometheus" "^0.50.0" + "@opentelemetry/exporter-trace-otlp-http" "^0.50.0" + "@opentelemetry/resources" "^1.23.0" + "@opentelemetry/sdk-metrics" "^1.23.0" + "@opentelemetry/sdk-trace-base" "^1.23.0" + "@opentelemetry/semantic-conventions" "^1.23.0" + "@types/node" "^20.11.16" + +"@ceramicnetwork/pinning-aggregation@^5.13.0": + version "5.13.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/pinning-aggregation/-/pinning-aggregation-5.13.0.tgz#167b9b5af6361aad81e28b1278580b92b593ece8" + integrity sha512-vbFgtH2K8l5PhGO0FVNDK3vFmtwk8KB/TaPkPPAfIiB/huBncx0x5yVv65zRNlhNpLVIBQDGpdN4ICjHokcjsg== + dependencies: + "@stablelib/sha256" "^1.0.1" + uint8arrays "^5.0.1" + +"@ceramicnetwork/pinning-ipfs-backend@^5.13.0": + version "5.13.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/pinning-ipfs-backend/-/pinning-ipfs-backend-5.13.0.tgz#856116f5d8c37a489cfc7d6dd018e7a2e02283c6" + integrity sha512-NReyMGFO7cJ/+J/jmJZS7QJ9RG0TShbp7vroJvQpHtY0ggWdfhOIrmzgLgbq63ZFF+vbg6SGgTvWKAAWdgsAMw== + dependencies: + "@stablelib/sha256" "^1.0.1" + ipfs-http-client "^60.0.0" + uint8arrays "^5.0.1" + +"@ceramicnetwork/stream-caip10-link-handler@^5.14.0": + version "5.14.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/stream-caip10-link-handler/-/stream-caip10-link-handler-5.14.0.tgz#935128872b52109aea39bba4e70c80e8adaebf36" + integrity sha512-NQHfM65FyJeAL5UBcwJ3EIOy/RFNZPdwLAhfKmZlQGwWmCXBRyJc6vGxxbs/fIEoKRw8AbjwLhCHt6cNSn1qgQ== + dependencies: + "@ceramicnetwork/blockchain-utils-validation" "^5.13.0" + "@ceramicnetwork/common" "^5.13.0" + "@ceramicnetwork/stream-caip10-link" "^5.13.0" + "@ceramicnetwork/stream-handler-common" "^4.13.0" + +"@ceramicnetwork/stream-caip10-link@^5.13.0": + version "5.13.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/stream-caip10-link/-/stream-caip10-link-5.13.0.tgz#e2f5ee8d592c6921e64b813e462155d1996c98a4" + integrity sha512-RJpsO/AERl/tAezICArYW+Wn67aqHzl4lC19D7r4lfI8Y+KOp1o4h7VkCgTFsXr5ulDQPbkE2WQqIkry8kXoUg== + dependencies: + "@ceramicnetwork/common" "^5.13.0" + "@ceramicnetwork/streamid" "^5.3.0" + caip "~1.1.0" + did-resolver "^4.0.1" + lodash.clonedeep "^4.5.0" + +"@ceramicnetwork/stream-handler-common@^4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/stream-handler-common/-/stream-handler-common-4.13.0.tgz#1b02d2b691bac0c38c9e5805b3becda64de2446b" + integrity sha512-YEl/TKlcNUw0ll//Ry3n7s7lbrKdVc9e1GTdxY+cPngb4vPt/pqAhlNfRR4WtQsruZ1GjRPQ239/1arTKdINrg== + dependencies: + "@ceramicnetwork/common" "^5.13.0" + "@ceramicnetwork/observability" "^1.4.4" + "@ceramicnetwork/streamid" "^5.3.0" + lodash.clonedeep "^4.5.0" + +"@ceramicnetwork/stream-model-handler@^4.14.0": + version "4.14.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/stream-model-handler/-/stream-model-handler-4.14.0.tgz#7408575014122de72d7576a25f04c9fec6832346" + integrity sha512-Np6y99Wtp/vXm4XdmhRQHFVDFOmgigrz2YeoqB5C8JZDIhNv+aQsbDOqEn2dxH4oTt5nhp4PmyPAjxaqxpHI0A== + dependencies: + "@ceramicnetwork/common" "^5.13.0" + "@ceramicnetwork/stream-handler-common" "^4.13.0" + "@ceramicnetwork/stream-model" "^4.13.0" + "@ceramicnetwork/streamid" "^5.3.0" + ajv "^8.8.2" + ajv-formats "^2.1.1" + fast-json-patch "^3.1.0" + json-ptr "^3.1.1" + lodash.clonedeep "^4.5.0" + lodash.ismatch "^4.4.0" + uint8arrays "^5.0.1" + +"@ceramicnetwork/stream-model-instance-handler@^4.14.0": + version "4.14.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/stream-model-instance-handler/-/stream-model-instance-handler-4.14.0.tgz#1e7be9aabb25cc3f9824f1d4a5144cd9f434b912" + integrity sha512-qpGkC3iTDSK4BYwcVlEyG7pRJKXwIm4zFGGBlUqcxXUE84QfkTOsHs0WdKeEKhCLs6F0Arn2REnPmk5JuQHOvg== + dependencies: + "@ceramicnetwork/common" "^5.13.0" + "@ceramicnetwork/stream-handler-common" "^4.13.0" + "@ceramicnetwork/stream-model" "^4.13.0" + "@ceramicnetwork/stream-model-instance" "^4.14.0" + "@ceramicnetwork/streamid" "^5.3.0" + ajv "^8.8.2" + ajv-formats "^2.1.1" + fast-json-patch "^3.1.0" + lodash.clonedeep "^4.5.0" + uint8arrays "^5.0.1" + +"@ceramicnetwork/stream-model-instance@^2.3.0": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/stream-model-instance/-/stream-model-instance-2.4.1.tgz#d680d926cb90719f30c0e8c2cb29c336cd77a900" + integrity sha512-vp+oY27BFM64pXN2l4riwK3/3rN1DCEZe/iBrWWJ79SC99S9jFsSnx2TB0RLkBF+n87IsWi+t1WA+FR1KNIe/Q== + dependencies: + "@ceramicnetwork/common" "^3.4.1" + "@ceramicnetwork/streamid" "^3.4.1" + "@ipld/dag-cbor" "^7.0.0" + "@stablelib/random" "^1.0.1" + fast-json-patch "^3.1.0" + object-sizeof "^2.6.1" + uint8arrays "^5.0.1" + +"@ceramicnetwork/stream-model-instance@^4.14.0", "@ceramicnetwork/stream-model-instance@^4.2.0": + version "4.14.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/stream-model-instance/-/stream-model-instance-4.14.0.tgz#d6bb56744a9f696b0a8eaf2b37388567b8970ba8" + integrity sha512-PxSZcyCW0IH8vqKD+eJNpQOHM+y2BzoV1qWuq3hg6ZIpQNWeM264NuVB42KxvAkzplG3se6EVu1iAEuDAVU83Q== + dependencies: + "@ceramicnetwork/common" "^5.13.0" + "@ceramicnetwork/streamid" "^5.3.0" + "@ipld/dag-cbor" "^7.0.0" + "@stablelib/random" "^1.0.1" + fast-json-patch "^3.1.0" + object-sizeof "^2.6.1" + uint8arrays "^5.0.1" + +"@ceramicnetwork/stream-model@^4.1.0", "@ceramicnetwork/stream-model@^4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/stream-model/-/stream-model-4.13.0.tgz#b846a17a7c5b21b40d079c32734bd76f0a30559a" + integrity sha512-fUf9YFTn5RxlWP+n80AgrLkAOmolWP5pjXxDbefg2ev8FJlANWU4J66QIdQPiWNhk8QNCMFN3O7Z/bvkWJyFgg== + dependencies: + "@ceramicnetwork/codecs" "^4.13.0" + "@ceramicnetwork/common" "^5.13.0" + "@ceramicnetwork/streamid" "^5.3.0" + "@ipld/dag-cbor" "^7.0.0" + "@stablelib/random" "^1.0.1" + ajv "^8.8.2" + ajv-formats "^2.1.1" + codeco "^1.1.0" + fast-json-patch "^3.1.0" + json-schema-typed "^8.0.1" + multiformats "^13.0.0" + uint8arrays "^5.0.1" + +"@ceramicnetwork/stream-tile-handler@^5.14.0": + version "5.14.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/stream-tile-handler/-/stream-tile-handler-5.14.0.tgz#9c6710a5d7332576bd00bec9307876aebe014296" + integrity sha512-DxEOggVij1qxDBdkhwoHA1ZjO7ewj31zzhXIe3sDqUhSX5L9iQotE28pyboPiHtoDyk60bapwUAgS1t4aShqlA== + dependencies: + "@ceramicnetwork/common" "^5.13.0" + "@ceramicnetwork/stream-handler-common" "^4.13.0" + "@ceramicnetwork/stream-tile" "^5.13.0" + "@ceramicnetwork/streamid" "^5.3.0" + ajv "^8.8.2" + ajv-formats "^2.1.1" + fast-json-patch "^3.1.0" + least-recent "^1.0.3" + lodash.clonedeep "^4.5.0" + uint8arrays "^5.0.1" + +"@ceramicnetwork/stream-tile@^5.13.0": + version "5.13.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/stream-tile/-/stream-tile-5.13.0.tgz#a06a09b2375712548fe3ae225915d7c140b3a137" + integrity sha512-9qKcZtKIKGu/8Ef1dn89xA7PIabT8hh6Ft+Fdb9k0vZckYlAnDyhzxQCfewcc+AhK4Z3m7qxfQl56dgN+ieWgQ== + dependencies: + "@ceramicnetwork/common" "^5.13.0" + "@ceramicnetwork/streamid" "^5.3.0" + "@ipld/dag-cbor" "^7.0.0" + "@stablelib/random" "^1.0.1" + dids "^5.0.0" + fast-json-patch "^3.1.0" + lodash.clonedeep "^4.5.0" + uint8arrays "^5.0.1" + +"@ceramicnetwork/streamid@^3.3.0", "@ceramicnetwork/streamid@^3.4.1": + version "3.4.1" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/streamid/-/streamid-3.4.1.tgz#41e44cc9e3ac0603dfd6666f1dae07ac3cf2d837" + integrity sha512-m6uZjcdMdwzyO6TIVTJF4IJYjuceflmYDrlRxDcXrZySBNNKnL40tSHbzpcTfOy5YcIsTqJFxqUZQrFrC0mlDA== + dependencies: + "@ipld/dag-cbor" "^7.0.0" + "@stablelib/sha256" "^1.0.1" + cborg "^1.10.2" + mapmoize "^1.2.1" + multiformats "^13.0.0" + uint8arrays "^5.0.1" + varint "^6.0.0" + +"@ceramicnetwork/streamid@^5.0.0", "@ceramicnetwork/streamid@^5.3.0": + version "5.3.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/streamid/-/streamid-5.3.0.tgz#576c9349713004cd474ad08ff30714a3314f25b9" + integrity sha512-U/4k2iAjWIW3Ra3H8K0qJJjy9i9Zgw88gz9ecbIBDOF8Ud59ahEJpQYgdAnWc7kkSPpiZojZDTneZCgUYGQuRg== + dependencies: + "@ipld/dag-cbor" "^7.0.0" + "@stablelib/sha256" "^1.0.1" + cborg "^4.0.8" + mapmoize "^1.2.1" + multiformats "^13.0.0" + uint8arrays "^5.0.1" + varint "^6.0.0" + +"@ceramicnetwork/wasm-bloom-filter@^0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/wasm-bloom-filter/-/wasm-bloom-filter-0.1.0.tgz#5d9705ff07a4b1a6a97115a68b1a57f117c804d0" + integrity sha512-vCKJsphSqVFpQISEBK/B59s278xmyab7BYX4yPZGI9aP92jjtGrrkQGaCQF+JOd/0ZSNRbYA3uOUH4BcKaoTCg== + "@chainsafe/is-ip@^2.0.1": version "2.0.2" resolved "https://registry.yarnpkg.com/@chainsafe/is-ip/-/is-ip-2.0.2.tgz#7311e7403f11d8c5cfa48111f56fcecaac37c9f6" @@ -1628,6 +2094,77 @@ "@types/conventional-commits-parser" "^5.0.0" chalk "^5.3.0" +"@composedb/client@^0.7.1": + version "0.7.1" + resolved "https://registry.yarnpkg.com/@composedb/client/-/client-0.7.1.tgz#382546e7a4a636debe6d3359d832724b9fe76087" + integrity sha512-LUMnaiNUbBLqqifxAybAigG+n7F+u8xhLOPsPR0F0KHPtJkJ8sXm0lpcHQPx6B4Tm5Tlb6F7Tu27WvGp+7wVCA== + dependencies: + "@ceramicnetwork/http-client" "^5.2.0" + "@ceramicnetwork/stream-model" "^4.1.0" + "@ceramicnetwork/stream-model-instance" "^4.2.0" + "@composedb/constants" "^0.7.1" + "@composedb/graphql-scalars" "^0.7.1" + "@composedb/runtime" "^0.7.1" + "@graphql-tools/batch-execute" "^9.0.4" + "@graphql-tools/stitch" "^9.0.5" + "@graphql-tools/utils" "^10.1.0" + dataloader "^2.2.2" + graphql "^16.8.1" + graphql-relay "^0.10.0" + +"@composedb/constants@^0.7.1": + version "0.7.1" + resolved "https://registry.yarnpkg.com/@composedb/constants/-/constants-0.7.1.tgz#4477f093ebb7ab3b9c17d79952416310b2a32602" + integrity sha512-fJrhOlM0kr9AVBR5iGwPXxCMbyzs06OCAcsqla1X4qWhMDHGvX/yMKV65FJIY38qwkuSdOUvhfh7vfsSmHIRnQ== + +"@composedb/graphql-scalars@^0.7.1": + version "0.7.1" + resolved "https://registry.yarnpkg.com/@composedb/graphql-scalars/-/graphql-scalars-0.7.1.tgz#01cdce359d4d5715df9d4f642f9ad19e0ddb1cbe" + integrity sha512-TX6f/1E3RZzWjDAKn3eRZ9z7zAPaE7BKWpOiomw9T3K787WPGmOIypnOOakdGE9dOf6ViYQ8eq4R6pzv0bbBpA== + dependencies: + "@ceramicnetwork/streamid" "^5.0.0" + "@composedb/types" "^0.7.1" + caip "^1.1.0" + graphql "^16.8.1" + graphql-scalars "^1.22.5" + multiformats "^13.1.0" + +"@composedb/loader@^0.7.1": + version "0.7.1" + resolved "https://registry.yarnpkg.com/@composedb/loader/-/loader-0.7.1.tgz#3e1ad9626f765683d80ed826a5d4e3ead558ce72" + integrity sha512-qmyWrNazJF/0Uc4rZqrttvbOnb0smjqTSF5i5aekThIWJtvBQ+a/GkoNjQvVQH3bWFfeRZS9TgNpD4SUpdFJpw== + dependencies: + "@ceramicnetwork/stream-model-instance" "^4.2.0" + "@ceramicnetwork/streamid" "^5.0.0" + dataloader "^2.2.2" + +"@composedb/runtime@^0.7.1": + version "0.7.1" + resolved "https://registry.yarnpkg.com/@composedb/runtime/-/runtime-0.7.1.tgz#b6f422cd1ddc81c0fe42d03195b7e970e7bfbeaa" + integrity sha512-ijv1/jNWYAwhsnJYJbyGT8MrQgZoIhDGDoD6ggF5VbcC8bYZcK88yNwASxT3s9NxQTelKznidvk9V14MxN8RUA== + dependencies: + "@ceramicnetwork/http-client" "^5.2.0" + "@ceramicnetwork/stream-model" "^4.1.0" + "@ceramicnetwork/stream-model-instance" "^4.2.0" + "@ceramicnetwork/streamid" "^5.0.0" + "@composedb/graphql-scalars" "^0.7.1" + "@composedb/loader" "^0.7.1" + graphql "^16.8.1" + graphql-relay "^0.10.0" + +"@composedb/types@^0.7.1": + version "0.7.1" + resolved "https://registry.yarnpkg.com/@composedb/types/-/types-0.7.1.tgz#4aba2a73d0a0285f3923d0f115043a78b42560b7" + integrity sha512-GtS3R06x1eU1NbBn5ZqewHk1VpvYLk9dwKV8YEzEXxnZvJa2WA8F5YD/TRItIfHgJjLNZ5O7obAK1fgDoCJxnQ== + dependencies: + "@ceramicnetwork/common" "^5.1.0" + "@ceramicnetwork/core" "^5.2.0" + "@ceramicnetwork/http-client" "^5.2.0" + "@ceramicnetwork/stream-model" "^4.1.0" + "@ceramicnetwork/stream-model-instance" "^4.2.0" + dids "^5.0.2" + json-schema-typed "^8.0.1" + "@cspotcode/source-map-support@^0.8.0": version "0.8.1" resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" @@ -1635,6 +2172,39 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" +"@datastructures-js/heap@^4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@datastructures-js/heap/-/heap-4.3.3.tgz#824c10f092ab03180702f0dea8ce96227ffe50a8" + integrity sha512-UcUu/DLh/aM4W3C8zZfwxxm6/6FIZUlm3mcAXuNOCa6Aj4iizNvNXQyb8DjZQH2jKSQbMRyNlngP6TPimuGjpQ== + +"@datastructures-js/priority-queue@^6.1.0": + version "6.3.1" + resolved "https://registry.yarnpkg.com/@datastructures-js/priority-queue/-/priority-queue-6.3.1.tgz#42971d509b457d8fbc42918f192d0ce7c6b2f5f3" + integrity sha512-eoxkWql/j0VJ0UFMFTpnyJz4KbEEVQ6aZ/JuJUgenu0Im4tYKylAycNGsYCHGXiVNEd7OKGVwfx1Ac3oYkuu7A== + dependencies: + "@datastructures-js/heap" "^4.3.3" + +"@desci-labs/desci-codex-composedb@^2.0.1": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@desci-labs/desci-codex-composedb/-/desci-codex-composedb-2.0.2.tgz#3a3724fe98d2efc58e11947de1e5571696a4d546" + integrity sha512-AEnWKXFqZFNhdCqyVTHwbdPcvb9+R3sZ6A0X6jAN7iS+J/0MHmv2muTEe1dbDcSZ6SteBTFc8p1wXqangwuegQ== + dependencies: + "@composedb/types" "^0.7.1" + +"@desci-labs/desci-codex-lib@^1.1.7": + version "1.1.7" + resolved "https://registry.yarnpkg.com/@desci-labs/desci-codex-lib/-/desci-codex-lib-1.1.7.tgz#d483d63f9a7760ab842022ce678e924c1c7fb8c3" + integrity sha512-Z06qpACxorVPn4tp35XHro2KTqvp0rVoaMkxwGssVM+4DqeuV3jEudyrSIZTc0A2BJ2SuqMYC9WtBdbq6/Py1w== + dependencies: + "@composedb/client" "^0.7.1" + "@desci-labs/desci-codex-composedb" "^2.0.1" + dids "^5.0.2" + gql-query-builder "^3.8.0" + graphql "^16.8.0" + key-did-provider-ed25519 "^4.0.2" + key-did-resolver "^4.0.0" + uint8arrays "^4.0.6" + "@desci-labs/desci-contracts@0.2.5-rc7": version "0.2.5-rc7" resolved "https://registry.yarnpkg.com/@desci-labs/desci-contracts/-/desci-contracts-0.2.5-rc7.tgz#a8a49c9518107305be712bcbdbb352faa4057a44" @@ -1648,6 +2218,145 @@ jsonld "^8.1.1" schema-dts "^1.1.2" +"@didtools/cacao@3.0.1", "@didtools/cacao@^3.0.0", "@didtools/cacao@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@didtools/cacao/-/cacao-3.0.1.tgz#4a705b583bde6d3a85bec33622d03ed1acfcb2b9" + integrity sha512-vV1JirxqVsBf2dqdvoS/msNN8fabvMfseZB0kf1FG8TbosrHd81+hgDOlQMZit7zJbTk5g3CGkZg3b7iYKkynw== + dependencies: + "@didtools/codecs" "^3.0.0" + "@didtools/siwx" "2.0.0" + "@ipld/dag-cbor" "^9.0.7" + caip "^1.1.0" + multiformats "^13.0.0" + uint8arrays "^5.0.1" + viem "^1.21.4" + +"@didtools/cacao@^2.0.0", "@didtools/cacao@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@didtools/cacao/-/cacao-2.1.0.tgz#5ce7bbae0abf6cce0631b8e5df657052065b9d40" + integrity sha512-35gopj+mOmAlA3nHoHiYMvNMXJtbJDJnVpIlCf/Wf/+/x+uG9aIQefXfF35D6JuaTCZ0apabjpT2umL5h3EXcw== + dependencies: + "@didtools/codecs" "^1.0.1" + "@didtools/siwx" "1.0.0" + "@ipld/dag-cbor" "^9.0.1" + caip "^1.1.0" + multiformats "^11.0.2" + uint8arrays "^4.0.3" + +"@didtools/codecs@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@didtools/codecs/-/codecs-1.0.1.tgz#2f0372e618ffb563c1b56279f1f5e79f59a2d48b" + integrity sha512-6PYXOCX7mwVWUcudKQ3eW5LtI8v5esozazbf2q2F01PE+LoeEvTytvgU9FEspj4pATpq3hPx1eenX2uLirDJ8w== + dependencies: + codeco "^1.1.0" + multiformats "^11.0.1" + uint8arrays "^4.0.3" + +"@didtools/codecs@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@didtools/codecs/-/codecs-3.0.0.tgz#860e74e7762f8d1cb630d3ceb87a4e728455e797" + integrity sha512-TemoVySZrs1XflMtOkwVTATtZEs42Mh2yk9SoYvBXES6Mz30PBJCm8v7U/2y1N5lrjb2cAPWs48Ryc7paetSxQ== + dependencies: + codeco "^1.2.0" + multiformats "^13.0.0" + uint8arrays "^5.0.1" + +"@didtools/key-webauthn@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@didtools/key-webauthn/-/key-webauthn-2.0.2.tgz#37d36d8a6015610a4d3ab9ccec9d86c42ea4a7c5" + integrity sha512-MkOqAiRBcRO64PMVfSFAB0SUIJMk+L8QyymE9dknjmfSKgD/ZKz7cw4pFV6IUNin75/DLrlDSfmCIIjYokivvQ== + dependencies: + "@didtools/cacao" "3.0.1" + "@ipld/dag-cbor" "^9.0.6" + "@noble/curves" "^1.2.0" + caip "^1.1.0" + cborg "^4.0.5" + multiformats "^13.0.0" + uint8arrays "^5.0.1" + varint "^6.0.0" + +"@didtools/pkh-ethereum@^0.2.0": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@didtools/pkh-ethereum/-/pkh-ethereum-0.2.1.tgz#8c03a56f34c824fa83db6161362f7fa45dd2b5e9" + integrity sha512-apQefbOqqy8HQMDNVG0ITxHLr9I5iZrjADX+mPB+ie1ue8MO8pOHMifLQ3j0R6RjS2einCd+hEZ4Ib4AKs3Xlw== + dependencies: + "@didtools/cacao" "^2.0.0" + "@ethersproject/wallet" "^5.7.0" + "@stablelib/random" "^1.0.2" + caip "^1.1.0" + +"@didtools/pkh-ethereum@^0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@didtools/pkh-ethereum/-/pkh-ethereum-0.4.1.tgz#b03472bf0196d2ece6a64d5f01aa96c866cdccb7" + integrity sha512-oE5bbyTauJ/WddaWnDK7bWns2E2LG4Ut33ICEcEQdlMoXM0902/vnGm8+6QE/yuLOyAllgf7DnDKvERF5IY6uQ== + dependencies: + "@didtools/cacao" "^2.1.0" + "@noble/curves" "^1.1.0" + "@noble/hashes" "^1.3.1" + "@stablelib/random" "^1.0.2" + caip "^1.1.0" + +"@didtools/pkh-ethereum@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@didtools/pkh-ethereum/-/pkh-ethereum-0.5.0.tgz#fca9008c546141f257508d4448c58609b975276b" + integrity sha512-2S+TS/I2jVTNnkgyslxQvSjCzzLsCabjXD2UWjJnVkAoxeJgPE9GvY1JhTDgvVLfxLPnYwTIP/O1WR9wJcDkFg== + dependencies: + "@didtools/cacao" "^3.0.0" + "@noble/curves" "^1.2.0" + "@noble/hashes" "^1.3.2" + "@stablelib/random" "^1.0.2" + caip "^1.1.0" + +"@didtools/pkh-solana@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@didtools/pkh-solana/-/pkh-solana-0.2.0.tgz#b66d7dd642306a9808d275871de408f2e3583e6f" + integrity sha512-wOfa+hbWo1ok8YnR8tq2mZKbcyEv9qrxtTR5jXOuhOqCkz30/qu9e2Wib/byx7Kx5/ik/2z1nd2YPL0vrA+TxQ== + dependencies: + "@didtools/cacao" "^3.0.0" + "@noble/curves" "^1.2.0" + "@stablelib/random" "^1.0.2" + caip "^1.1.0" + uint8arrays "^5.0.1" + +"@didtools/pkh-stacks@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@didtools/pkh-stacks/-/pkh-stacks-0.2.0.tgz#6dc7b546ca9ad458574a7270300c0663aac4727a" + integrity sha512-lXe8ZURCYCDQXrjaM7A4p1RCKrVsQ+NbO7bI70pRfjven82BPLDiqEJbhRGnWKbjQD1CQe9MJXLy3AuStKc7qw== + dependencies: + "@didtools/cacao" "^3.0.0" + "@stablelib/random" "^1.0.2" + "@stacks/common" "^6.10.0" + "@stacks/encryption" "^6.10.0" + "@stacks/transactions" "^6.10.0" + caip "^1.1.0" + jsontokens "^4.0.1" + +"@didtools/pkh-tezos@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@didtools/pkh-tezos/-/pkh-tezos-0.3.0.tgz#21d766f4b492c5acd30ce8710585dee479fc68ae" + integrity sha512-AB8drOnBkDSE9KolsiSShPwVOVbRXM2G5T//b+GgX9potVRTcRsD0z59x/6mU1e9g2kxpScOhjRrZsC0c+SQNw== + dependencies: + "@didtools/cacao" "^3.0.0" + "@noble/curves" "^1.2.0" + "@noble/hashes" "^1.3.2" + "@stablelib/random" "^1.0.2" + caip "^1.1.0" + uint8arrays "^5.0.1" + +"@didtools/siwx@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@didtools/siwx/-/siwx-1.0.0.tgz#18eacb098a3a1f69253a8216fa5071ad9c2c7ec1" + integrity sha512-b7sPDTNHdySoJ+Rp2p06x3rg1iTxI4yPTTA3PrPh40xcvFJ0K/YhdIb/Rzff13t92arcJ+VYGFhqtJorauV91g== + dependencies: + codeco "^1.1.0" + +"@didtools/siwx@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@didtools/siwx/-/siwx-2.0.0.tgz#95225f57888bff821baa182dee2d7860ee51940a" + integrity sha512-eqBtI5dZrptXTCyadnhvU0di/KvumoByT7F8KB/8BLU7M1lltfEmvf/c5AnsyrWO9338ygCs2u5mKz1p1Zdj5A== + dependencies: + codeco "^1.2.0" + "@digitalbazaar/http-client@^3.4.1": version "3.4.1" resolved "https://registry.yarnpkg.com/@digitalbazaar/http-client/-/http-client-3.4.1.tgz#5116fc44290d647cfe4b615d1f3fad9d6005e44d" @@ -1909,7 +2618,7 @@ dependencies: "@ethersproject/bignumber" "^5.7.0" -"@ethersproject/contracts@5.7.0": +"@ethersproject/contracts@5.7.0", "@ethersproject/contracts@^5.5.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e" integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg== @@ -2012,7 +2721,7 @@ dependencies: "@ethersproject/logger" "^5.7.0" -"@ethersproject/providers@5.7.2": +"@ethersproject/providers@5.7.2", "@ethersproject/providers@^5.5.1": version "5.7.2" resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== @@ -2120,7 +2829,7 @@ "@ethersproject/constants" "^5.7.0" "@ethersproject/logger" "^5.7.0" -"@ethersproject/wallet@5.7.0": +"@ethersproject/wallet@5.7.0", "@ethersproject/wallet@^5.5.0", "@ethersproject/wallet@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d" integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== @@ -2195,6 +2904,114 @@ resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.1.tgz#16308cea045f0fc777b6ff20a9f25474dd8293d2" integrity sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q== +"@gar/promisify@^1.0.1": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" + integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== + +"@graphql-tools/batch-delegate@^9.0.3": + version "9.0.3" + resolved "https://registry.yarnpkg.com/@graphql-tools/batch-delegate/-/batch-delegate-9.0.3.tgz#7d496a693e7f3226dbff5fc30989bbbd7ef5fa16" + integrity sha512-wYYbDLQeXU+lEUQJDjylN/e1V3OTVkeJSZYgroDniBfg3etDuOJruAIWZ6S6skKB1PZBy1emEbs6HjrziHeX0A== + dependencies: + "@graphql-tools/delegate" "^10.0.11" + "@graphql-tools/utils" "^10.2.1" + dataloader "2.2.2" + tslib "^2.4.0" + value-or-promise "^1.0.12" + +"@graphql-tools/batch-execute@^9.0.4": + version "9.0.4" + resolved "https://registry.yarnpkg.com/@graphql-tools/batch-execute/-/batch-execute-9.0.4.tgz#11601409c0c33491971fc82592de12390ec58be2" + integrity sha512-kkebDLXgDrep5Y0gK1RN3DMUlLqNhg60OAz0lTCqrYeja6DshxLtLkj+zV4mVbBA4mQOEoBmw6g1LZs3dA84/w== + dependencies: + "@graphql-tools/utils" "^10.0.13" + dataloader "^2.2.2" + tslib "^2.4.0" + value-or-promise "^1.0.12" + +"@graphql-tools/delegate@^10.0.11", "@graphql-tools/delegate@^10.0.4": + version "10.0.11" + resolved "https://registry.yarnpkg.com/@graphql-tools/delegate/-/delegate-10.0.11.tgz#d66b46a5f90b0c323848e0b38379836842d1ce72" + integrity sha512-+sKeecdIVXhFB/66e5yjeKYZ3Lpn52yNG637ElVhciuLGgFc153rC6l6zcuNd9yx5wMrNx35U/h3HsMIEI3xNw== + dependencies: + "@graphql-tools/batch-execute" "^9.0.4" + "@graphql-tools/executor" "^1.2.1" + "@graphql-tools/schema" "^10.0.4" + "@graphql-tools/utils" "^10.2.1" + dataloader "^2.2.2" + tslib "^2.5.0" + +"@graphql-tools/executor@^1.2.1": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@graphql-tools/executor/-/executor-1.2.6.tgz#71caa7c52108e4744bfa5ffdc958126bb4b48ff2" + integrity sha512-+1kjfqzM5T2R+dCw7F4vdJ3CqG+fY/LYJyhNiWEFtq0ToLwYzR/KKyD8YuzTirEjSxWTVlcBh7endkx5n5F6ew== + dependencies: + "@graphql-tools/utils" "^10.1.1" + "@graphql-typed-document-node/core" "3.2.0" + "@repeaterjs/repeater" "^3.0.4" + tslib "^2.4.0" + value-or-promise "^1.0.12" + +"@graphql-tools/merge@^9.0.3", "@graphql-tools/merge@^9.0.4": + version "9.0.4" + resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-9.0.4.tgz#66c34cbc2b9a99801c0efca7b8134b2c9aecdb06" + integrity sha512-MivbDLUQ+4Q8G/Hp/9V72hbn810IJDEZQ57F01sHnlrrijyadibfVhaQfW/pNH+9T/l8ySZpaR/DpL5i+ruZ+g== + dependencies: + "@graphql-tools/utils" "^10.0.13" + tslib "^2.4.0" + +"@graphql-tools/schema@^10.0.3", "@graphql-tools/schema@^10.0.4": + version "10.0.4" + resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-10.0.4.tgz#d4fc739a2cc07b4fc5f31a714178a561cba210cd" + integrity sha512-HuIwqbKxPaJujox25Ra4qwz0uQzlpsaBOzO6CVfzB/MemZdd+Gib8AIvfhQArK0YIN40aDran/yi+E5Xf0mQww== + dependencies: + "@graphql-tools/merge" "^9.0.3" + "@graphql-tools/utils" "^10.2.1" + tslib "^2.4.0" + value-or-promise "^1.0.12" + +"@graphql-tools/stitch@^9.0.5": + version "9.2.9" + resolved "https://registry.yarnpkg.com/@graphql-tools/stitch/-/stitch-9.2.9.tgz#4556c586a2e5faa6b8bce6330f4dd0b2f2748eb7" + integrity sha512-+vWcsdL5nGyKMuq08sME+hf3vmp4qnkAiSj25a9HaBU118KJCvp9wTMYRB6Om5H2nlStDxP2HMS4RK3fv7vf8w== + dependencies: + "@graphql-tools/batch-delegate" "^9.0.3" + "@graphql-tools/delegate" "^10.0.11" + "@graphql-tools/executor" "^1.2.1" + "@graphql-tools/merge" "^9.0.4" + "@graphql-tools/schema" "^10.0.4" + "@graphql-tools/utils" "^10.2.1" + "@graphql-tools/wrap" "^10.0.2" + tslib "^2.4.0" + value-or-promise "^1.0.11" + +"@graphql-tools/utils@^10.0.13", "@graphql-tools/utils@^10.1.0", "@graphql-tools/utils@^10.1.1", "@graphql-tools/utils@^10.2.1": + version "10.2.2" + resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-10.2.2.tgz#6477295fae051ffb5d6c28253aa6d8a449d4a820" + integrity sha512-ueoplzHIgFfxhFrF4Mf/niU/tYHuO6Uekm2nCYU72qpI+7Hn9dA2/o5XOBvFXDk27Lp5VSvQY5WfmRbqwVxaYQ== + dependencies: + "@graphql-typed-document-node/core" "^3.1.1" + cross-inspect "1.0.0" + dset "^3.1.2" + tslib "^2.4.0" + +"@graphql-tools/wrap@^10.0.2": + version "10.0.5" + resolved "https://registry.yarnpkg.com/@graphql-tools/wrap/-/wrap-10.0.5.tgz#614b964a158887b4a644f5425b2b9a57b5751f72" + integrity sha512-Cbr5aYjr3HkwdPvetZp1cpDWTGdD1Owgsb3z/ClzhmrboiK86EnQDxDvOJiQkDCPWE9lNBwj8Y4HfxroY0D9DQ== + dependencies: + "@graphql-tools/delegate" "^10.0.4" + "@graphql-tools/schema" "^10.0.3" + "@graphql-tools/utils" "^10.1.1" + tslib "^2.4.0" + value-or-promise "^1.0.12" + +"@graphql-typed-document-node/core@3.2.0", "@graphql-typed-document-node/core@^3.1.1": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.2.0.tgz#5f3d96ec6b2354ad6d8a28bf216a1d97b5426861" + integrity sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ== + "@grpc/grpc-js@^1.7.1", "@grpc/grpc-js@^1.7.3": version "1.10.2" resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.10.2.tgz#19e6da577d88210a01ecc7987b2394b841ed34dd" @@ -2315,7 +3132,15 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== -"@ipld/dag-cbor@^9.0.0": +"@ipld/dag-cbor@^7.0.0", "@ipld/dag-cbor@^7.0.1": + version "7.0.3" + resolved "https://registry.yarnpkg.com/@ipld/dag-cbor/-/dag-cbor-7.0.3.tgz#aa31b28afb11a807c3d627828a344e5521ac4a1e" + integrity sha512-1VVh2huHsuohdXC1bGJNE8WR72slZ9XE2T3wbBBq31dm7ZBatmKLLxrB+XAqafxfRFjv08RZmj/W/ZqaM13AuA== + dependencies: + cborg "^1.6.0" + multiformats "^9.5.4" + +"@ipld/dag-cbor@^9.0.0", "@ipld/dag-cbor@^9.0.1", "@ipld/dag-cbor@^9.0.6", "@ipld/dag-cbor@^9.0.7", "@ipld/dag-cbor@^9.1.0": version "9.2.0" resolved "https://registry.yarnpkg.com/@ipld/dag-cbor/-/dag-cbor-9.2.0.tgz#3a3f0bee02d7e1c2f15582e896843d5b00fbba9f" integrity sha512-N14oMy0q4gM6OuZkIpisKe0JBSjf1Jb39VI+7jMLiWX9124u1Z3Fdj/Tag1NA0cVxxqWDh0CqsjcVfOKtelPDA== @@ -2527,6 +3352,11 @@ multiformats "^11.0.0" uint8arrays "^4.0.2" +"@multiformats/base-x@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@multiformats/base-x/-/base-x-4.0.1.tgz#95ff0fa58711789d53aefb2590a8b7a4e715d121" + integrity sha512-eMk0b9ReBbV23xXU693TAIrLyeO5iTgBZGSJfpqriG8UkYvr/hC9u9pyMlAakDNHWmbhMZCDs6KQO0jzKD8OTw== + "@multiformats/dns@^1.0.1": version "1.0.2" resolved "https://registry.yarnpkg.com/@multiformats/dns/-/dns-1.0.2.tgz#56a9e91572c071f3977c693f39f23636bcdb80f5" @@ -2649,17 +3479,51 @@ resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.1.0.tgz#e561fb330466d41807123d932b365cf3d33ceba2" integrity sha512-9WEbVRRAqJ3YFVqEZIxUqkiO8l1nool1LmNxygr5HWF8AcSYsEpneUDhmjUVJEzO2A04+oPtZdombzzPPkTtgg== +"@noble/ciphers@^0.4.0": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@noble/ciphers/-/ciphers-0.4.1.tgz#977fc35f563a4ca315ebbc4cbb1f9b670bd54456" + integrity sha512-QCOA9cgf3Rc33owG0AYBB9wszz+Ul2kramWN8tXG44Gyciud/tbkEqvxRF/IpqQaBpRBNi9f4jdNxqB2CQCIXg== + +"@noble/curves@1.2.0", "@noble/curves@~1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.2.0.tgz#92d7e12e4e49b23105a2555c6984d41733d65c35" + integrity sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw== + dependencies: + "@noble/hashes" "1.3.2" + +"@noble/curves@^1.0.0", "@noble/curves@^1.1.0", "@noble/curves@^1.2.0", "@noble/curves@^1.3.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.4.0.tgz#f05771ef64da724997f69ee1261b2417a49522d6" + integrity sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg== + dependencies: + "@noble/hashes" "1.4.0" + "@noble/ed25519@^1.6.0": version "1.7.3" resolved "https://registry.yarnpkg.com/@noble/ed25519/-/ed25519-1.7.3.tgz#57e1677bf6885354b466c38e2b620c62f45a7123" integrity sha512-iR8GBkDt0Q3GyaVcIu7mSsVIqnFbkbRzGLWlvhwunacoLwt4J3swfKhfaM6rN6WY+TBGoYT1GtT1mIh2/jGbRQ== -"@noble/hashes@^1.2.0": +"@noble/hashes@1.1.5", "@noble/hashes@~1.1.1": + version "1.1.5" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.1.5.tgz#1a0377f3b9020efe2fae03290bd2a12140c95c11" + integrity sha512-LTMZiiLc+V4v1Yi16TD6aX2gmtKszNye0pQgbaLqkvhIqP7nVsSaJsWloGQjJfJ8offaoP5GtX3yY5swbcJxxQ== + +"@noble/hashes@1.3.2": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39" + integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ== + +"@noble/hashes@1.4.0", "@noble/hashes@^1.1.2", "@noble/hashes@^1.3.0", "@noble/hashes@^1.3.1", "@noble/hashes@^1.3.2", "@noble/hashes@^1.3.3": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.4.0.tgz#45814aa329f30e4fe0ba49426f49dfccdd066426" + integrity sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg== + +"@noble/hashes@^1.2.0", "@noble/hashes@~1.3.0", "@noble/hashes@~1.3.2": version "1.3.3" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.3.tgz#39908da56a4adc270147bb07968bf3b16cfe1699" integrity sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA== -"@noble/secp256k1@^1.5.4": +"@noble/secp256k1@1.7.1", "@noble/secp256k1@^1.5.4", "@noble/secp256k1@^1.6.3": version "1.7.1" resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.7.1.tgz#b251c70f824ce3ca7f8dc3df08d58f005cc0507c" integrity sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw== @@ -2685,6 +3549,22 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@npmcli/fs@^1.0.0": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-1.1.1.tgz#72f719fe935e687c56a4faecf3c03d06ba593257" + integrity sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ== + dependencies: + "@gar/promisify" "^1.0.1" + semver "^7.3.5" + +"@npmcli/move-file@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674" + integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== + dependencies: + mkdirp "^1.0.4" + rimraf "^3.0.2" + "@one-ini/wasm@0.1.1": version "0.1.1" resolved "https://registry.yarnpkg.com/@one-ini/wasm/-/wasm-0.1.1.tgz#6013659736c9dbfccc96e8a9c2b3de317df39323" @@ -2697,6 +3577,13 @@ dependencies: "@opentelemetry/api" "^1.0.0" +"@opentelemetry/api-logs@0.50.0": + version "0.50.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/api-logs/-/api-logs-0.50.0.tgz#d46b76daab0bc18fa92dcdabacfc106c380d19a1" + integrity sha512-JdZuKrhOYggqOpUljAq4WWNi5nB10PmgoF0y2CvedLGXd0kSawb/UBnWT8gg1ND3bHCNHStAIVT0ELlxJJRqrA== + dependencies: + "@opentelemetry/api" "^1.0.0" + "@opentelemetry/api@^1.0.0", "@opentelemetry/api@^1.3.0", "@opentelemetry/api@^1.8.0": version "1.8.0" resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.8.0.tgz#5aa7abb48f23f693068ed2999ae627d2f7d902ec" @@ -2775,6 +3662,20 @@ dependencies: "@opentelemetry/semantic-conventions" "1.22.0" +"@opentelemetry/core@1.23.0": + version "1.23.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-1.23.0.tgz#f2e7ada7f35750f3c1674aef1e52c879005c0731" + integrity sha512-hdQ/a9TMzMQF/BO8Cz1juA43/L5YGtCSiKoOHmrTEf7VMDAZgy8ucpWx3eQTnQ3gBloRcWtzvcrMZABC3PTSKQ== + dependencies: + "@opentelemetry/semantic-conventions" "1.23.0" + +"@opentelemetry/core@1.25.0": + version "1.25.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-1.25.0.tgz#ad034f5c2669f589bd703bfbbaa38b51f8504053" + integrity sha512-n0B3s8rrqGrasTgNkXLKXzN0fXo+6IYP7M5b7AMsrZM33f/y6DS6kJ0Btd7SespASWq8bgL3taLo0oe0vB52IQ== + dependencies: + "@opentelemetry/semantic-conventions" "1.25.0" + "@opentelemetry/core@1.8.0": version "1.8.0" resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-1.8.0.tgz#cca18594dd48ded6dc0d08c7e789c79af0315934" @@ -2826,6 +3727,17 @@ "@opentelemetry/resources" "1.8.0" "@opentelemetry/sdk-metrics" "1.8.0" +"@opentelemetry/exporter-metrics-otlp-http@^0.50.0": + version "0.50.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-metrics-otlp-http/-/exporter-metrics-otlp-http-0.50.0.tgz#fa804b8d300f3e9c1b6047f4a17949cfaed902db" + integrity sha512-DMilj0pTOGxeaRPvVBil/KugvLMV5l+GzoXEWBKXYGEnfNlX+huPeMpYl+zJJBtI3Coht2KArnNOLhs2wqA3yA== + dependencies: + "@opentelemetry/core" "1.23.0" + "@opentelemetry/otlp-exporter-base" "0.50.0" + "@opentelemetry/otlp-transformer" "0.50.0" + "@opentelemetry/resources" "1.23.0" + "@opentelemetry/sdk-metrics" "1.23.0" + "@opentelemetry/exporter-metrics-otlp-proto@^0.34.0": version "0.34.0" resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-metrics-otlp-proto/-/exporter-metrics-otlp-proto-0.34.0.tgz#db75ed1a891358fe5a0df98df486a87ad93b5009" @@ -2839,6 +3751,15 @@ "@opentelemetry/resources" "1.8.0" "@opentelemetry/sdk-metrics" "1.8.0" +"@opentelemetry/exporter-prometheus@^0.50.0": + version "0.50.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.50.0.tgz#fc5dfed6246a9d796020377361601fd7c5e1a1f7" + integrity sha512-6jBrGqzpU1b2gCPUWTSSW+G3ejbZRx9SYhhFg0MO6v8R51mcln9KH6oIdTDrA+3Ie3L18bpygKrIWA9VPWEifg== + dependencies: + "@opentelemetry/core" "1.23.0" + "@opentelemetry/resources" "1.23.0" + "@opentelemetry/sdk-metrics" "1.23.0" + "@opentelemetry/exporter-trace-otlp-grpc@0.34.0", "@opentelemetry/exporter-trace-otlp-grpc@^0.34.0": version "0.34.0" resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.34.0.tgz#6ec4a897f263e371f4ce8e3b1aa83167fe6aedc2" @@ -2885,6 +3806,17 @@ "@opentelemetry/resources" "1.14.0" "@opentelemetry/sdk-trace-base" "1.14.0" +"@opentelemetry/exporter-trace-otlp-http@^0.50.0": + version "0.50.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.50.0.tgz#6f5961edf98ac85654c82c2f60044051cdbb1e7a" + integrity sha512-L7OtIMT7MsFqkmhbQlPBGRXt7152VN5esHpQEJYIBFedOEo3Da+yHpu5ojMZtPzpIvSpB5Xr5lnJUjJCbkttCA== + dependencies: + "@opentelemetry/core" "1.23.0" + "@opentelemetry/otlp-exporter-base" "0.50.0" + "@opentelemetry/otlp-transformer" "0.50.0" + "@opentelemetry/resources" "1.23.0" + "@opentelemetry/sdk-trace-base" "1.23.0" + "@opentelemetry/exporter-trace-otlp-proto@0.34.0", "@opentelemetry/exporter-trace-otlp-proto@^0.34.0": version "0.34.0" resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.34.0.tgz#526a2749007f35f7a70cf7d08406fcd421a03d8b" @@ -3280,6 +4212,13 @@ dependencies: "@opentelemetry/core" "1.14.0" +"@opentelemetry/otlp-exporter-base@0.50.0": + version "0.50.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.50.0.tgz#28bf0e175a22589f3a113873279bd1e7bb27a204" + integrity sha512-JUmjmrCmE1/fc4LjCQMqLfudgSl5OpUkzx7iA94b4jgeODM7zWxUoVXL7/CT7fWf47Cn+pmKjMvTCSESqZZ3mA== + dependencies: + "@opentelemetry/core" "1.23.0" + "@opentelemetry/otlp-grpc-exporter-base@0.34.0": version "0.34.0" resolved "https://registry.yarnpkg.com/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.34.0.tgz#edc3a9d8449f48e47c63c2f73e2c63c5a2f25102" @@ -3340,6 +4279,18 @@ "@opentelemetry/sdk-metrics" "1.14.0" "@opentelemetry/sdk-trace-base" "1.14.0" +"@opentelemetry/otlp-transformer@0.50.0": + version "0.50.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/otlp-transformer/-/otlp-transformer-0.50.0.tgz#211fe512fcce9d76042680f955336dbde3be03ef" + integrity sha512-s0sl1Yfqd5q1Kjrf6DqXPWzErL+XHhrXOfejh4Vc/SMTNqC902xDsC8JQxbjuramWt/+hibfguIvi7Ns8VLolA== + dependencies: + "@opentelemetry/api-logs" "0.50.0" + "@opentelemetry/core" "1.23.0" + "@opentelemetry/resources" "1.23.0" + "@opentelemetry/sdk-logs" "0.50.0" + "@opentelemetry/sdk-metrics" "1.23.0" + "@opentelemetry/sdk-trace-base" "1.23.0" + "@opentelemetry/propagation-utils@^0.29.5": version "0.29.5" resolved "https://registry.yarnpkg.com/@opentelemetry/propagation-utils/-/propagation-utils-0.29.5.tgz#2d3ba90a69370e7c9f2f851943cdd2e2e63a56bd" @@ -3436,6 +4387,22 @@ "@opentelemetry/core" "1.22.0" "@opentelemetry/semantic-conventions" "1.22.0" +"@opentelemetry/resources@1.23.0": + version "1.23.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-1.23.0.tgz#4c71430f3e20c4d88b67ef5629759fae108485e5" + integrity sha512-iPRLfVfcEQynYGo7e4Di+ti+YQTAY0h5mQEUJcHlU9JOqpb4x965O6PZ+wMcwYVY63G96KtdS86YCM1BF1vQZg== + dependencies: + "@opentelemetry/core" "1.23.0" + "@opentelemetry/semantic-conventions" "1.23.0" + +"@opentelemetry/resources@1.25.0", "@opentelemetry/resources@^1.23.0": + version "1.25.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-1.25.0.tgz#84a1e70097e342aa2047aac97be114ad14966793" + integrity sha512-iHjydPMYJ+Li1auveJCq2rp5U2h6Mhq8BidiyE0jfVlDTFyR1ny8AfJHfmFzJ/RAM8vT8L7T21kcmGybxZC7lQ== + dependencies: + "@opentelemetry/core" "1.25.0" + "@opentelemetry/semantic-conventions" "1.25.0" + "@opentelemetry/resources@1.8.0": version "1.8.0" resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-1.8.0.tgz#260be9742cf7bceccc0db928d8ca8d64391acfe3" @@ -3452,6 +4419,14 @@ "@opentelemetry/core" "1.14.0" "@opentelemetry/resources" "1.14.0" +"@opentelemetry/sdk-logs@0.50.0": + version "0.50.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-logs/-/sdk-logs-0.50.0.tgz#6636492cf626a9666f61d91025e25243d1a43bfc" + integrity sha512-PeUEupBB29p9nlPNqXoa1PUWNLsZnxG0DCDj3sHqzae+8y76B/A5hvZjg03ulWdnvBLYpnJslqzylG9E0IL87g== + dependencies: + "@opentelemetry/core" "1.23.0" + "@opentelemetry/resources" "1.23.0" + "@opentelemetry/sdk-metrics@1.14.0": version "1.14.0" resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-metrics/-/sdk-metrics-1.14.0.tgz#ee51d72eb32a74108e6632681ce2df46cddc0714" @@ -3461,6 +4436,15 @@ "@opentelemetry/resources" "1.14.0" lodash.merge "4.6.2" +"@opentelemetry/sdk-metrics@1.23.0": + version "1.23.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-metrics/-/sdk-metrics-1.23.0.tgz#b4cf3cc86b6dedf5c438c67c829df7399bf64be1" + integrity sha512-4OkvW6+wST4h6LFG23rXSTf6nmTf201h9dzq7bE0z5R9ESEVLERZz6WXwE7PSgg1gdjlaznm1jLJf8GttypFDg== + dependencies: + "@opentelemetry/core" "1.23.0" + "@opentelemetry/resources" "1.23.0" + lodash.merge "^4.6.2" + "@opentelemetry/sdk-metrics@1.8.0": version "1.8.0" resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-metrics/-/sdk-metrics-1.8.0.tgz#d061060f03861ab3f345d0f924922bc1a6396157" @@ -3470,6 +4454,15 @@ "@opentelemetry/resources" "1.8.0" lodash.merge "4.6.2" +"@opentelemetry/sdk-metrics@^1.23.0": + version "1.25.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-metrics/-/sdk-metrics-1.25.0.tgz#0c954d580c17821ae4385d29447718df09e80b79" + integrity sha512-IF+Sv4VHgBr/BPMKabl+GouJIhEqAOexCHgXVTISdz3q9P9H/uA8ScCF+22gitQ69aFtESbdYOV+Fen5+avQng== + dependencies: + "@opentelemetry/core" "1.25.0" + "@opentelemetry/resources" "1.25.0" + lodash.merge "^4.6.2" + "@opentelemetry/sdk-metrics@^1.8.0", "@opentelemetry/sdk-metrics@^1.9.1": version "1.22.0" resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-metrics/-/sdk-metrics-1.22.0.tgz#b94c62403013e4c72b96dc747d71d786073efafc" @@ -3524,6 +4517,15 @@ "@opentelemetry/resources" "1.14.0" "@opentelemetry/semantic-conventions" "1.14.0" +"@opentelemetry/sdk-trace-base@1.23.0": + version "1.23.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.23.0.tgz#ff0a0f8ec47205e0b14b3b765ea2a34de1ad01dd" + integrity sha512-PzBmZM8hBomUqvCddF/5Olyyviayka44O5nDWq673np3ctnvwMOvNrsUORZjKja1zJbwEuD9niAGbnVrz3jwRQ== + dependencies: + "@opentelemetry/core" "1.23.0" + "@opentelemetry/resources" "1.23.0" + "@opentelemetry/semantic-conventions" "1.23.0" + "@opentelemetry/sdk-trace-base@1.8.0": version "1.8.0" resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.8.0.tgz#70713aab90978a16dea188c8335209f857be7384" @@ -3533,6 +4535,15 @@ "@opentelemetry/resources" "1.8.0" "@opentelemetry/semantic-conventions" "1.8.0" +"@opentelemetry/sdk-trace-base@^1.23.0": + version "1.25.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.25.0.tgz#263f9ce19001c5cd7a814d0eb40ebc6469ae763d" + integrity sha512-6+g2fiRQUG39guCsKVeY8ToeuUf3YUnPkN6DXRA1qDmFLprlLvZm9cS6+chgbW70cZJ406FTtSCDnJwxDC5sGQ== + dependencies: + "@opentelemetry/core" "1.25.0" + "@opentelemetry/resources" "1.25.0" + "@opentelemetry/semantic-conventions" "1.25.0" + "@opentelemetry/sdk-trace-base@^1.8.0": version "1.22.0" resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.22.0.tgz#7833bf2493a7b49461915ca32aa2884c87afd78c" @@ -3576,6 +4587,16 @@ resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.22.0.tgz#d7502533a7c96e25baab86bac965468e0703a8b4" integrity sha512-CAOgFOKLybd02uj/GhCdEeeBjOS0yeoDeo/CA7ASBSmenpZHAKGB3iDm/rv3BQLcabb/OprDEsSQ1y0P8A7Siw== +"@opentelemetry/semantic-conventions@1.23.0": + version "1.23.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.23.0.tgz#627f2721b960fe586b7f72a07912cb7699f06eef" + integrity sha512-MiqFvfOzfR31t8cc74CTP1OZfz7MbqpAnLCra8NqQoaHJX6ncIRTdYOQYBDQ2uFISDq0WY8Y9dDTWvsgzzBYRg== + +"@opentelemetry/semantic-conventions@1.25.0", "@opentelemetry/semantic-conventions@^1.23.0": + version "1.25.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.25.0.tgz#390eb4d42a29c66bdc30066af9035645e9bb7270" + integrity sha512-M+kkXKRAIAiAP6qYyesfrC5TOmDpDVtsxuGfPcqd9B/iBrac+E14jYwrgm0yZBUIbIP2OnqC3j+UgkXLm1vxUQ== + "@opentelemetry/semantic-conventions@1.8.0": version "1.8.0" resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.8.0.tgz#fe2aa90e6df050a11cd57f5c0f47b0641fd2cad3" @@ -3598,6 +4619,102 @@ resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31" integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA== +"@polkadot/networks@7.9.2": + version "7.9.2" + resolved "https://registry.yarnpkg.com/@polkadot/networks/-/networks-7.9.2.tgz#03e3f3ac6bdea177517436537826055df60bcb9a" + integrity sha512-4obI1RdW5/7TFwbwKA9oqw8aggVZ65JAUvIFMd2YmMC2T4+NiZLnok0WhRkhZkUnqjLIHXYNwq7Ho1i39dte0g== + dependencies: + "@babel/runtime" "^7.16.3" + +"@polkadot/util-crypto@^7.0.2": + version "7.9.2" + resolved "https://registry.yarnpkg.com/@polkadot/util-crypto/-/util-crypto-7.9.2.tgz#cdc336f92a6bc3d40c5a23734e1974fb777817f0" + integrity sha512-nNwqUwP44eCH9jKKcPie+IHLKkg9LMe6H7hXo91hy3AtoslnNrT51tP3uAm5yllhLvswJfnAgnlHq7ybCgqeFw== + dependencies: + "@babel/runtime" "^7.16.3" + "@polkadot/networks" "7.9.2" + "@polkadot/util" "7.9.2" + "@polkadot/wasm-crypto" "^4.4.1" + "@polkadot/x-randomvalues" "7.9.2" + blakejs "^1.1.1" + bn.js "^4.12.0" + create-hash "^1.2.0" + ed2curve "^0.3.0" + elliptic "^6.5.4" + hash.js "^1.1.7" + js-sha3 "^0.8.0" + micro-base "^0.9.0" + scryptsy "^2.1.0" + tweetnacl "^1.0.3" + xxhashjs "^0.2.2" + +"@polkadot/util@7.9.2": + version "7.9.2" + resolved "https://registry.yarnpkg.com/@polkadot/util/-/util-7.9.2.tgz#567ac659516d6b685ed7e796919901d92e5cbe6b" + integrity sha512-6ABY6ErgkCsM4C6+X+AJSY4pBGwbKlHZmUtHftaiTvbaj4XuA4nTo3GU28jw8wY0Jh2cJZJvt6/BJ5GVkm5tBA== + dependencies: + "@babel/runtime" "^7.16.3" + "@polkadot/x-textdecoder" "7.9.2" + "@polkadot/x-textencoder" "7.9.2" + "@types/bn.js" "^4.11.6" + bn.js "^4.12.0" + camelcase "^6.2.1" + ip-regex "^4.3.0" + +"@polkadot/wasm-crypto-asmjs@^4.6.1": + version "4.6.1" + resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto-asmjs/-/wasm-crypto-asmjs-4.6.1.tgz#4f4a5adcf8dce65666eaa0fb16b6ff7b0243aead" + integrity sha512-1oHQjz2oEO1kCIcQniOP+dZ9N2YXf2yCLHLsKaKSvfXiWaetVCaBNB8oIHIVYvuLnVc8qlMi66O6xc1UublHsw== + dependencies: + "@babel/runtime" "^7.17.2" + +"@polkadot/wasm-crypto-wasm@^4.6.1": + version "4.6.1" + resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto-wasm/-/wasm-crypto-wasm-4.6.1.tgz#882d8199e216966c612f56a18e31f6aaae77e7eb" + integrity sha512-NI3JVwmLjrSYpSVuhu0yeQYSlsZrdpK41UC48sY3kyxXC71pi6OVePbtHS1K3xh3FFmDd9srSchExi3IwzKzMw== + dependencies: + "@babel/runtime" "^7.17.2" + +"@polkadot/wasm-crypto@^4.4.1": + version "4.6.1" + resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto/-/wasm-crypto-4.6.1.tgz#12f8481e6f9021928435168beb0697d57ff573e9" + integrity sha512-2wEftBDxDG+TN8Ah6ogtvzjdZdcF0mAjU4UNNOfpmkBCxQYZOrAHB8HXhzo3noSsKkLX7PDX57NxvJ9OhoTAjw== + dependencies: + "@babel/runtime" "^7.17.2" + "@polkadot/wasm-crypto-asmjs" "^4.6.1" + "@polkadot/wasm-crypto-wasm" "^4.6.1" + +"@polkadot/x-global@7.9.2": + version "7.9.2" + resolved "https://registry.yarnpkg.com/@polkadot/x-global/-/x-global-7.9.2.tgz#b272b0a3bedaad3bcbf075ec4682abe68cf2a850" + integrity sha512-JX5CrGWckHf1P9xKXq4vQCAuMUbL81l2hOWX7xeP8nv4caHEpmf5T1wD1iMdQBL5PFifo6Pg0V6/oZBB+bts7A== + dependencies: + "@babel/runtime" "^7.16.3" + +"@polkadot/x-randomvalues@7.9.2": + version "7.9.2" + resolved "https://registry.yarnpkg.com/@polkadot/x-randomvalues/-/x-randomvalues-7.9.2.tgz#0c9bb7b48a0791c2a32e9605a31a5ce56fee621d" + integrity sha512-svQfG31yCXf6yVyIgP0NgCzEy7oc3Lw054ZspkaqjOivxYdrXaf5w3JSSUyM/MRjI2+nk+B/EyJoMYcfSwTfsQ== + dependencies: + "@babel/runtime" "^7.16.3" + "@polkadot/x-global" "7.9.2" + +"@polkadot/x-textdecoder@7.9.2": + version "7.9.2" + resolved "https://registry.yarnpkg.com/@polkadot/x-textdecoder/-/x-textdecoder-7.9.2.tgz#a78548e33efeb3a25f761fec9787b2bcae7f0608" + integrity sha512-wfwbSHXPhrOAl12QvlIOGNkMH/N/h8PId2ytIjvM/8zPPFB5Il6DWSFLtVapOGEpIFjEWbd5t8Td4pHBVXIEbg== + dependencies: + "@babel/runtime" "^7.16.3" + "@polkadot/x-global" "7.9.2" + +"@polkadot/x-textencoder@7.9.2": + version "7.9.2" + resolved "https://registry.yarnpkg.com/@polkadot/x-textencoder/-/x-textencoder-7.9.2.tgz#b32bfd6fbff8587c56452f58252a52d62bbcd5b9" + integrity sha512-A19wwYINuZwU2dUyQ/mMzB0ISjyfc4cISfL4zCMUAVgj7xVoXMYV2GfjNdMpA8Wsjch3su6pxLbtJ2wU03sRTQ== + dependencies: + "@babel/runtime" "^7.16.3" + "@polkadot/x-global" "7.9.2" + "@prisma/client@4.10.1": version "4.10.1" resolved "https://registry.yarnpkg.com/@prisma/client/-/client-4.10.1.tgz#c47fd54661ee74b174cee63e9dc418ecf57a6ccd" @@ -4137,6 +5254,46 @@ resolved "https://registry.yarnpkg.com/@redis/time-series/-/time-series-1.0.5.tgz#a6d70ef7a0e71e083ea09b967df0a0ed742bc6ad" integrity sha512-IFjIgTusQym2B5IZJG3XKr5llka7ey84fw/NOYqESP5WUfQs9zz1ww/9+qoz4ka/S6KcGBodzlCeZ5UImKbscg== +"@repeaterjs/repeater@^3.0.4": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@repeaterjs/repeater/-/repeater-3.0.6.tgz#be23df0143ceec3c69f8b6c2517971a5578fdaa2" + integrity sha512-Javneu5lsuhwNCryN+pXH93VPQ8g0dBX7wItHFgYiwQmzE1sVdg5tWHiOgHywzL2W21XQopa7IwIEnNbmeUJYA== + +"@scarf/scarf@^1.1.1": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@scarf/scarf/-/scarf-1.3.0.tgz#f8c75560d0dace4452dee1e31995e6396e61f3ee" + integrity sha512-lHKK8M5CTcpFj2hZDB3wIjb0KAbEOgDmiJGDv1WBRfQgRm/a8/XMEkG/N1iM01xgbUDsPQwi42D+dFo1XPAKew== + +"@scure/base@^1.1.3", "@scure/base@~1.1.0", "@scure/base@~1.1.2": + version "1.1.7" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.7.tgz#fe973311a5c6267846aa131bc72e96c5d40d2b30" + integrity sha512-PPNYBslrLNNUQ/Yad37MHYsNQtK67EhWb6WtSvNLLPo7SdVZgkUjD6Dg+5On7zNwmskf8OX7I7Nx5oN+MIWE0g== + +"@scure/bip32@1.3.2": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.3.2.tgz#90e78c027d5e30f0b22c1f8d50ff12f3fb7559f8" + integrity sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA== + dependencies: + "@noble/curves" "~1.2.0" + "@noble/hashes" "~1.3.2" + "@scure/base" "~1.1.2" + +"@scure/bip39@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.1.0.tgz#92f11d095bae025f166bef3defcc5bf4945d419a" + integrity sha512-pwrPOS16VeTKg98dYXQyIjJEcWfz7/1YJIwxUEPFfQPtc86Ym/1sVgQ2RLoD43AazMk2l/unK4ITySSpW2+82w== + dependencies: + "@noble/hashes" "~1.1.1" + "@scure/base" "~1.1.0" + +"@scure/bip39@1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.2.1.tgz#5cee8978656b272a917b7871c981e0541ad6ac2a" + integrity sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg== + dependencies: + "@noble/hashes" "~1.3.0" + "@scure/base" "~1.1.0" + "@selderee/plugin-htmlparser2@^0.11.0": version "0.11.0" resolved "https://registry.yarnpkg.com/@selderee/plugin-htmlparser2/-/plugin-htmlparser2-0.11.0.tgz#d5b5e29a7ba6d3958a1972c7be16f4b2c188c517" @@ -5161,6 +6318,14 @@ "@smithy/types" "^2.12.0" tslib "^2.6.2" +"@smontero/eosio-signing-tools@^0.0.6": + version "0.0.6" + resolved "https://registry.yarnpkg.com/@smontero/eosio-signing-tools/-/eosio-signing-tools-0.0.6.tgz#b6371a63e27cd83a779d47b4911a49ca3e24d702" + integrity sha512-Uk5gnTMVnBUcUe3DUy957cfZozSni9uBzZBLLd3Wd04WWxjR6JqQw1QXGxl9GQuetwIGryX8iNj31WXPLuyA/w== + dependencies: + eosjs-ecc "^4.0.7" + node-fetch "^2.6.1" + "@socket.io/component-emitter@~3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz#96116f2a912e0c02817345b3c10751069920d553" @@ -5180,12 +6345,40 @@ dependencies: "@stablelib/int" "^1.0.1" +"@stablelib/blake2b@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/blake2b/-/blake2b-1.0.1.tgz#0045a77e182c4cf3260bc9b533fc4cd5c287f8ea" + integrity sha512-B3KyKoBAjkIFeH7romcF96i+pVFYk7K2SBQ1pZvaxV+epSBXJ+n0C66esUhyz6FF+5FbdQVm77C5fzGFcEZpKA== + dependencies: + "@stablelib/binary" "^1.0.1" + "@stablelib/hash" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/ed25519@^1.0.2": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@stablelib/ed25519/-/ed25519-1.0.3.tgz#f8fdeb6f77114897c887bb6a3138d659d3f35996" + integrity sha512-puIMWaX9QlRsbhxfDc5i+mNPMY+0TmQEskunY1rZEBPi1acBCVQAhnsk/1Hk50DGPtVsZtAWQg4NHGlVaO9Hqg== + dependencies: + "@stablelib/random" "^1.0.2" + "@stablelib/sha512" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/hash@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/hash/-/hash-1.0.1.tgz#3c944403ff2239fad8ebb9015e33e98444058bc5" + integrity sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg== + +"@stablelib/hex@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/hex/-/hex-1.0.1.tgz#564bd46d896941c93131d1e1869eabc17cf9bab5" + integrity sha512-PQOEChVBjhYGgAD+ehO2ow1gSj1slre3jW4oMD4kV8VrhYhzmtsQDWDZej3BQO8qkVezdczDvISxVSF24PuYNA== + "@stablelib/int@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@stablelib/int/-/int-1.0.1.tgz#75928cc25d59d73d75ae361f02128588c15fd008" integrity sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w== -"@stablelib/random@^1.0.1": +"@stablelib/random@^1.0.1", "@stablelib/random@^1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@stablelib/random/-/random-1.0.2.tgz#2dece393636489bf7e19c51229dd7900eddf742c" integrity sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w== @@ -5193,11 +6386,81 @@ "@stablelib/binary" "^1.0.1" "@stablelib/wipe" "^1.0.1" +"@stablelib/sha256@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/sha256/-/sha256-1.0.1.tgz#77b6675b67f9b0ea081d2e31bda4866297a3ae4f" + integrity sha512-GIIH3e6KH+91FqGV42Kcj71Uefd/QEe7Dy42sBTeqppXV95ggCcxLTk39bEr+lZfJmp+ghsR07J++ORkRELsBQ== + dependencies: + "@stablelib/binary" "^1.0.1" + "@stablelib/hash" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/sha512@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/sha512/-/sha512-1.0.1.tgz#6da700c901c2c0ceacbd3ae122a38ac57c72145f" + integrity sha512-13gl/iawHV9zvDKciLo1fQ8Bgn2Pvf7OV6amaRVKiq3pjQ3UmEpXxWiAfV8tYjUpeZroBxtyrwtdooQT/i3hzw== + dependencies: + "@stablelib/binary" "^1.0.1" + "@stablelib/hash" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/uuid@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@stablelib/uuid/-/uuid-1.0.2.tgz#0b803d954ce598067712f9170c9000b99f072d55" + integrity sha512-hduG+zCobfqjVDps3twWxBPuVYkobKQ+Dc8mQek7KfUAgbW4sJpBbr+Zd8l0KnwiFyesjAO3mZ+f3W4uLJtvNA== + dependencies: + "@stablelib/hex" "^1.0.1" + "@stablelib/random" "^1.0.2" + "@stablelib/wipe" "^1.0.1" + "@stablelib/wipe@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@stablelib/wipe/-/wipe-1.0.1.tgz#d21401f1d59ade56a62e139462a97f104ed19a36" integrity sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg== +"@stacks/common@^6.10.0", "@stacks/common@^6.13.0": + version "6.13.0" + resolved "https://registry.yarnpkg.com/@stacks/common/-/common-6.13.0.tgz#2fbfc39789cb4c64ae0089cee38b22c57e9e6c76" + integrity sha512-wwzyihjaSdmL6NxKvDeayy3dqM0L0Q2sawmdNtzJDi0FnXuJGm5PeapJj7bEfcI9XwI7Bw5jZoC6mCn9nc5YIw== + dependencies: + "@types/bn.js" "^5.1.0" + "@types/node" "^18.0.4" + +"@stacks/encryption@^6.10.0": + version "6.15.0" + resolved "https://registry.yarnpkg.com/@stacks/encryption/-/encryption-6.15.0.tgz#fc2d1a7e8a7cfe57f172af9880bad09a32461f08" + integrity sha512-506BdBvWhbXY1jxCdUcdbBzcSJctO2nzgzfenQwUuoBABSc1N/MFwQdlR9ZusY+E31zBxQPLfbr36V05/p2cfQ== + dependencies: + "@noble/hashes" "1.1.5" + "@noble/secp256k1" "1.7.1" + "@scure/bip39" "1.1.0" + "@stacks/common" "^6.13.0" + "@types/node" "^18.0.4" + base64-js "^1.5.1" + bs58 "^5.0.0" + ripemd160-min "^0.0.6" + varuint-bitcoin "^1.1.2" + +"@stacks/network@^6.13.0": + version "6.13.0" + resolved "https://registry.yarnpkg.com/@stacks/network/-/network-6.13.0.tgz#da178f8144f9c64757b7e57cf223190d12183f81" + integrity sha512-Ss/Da4BNyPBBj1OieM981fJ7SkevKqLPkzoI1+Yo7cYR2df+0FipIN++Z4RfpJpc8ne60vgcx7nJZXQsiGhKBQ== + dependencies: + "@stacks/common" "^6.13.0" + cross-fetch "^3.1.5" + +"@stacks/transactions@^6.10.0": + version "6.15.0" + resolved "https://registry.yarnpkg.com/@stacks/transactions/-/transactions-6.15.0.tgz#41d61aec7c00035112bf25d423139b9828207dc6" + integrity sha512-P6XKDcqqycPy+KBJBw8+5N+u57D8moJN7msYdde1gYXERmvOo9ht/MNREWWQ7SAM7Nlhau5mpezCdYCzXOCilQ== + dependencies: + "@noble/hashes" "1.1.5" + "@noble/secp256k1" "1.7.1" + "@stacks/common" "^6.13.0" + "@stacks/network" "^6.13.0" + c32check "^2.0.0" + lodash.clonedeep "^4.5.0" + "@swc/core-darwin-arm64@1.3.101": version "1.3.101" resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.101.tgz#9ffdc0e77c31b20877fa7405c82905e0c76738d0" @@ -5284,6 +6547,50 @@ resolved "https://registry.yarnpkg.com/@swc/types/-/types-0.1.5.tgz#043b731d4f56a79b4897a3de1af35e75d56bc63a" integrity sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw== +"@taquito/utils@^11.2.0": + version "11.2.0" + resolved "https://registry.yarnpkg.com/@taquito/utils/-/utils-11.2.0.tgz#19341a5222e078f70f3181692de75cb853ca02ee" + integrity sha512-I5LoD5fG9S2Yo4CNpW4u3vF9lUJG1PxkGLi6ntvvH49SBXwo9HJ/n/v04aoE9V7ncA0a7LUm6ucnROagIc2QQQ== + dependencies: + "@stablelib/blake2b" "^1.0.1" + "@stablelib/ed25519" "^1.0.2" + "@types/bs58check" "^2.1.0" + blakejs "^1.1.1" + bs58check "^2.1.2" + buffer "^6.0.3" + elliptic "^6.5.4" + typedarray-to-buffer "^4.0.0" + +"@tendermint/belt@0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@tendermint/belt/-/belt-0.3.0.tgz#09b50c50d7ab2967c0b6d42008c3f2ea33409994" + integrity sha512-3ZIsrbh9HLGM8cFyptK5iBeWou30srDiBjY8cVXFkz8aqPprt0OT7T9JqiqoG570x1pB0xiKwDDBxtQ120Gxug== + dependencies: + "@tendermint/types" "0.1.2" + +"@tendermint/sig@^0.6.0": + version "0.6.0" + resolved "https://registry.yarnpkg.com/@tendermint/sig/-/sig-0.6.0.tgz#c6c863bfa6047ed5ce1028cd6c3231462b8fc519" + integrity sha512-qbAETvlDMghtPA2/HXSi0NKmtm/AL2iDUpivJQ9w/7kzifKIP15mJF4jx0y3TwG9vSYjQ/+NKTgJPTT6UJ+JKg== + dependencies: + "@tendermint/belt" "0.3.0" + "@tendermint/types" "0.1.2" + bech32 "1.1.4" + bip32 "2.0.5" + bip39 "3.0.2" + create-hash "1.2.0" + secp256k1 "4.0.1" + +"@tendermint/types@0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@tendermint/types/-/types-0.1.2.tgz#e86745bf30c71690a1de2265d998951f86e051bf" + integrity sha512-VTYYB5xj6jRS0FnJWaSTuDBYOrXXxz1T23tJHuCkK2VGAqHOwaNHrtUK+fKSaYIoCDr21JM0S+uGej5Toqw1aQ== + +"@tootallnate/once@1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" + integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== + "@tsconfig/node10@^1.0.7": version "1.0.9" resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" @@ -5323,6 +6630,20 @@ resolved "https://registry.yarnpkg.com/@types/aws-lambda/-/aws-lambda-8.10.81.tgz#6d405269aad82e05a348687631aa9a587cdbe158" integrity sha512-C1rFKGVZ8KwqhwBOYlpoybTSRtxu2433ea6JaO3amc6ubEe08yQoFsPa9aU9YqvX7ppeZ25CnCtC4AH9mhtxsQ== +"@types/bn.js@^4.11.6": + version "4.11.6" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.6.tgz#c306c70d9358aaea33cd4eda092a742b9505967c" + integrity sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg== + dependencies: + "@types/node" "*" + +"@types/bn.js@^5.1.0": + version "5.1.5" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.5.tgz#2e0dacdcce2c0f16b905d20ff87aedbc6f7b4bf0" + integrity sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A== + dependencies: + "@types/node" "*" + "@types/body-parser@*", "@types/body-parser@^1.19.1": version "1.19.5" resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.5.tgz#04ce9a3b677dc8bd681a17da1ab9835dc9d3ede4" @@ -5331,6 +6652,13 @@ "@types/connect" "*" "@types/node" "*" +"@types/bs58check@^2.1.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@types/bs58check/-/bs58check-2.1.2.tgz#ca6264599cd9c0bdfeb839a0927f13a9cb77ba0f" + integrity sha512-xpXaQlOIY1KoXlA/ytHGHpEIU87PJt+g9SH7nC6HdCgaBwT2IEZIwBMHbjuX6BpnfbiUMlmwqurdLDwXpcdmSA== + dependencies: + "@types/node" "*" + "@types/bunyan@1.8.7": version "1.8.7" resolved "https://registry.yarnpkg.com/@types/bunyan/-/bunyan-1.8.7.tgz#63cc65b5ecff6217d1509409a575e7b991f80831" @@ -5687,6 +7015,16 @@ dependencies: undici-types "~5.26.4" +"@types/node@10.12.18": + version "10.12.18" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.18.tgz#1d3ca764718915584fcd9f6344621b7672665c67" + integrity sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ== + +"@types/node@11.11.6": + version "11.11.6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-11.11.6.tgz#df929d1bb2eee5afdda598a41930fe50b43eaa6a" + integrity sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ== + "@types/node@^18.0.0": version "18.19.25" resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.25.tgz#bde496da9937031ef60e615418160b71f0b03776" @@ -5694,6 +7032,20 @@ dependencies: undici-types "~5.26.4" +"@types/node@^18.0.4": + version "18.19.34" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.34.tgz#c3fae2bbbdb94b4a52fe2d229d0dccce02ef3d27" + integrity sha512-eXF4pfBNV5DAMKGbI02NnDtWrQ40hAN558/2vvS4gMpMIxaf6JmD7YjnZbq0Q9TDSSkKBamime8ewRoomHdt4g== + dependencies: + undici-types "~5.26.4" + +"@types/node@^20.11.16": + version "20.14.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.14.2.tgz#a5f4d2bcb4b6a87bffcaa717718c5a0f208f4a18" + integrity sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q== + dependencies: + undici-types "~5.26.4" + "@types/normalize-package-data@^2.4.0": version "2.4.4" resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz#56e2cc26c397c038fab0e3a917a12d5c5909e901" @@ -6073,6 +7425,22 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== +"@zondax/filecoin-signing-tools@^0.18.2": + version "0.18.6" + resolved "https://registry.yarnpkg.com/@zondax/filecoin-signing-tools/-/filecoin-signing-tools-0.18.6.tgz#8436d5b2666d51f640ccdd07300da3112716f3d6" + integrity sha512-dJZ5vpvv1DQ2h/45RsjcOmLohugvanTCbmEDTTRmWradWhD09S+X6r4VTMt2KY8MN19Mz16K0OLrNIaSc2C2YA== + dependencies: + "@ipld/dag-cbor" "^7.0.0" + axios "^0.24.0" + base32-decode "^1.0.0" + base32-encode "1.2.0" + bip32 "2.0.6" + bip39 "^3.0.4" + blakejs "^1.1.1" + bn.js "^5.1.2" + leb128 "0.0.5" + secp256k1 "^4.0.3" + JSONStream@^1.0.4: version "1.3.5" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" @@ -6091,6 +7459,11 @@ abbrev@^2.0.0: resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-2.0.0.tgz#cf59829b8b4f03f89dda2771cb7f3653828c89bf" integrity sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ== +abitype@0.9.8: + version "0.9.8" + resolved "https://registry.yarnpkg.com/abitype/-/abitype-0.9.8.tgz#1f120b6b717459deafd213dfbf3a3dd1bf10ae8c" + integrity sha512-puLifILdm+8sjyss4S+fsUN09obiT1g2YW6CtcQF+QDzxR0euzgEB29MZujC6zMk2a6SVmtttq1fc6+YFA7WYQ== + abort-controller@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" @@ -6098,6 +7471,19 @@ abort-controller@^3.0.0: dependencies: event-target-shim "^5.0.0" +abstract-level@^1.0.2, abstract-level@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/abstract-level/-/abstract-level-1.0.4.tgz#3ad8d684c51cc9cbc9cf9612a7100b716c414b57" + integrity sha512-eUP/6pbXBkMbXFdx4IH2fVgvB7M0JvR7/lIL33zcs0IBcwjdzSSl31TOJsaCzmKSSDF9h8QYSOJux4Nd4YJqFg== + dependencies: + buffer "^6.0.3" + catering "^2.1.0" + is-buffer "^2.0.5" + level-supports "^4.0.0" + level-transcoder "^1.0.1" + module-error "^1.0.1" + queue-microtask "^1.2.3" + accepts@~1.3.4, accepts@~1.3.8: version "1.3.8" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" @@ -6136,7 +7522,7 @@ aes-js@3.0.0: resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== -agent-base@6: +agent-base@6, agent-base@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== @@ -6150,6 +7536,13 @@ agent-base@^7.0.2: dependencies: debug "^4.3.4" +agentkeepalive@^4.1.3: + version "4.5.0" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.5.0.tgz#2673ad1389b3c418c5a20c5d7364f93ca04be923" + integrity sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew== + dependencies: + humanize-ms "^1.2.1" + aggregate-error@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" @@ -6158,6 +7551,13 @@ aggregate-error@^3.0.0: clean-stack "^2.0.0" indent-string "^4.0.0" +ajv-formats@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== + dependencies: + ajv "^8.0.0" + ajv-keywords@^3.5.2: version "3.5.2" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" @@ -6173,6 +7573,16 @@ ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^8.0.0, ajv@^8.8.2: + version "8.16.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.16.0.tgz#22e2a92b94f005f7e0f9c9d39652ef0b8f6f0cb4" + integrity sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw== + dependencies: + fast-deep-equal "^3.1.3" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.4.1" + ajv@^8.0.1, ajv@^8.11.0: version "8.12.0" resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" @@ -6279,6 +7689,11 @@ append-transform@^2.0.0: dependencies: default-require-extensions "^3.0.0" +"aproba@^1.0.3 || ^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" + integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== + archiver-utils@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-2.1.0.tgz#e8a460e94b693c3e3da182a098ca6285ba9249e2" @@ -6336,6 +7751,14 @@ arconnect@^0.4.2: dependencies: arweave "^1.10.13" +are-we-there-yet@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz#679df222b278c64f2cdba1175cdc00b0d96164bd" + integrity sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg== + dependencies: + delegates "^1.0.0" + readable-stream "^3.6.0" + arg@^4.1.0: version "4.1.3" resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" @@ -6546,6 +7969,11 @@ available-typed-arrays@^1.0.7: dependencies: possible-typed-array-names "^1.0.0" +await-semaphore@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/await-semaphore/-/await-semaphore-0.1.3.tgz#2b88018cc8c28e06167ae1cdff02504f1f9688d3" + integrity sha512-d1W2aNSYcz/sxYO4pMGX9vq65qOTu0P800epMud+6cYYX0QcT7zyqcxec3VWzpgvdXo57UWmVbZpLMjX2m1I7Q== + aws-sdk@^2.1186.0: version "2.1576.0" resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.1576.0.tgz#f852d8c51df41b55e437610c653b31759f6a1a98" @@ -6572,6 +8000,13 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3" integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== +axios@^0.24.0: + version "0.24.0" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.24.0.tgz#804e6fa1e4b9c5288501dd9dff56a7a0940d20d6" + integrity sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA== + dependencies: + follow-redirects "^1.14.4" + axios@^0.25.0: version "0.25.0" resolved "https://registry.yarnpkg.com/axios/-/axios-0.25.0.tgz#349cfbb31331a9b4453190791760a8d35b093e0a" @@ -6600,11 +8035,30 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== +base-x@^3.0.2: + version "3.0.9" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" + integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ== + dependencies: + safe-buffer "^5.0.1" + base-x@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/base-x/-/base-x-4.0.0.tgz#d0e3b7753450c73f8ad2389b5c018a4af7b2224a" integrity sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw== +base32-decode@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/base32-decode/-/base32-decode-1.0.0.tgz#2a821d6a664890c872f20aa9aca95a4b4b80e2a7" + integrity sha512-KNWUX/R7wKenwE/G/qFMzGScOgVntOmbE27vvc6GrniDGYb6a5+qWcuoXl8WIOQL7q0TpK7nZDm1Y04Yi3Yn5g== + +base32-encode@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/base32-encode/-/base32-encode-1.2.0.tgz#e150573a5e431af0a998e32bdfde7045725ca453" + integrity sha512-cHFU8XeRyx0GgmoWi5qHMCVRiqU6J3MHWxVgun7jggCBUpVzm1Ir7M9dYr2whjSNc3tFeXfQ/oZjQu/4u55h9A== + dependencies: + to-data-view "^1.1.0" + base64-js@^1.0.2, base64-js@^1.3.0, base64-js@^1.3.1, base64-js@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" @@ -6627,6 +8081,11 @@ bech32@1.1.4: resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== +bigi@1.4.2, bigi@^1.1.0: + version "1.4.2" + resolved "https://registry.yarnpkg.com/bigi/-/bigi-1.4.2.tgz#9c665a95f88b8b08fc05cfd731f561859d725825" + integrity sha512-ddkU+dFIuEIW8lE7ZwdIAf2UPoM90eaprg5m3YXAVVTmKlqV/9BX4A2M8BOK2yOq6/VgZFVhK6QAxJebhlbhzw== + bignumber.js@^9.0.0, bignumber.js@^9.0.2: version "9.1.2" resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.2.tgz#b7c4242259c008903b13707983b5f4bbd31eda0c" @@ -6637,6 +8096,56 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== +bindings@^1.3.0, bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +bip32@2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/bip32/-/bip32-2.0.5.tgz#e3808a9e97a880dbafd0f5f09ca4a1e14ee275d2" + integrity sha512-zVY4VvJV+b2fS0/dcap/5XLlpqtgwyN8oRkuGgAS1uLOeEp0Yo6Tw2yUTozTtlrMJO3G8n4g/KX/XGFHW6Pq3g== + dependencies: + "@types/node" "10.12.18" + bs58check "^2.1.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + tiny-secp256k1 "^1.1.3" + typeforce "^1.11.5" + wif "^2.0.6" + +bip32@2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/bip32/-/bip32-2.0.6.tgz#6a81d9f98c4cd57d05150c60d8f9e75121635134" + integrity sha512-HpV5OMLLGTjSVblmrtYRfFFKuQB+GArM0+XP8HGWfJ5vxYBqo+DesvJwOdC2WJ3bCkZShGf0QIfoIpeomVzVdA== + dependencies: + "@types/node" "10.12.18" + bs58check "^2.1.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + tiny-secp256k1 "^1.1.3" + typeforce "^1.11.5" + wif "^2.0.6" + +bip39@3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/bip39/-/bip39-3.0.2.tgz#2baf42ff3071fc9ddd5103de92e8f80d9257ee32" + integrity sha512-J4E1r2N0tUylTKt07ibXvhpT2c5pyAFgvuA5q1H9uDy6dEGpjV8jmymh3MTYJDLCNbIVClSB9FbND49I6N24MQ== + dependencies: + "@types/node" "11.11.6" + create-hash "^1.1.0" + pbkdf2 "^3.0.9" + randombytes "^2.0.1" + +bip39@^3.0.4: + version "3.1.0" + resolved "https://registry.yarnpkg.com/bip39/-/bip39-3.1.0.tgz#c55a418deaf48826a6ceb34ac55b3ee1577e18a3" + integrity sha512-c9kiwdk45Do5GL0vJMe7tS95VjCii65mYAH7DfWl3uW8AVzXKQVUm64i3hzVybBDMp9r7j9iNxR85+ul8MdN/A== + dependencies: + "@noble/hashes" "^1.2.0" + bl@^4.0.3, bl@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" @@ -6646,6 +8155,11 @@ bl@^4.0.3, bl@^4.1.0: inherits "^2.0.4" readable-stream "^3.4.0" +blakejs@^1.1.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" + integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== + blob-to-it@^2.0.0: version "2.0.5" resolved "https://registry.yarnpkg.com/blob-to-it/-/blob-to-it-2.0.5.tgz#5c7af31b139fde37b7f7d8e82dff8358ae38a63f" @@ -6658,12 +8172,17 @@ bluebird@^3.4.6: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -bn.js@^4.0.0, bn.js@^4.11.9: +bn.js@5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" + integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== + +bn.js@^4.0.0, bn.js@^4.11.8, bn.js@^4.11.9, bn.js@^4.12.0: version "4.12.0" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== -bn.js@^5.2.1: +bn.js@^5.0.0, bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== @@ -6686,6 +8205,15 @@ body-parser@1.20.2, body-parser@^1.20.2: type-is "~1.6.18" unpipe "1.0.0" +borsh@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/borsh/-/borsh-0.6.0.tgz#a7c9eeca6a31ca9e0607cb49f329cb659eb791e1" + integrity sha512-sl5k89ViqsThXQpYa9XDtz1sBl3l1lI313cFUY1HKr+wvMILnb+58xpkqTNrYbelh99dY7K8usxoCusQmqix9Q== + dependencies: + bn.js "^5.2.0" + bs58 "^4.0.0" + text-encoding-utf-8 "^1.0.2" + bowser@^2.11.0: version "2.11.0" resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f" @@ -6718,6 +8246,16 @@ brorand@^1.1.0: resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== +browser-level@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browser-level/-/browser-level-1.0.1.tgz#36e8c3183d0fe1c405239792faaab5f315871011" + integrity sha512-XECYKJ+Dbzw0lbydyQuJzwNXtOpbMSq737qxJN11sIRTErOMShvDpbzTlgju7orJKvx4epULolZAuJGLzCmWRQ== + dependencies: + abstract-level "^1.0.2" + catering "^2.1.1" + module-error "^1.0.2" + run-parallel-limit "^1.1.0" + browser-readablestream-to-it@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/browser-readablestream-to-it/-/browser-readablestream-to-it-1.0.3.tgz#ac3e406c7ee6cdf0a502dd55db33bab97f7fba76" @@ -6733,6 +8271,17 @@ browser-stdout@1.3.1: resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== +browserify-aes@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.0.6.tgz#5e7725dbdef1fd5930d4ebab48567ce451c48a0a" + integrity sha512-MMvWM6jpfsiuzY2Y+pRJvHRac3x3rHWQisWoz1dJaF9qDFsD8HdVxB7MyZKeLKeEt0fEjrXXZ0mxgTHSoJusug== + dependencies: + buffer-xor "^1.0.2" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.0" + inherits "^2.0.1" + browserslist@^4.21.10, browserslist@^4.21.5, browserslist@^4.22.2: version "4.23.0" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab" @@ -6743,6 +8292,13 @@ browserslist@^4.21.10, browserslist@^4.21.5, browserslist@^4.22.2: node-releases "^2.0.14" update-browserslist-db "^1.0.13" +bs58@4.0.1, bs58@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" + integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== + dependencies: + base-x "^3.0.2" + bs58@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/bs58/-/bs58-5.0.0.tgz#865575b4d13c09ea2a84622df6c8cbeb54ffc279" @@ -6750,6 +8306,15 @@ bs58@^5.0.0: dependencies: base-x "^4.0.0" +bs58check@<3.0.0, bs58check@^2.1.1, bs58check@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" + integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== + dependencies: + bs58 "^4.0.0" + create-hash "^1.1.0" + safe-buffer "^5.1.2" + bs58check@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-3.0.1.tgz#2094d13720a28593de1cba1d8c4e48602fdd841c" @@ -6773,6 +8338,18 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== +buffer-pipe@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/buffer-pipe/-/buffer-pipe-0.0.3.tgz#242197681d4591e7feda213336af6c07a5ce2409" + integrity sha512-GlxfuD/NrKvCNs0Ut+7b1IHjylfdegMBxQIlZHj7bObKVQBxB5S84gtm2yu1mQ8/sSggceWBDPY0cPXgvX2MuA== + dependencies: + safe-buffer "^5.1.2" + +buffer-xor@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== + buffer@4.9.2: version "4.9.2" resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" @@ -6823,11 +8400,50 @@ busboy@1.6.0, busboy@^1.0.0: dependencies: streamsearch "^1.1.0" +bytebuffer@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/bytebuffer/-/bytebuffer-5.0.1.tgz#582eea4b1a873b6d020a48d58df85f0bba6cfddd" + integrity sha512-IuzSdmADppkZ6DlpycMkm8l9zeEq16fWtLvunEwFiYciR/BHo4E8/xs5piFquG+Za8OWmMqHF8zuRviz2LHvRQ== + dependencies: + long "~3" + bytes@3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== +c32check@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/c32check/-/c32check-2.0.0.tgz#b9365618b2fb135c0783d03f00605b7b0f90c659" + integrity sha512-rpwfAcS/CMqo0oCqDf3r9eeLgScRE3l/xHDCXhM3UyrfvIn7PrLq63uHh7yYbv8NzaZn5MVsVhIRpQ+5GZ5HyA== + dependencies: + "@noble/hashes" "^1.1.2" + base-x "^4.0.0" + +cacache@^15.2.0: + version "15.3.0" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb" + integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ== + dependencies: + "@npmcli/fs" "^1.0.0" + "@npmcli/move-file" "^1.0.1" + chownr "^2.0.0" + fs-minipass "^2.0.0" + glob "^7.1.4" + infer-owner "^1.0.4" + lru-cache "^6.0.0" + minipass "^3.1.1" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^1.0.3" + p-map "^4.0.0" + promise-inflight "^1.0.1" + rimraf "^3.0.2" + ssri "^8.0.1" + tar "^6.0.2" + unique-filename "^1.1.1" + cachedir@2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.3.0.tgz#0c75892a052198f0b21c7c1804d8331edfcae0e8" @@ -6843,6 +8459,11 @@ caching-transform@^4.0.0: package-hash "^4.0.0" write-file-atomic "^3.0.0" +caip@^1.1.0, caip@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/caip/-/caip-1.1.1.tgz#c2c2b598b5e052d72c35c8d81b31f864e19c61e3" + integrity sha512-a3v5lteUUOoyRI0U6qe5ayCCGkF2mCmJ5zQMDnOD2vRjgRg6sm9p8TsRC2h4D4beyqRN9RYniphAPnj/+jQC6g== + call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" @@ -6878,7 +8499,7 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -camelcase@^6.0.0: +camelcase@^6.0.0, camelcase@^6.2.1: version "6.3.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== @@ -6893,11 +8514,36 @@ canonicalize@^1.0.1: resolved "https://registry.yarnpkg.com/canonicalize/-/canonicalize-1.0.8.tgz#24d1f1a00ed202faafd9bf8e63352cd4450c6df1" integrity sha512-0CNTVCLZggSh7bc5VkX5WWPWO+cyZbNd07IHIsSXLia/eAq+r836hgk+8BKoEh7949Mda87VUOitx5OddVj64A== +canonicalize@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/canonicalize/-/canonicalize-2.0.0.tgz#32be2cef4446d67fd5348027a384cae28f17226a" + integrity sha512-ulDEYPv7asdKvqahuAY35c1selLdzDwHqugK92hfkzvlDCwXRRelDkR+Er33md/PtnpqHemgkuDPanZ4fiYZ8w== + +capability@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/capability/-/capability-0.2.5.tgz#51ad87353f1936ffd77f2f21c74633a4dea88801" + integrity sha512-rsJZYVCgXd08sPqwmaIqjAd5SUTfonV0z/gDJ8D6cN8wQphky1kkAYEqQ+hmDxTw7UihvBfjUVUSY+DBEe44jg== + +cartonne@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/cartonne/-/cartonne-3.0.1.tgz#70aea12530b7ca400630326edb7cbbd02031883d" + integrity sha512-Y8DH//DthEUbfvOMGYj/9K3F1RcWkiVu2dB9tGkiBnMqojAXTpu+TUs9FNNx202H0TQdJgbPsQl7Q6NuJ48dCw== + dependencies: + "@ipld/dag-cbor" "^9.0.7" + multiformats "^13.0.0" + multihashes-sync "^2.0.0" + varintes "^2.0.5" + caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== +catering@^2.1.0, catering@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/catering/-/catering-2.1.1.tgz#66acba06ed5ee28d5286133982a927de9a04b510" + integrity sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w== + cbor-extract@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/cbor-extract/-/cbor-extract-2.2.0.tgz#cee78e630cbeae3918d1e2e58e0cebaf3a3be840" @@ -6919,11 +8565,21 @@ cbor-x@^1.3.0: optionalDependencies: cbor-extract "^2.2.0" +cborg@^1.10.2, cborg@^1.6.0: + version "1.10.2" + resolved "https://registry.yarnpkg.com/cborg/-/cborg-1.10.2.tgz#83cd581b55b3574c816f82696307c7512db759a1" + integrity sha512-b3tFPA9pUr2zCUiCfRd2+wok2/LBSNUMKOuRRok+WlvvAgEt/PlbgPTsZUcwCOs53IJvLgTp0eotwtosE6njug== + cborg@^4.0.0: version "4.1.3" resolved "https://registry.yarnpkg.com/cborg/-/cborg-4.1.3.tgz#5db6c9bcfe125cf1a653584840b6fe32ecd14580" integrity sha512-I8sAcVtiarz0dZ4IYixNUaL2hIl9cMDjo1ytI57F5fUlekTEO5Im8aXbAvsuayeP76hHSPRMwos0AUuntHJjqQ== +cborg@^4.0.5, cborg@^4.0.8: + version "4.2.1" + resolved "https://registry.yarnpkg.com/cborg/-/cborg-4.2.1.tgz#57170ef570dcdaf93575469a51f3b918a854669d" + integrity sha512-LSdnRagOTx1QZ3/ECLEOMc5fYHaDBjjQkBeBGtZ9KkGa78Opb5UzUxJeuxhmYTZm1DUzdBjj9JT3fcQNRL9ZBg== + chai@^4.3.4: version "4.4.1" resolved "https://registry.yarnpkg.com/chai/-/chai-4.4.1.tgz#3603fa6eba35425b0f2ac91a009fe924106e50d1" @@ -7012,6 +8668,11 @@ chokidar@^3.5.2, chokidar@^3.5.3: optionalDependencies: fsevents "~2.3.2" +chownr@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + chownr@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" @@ -7022,6 +8683,25 @@ chrome-trace-event@^1.0.2: resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +classic-level@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/classic-level/-/classic-level-1.4.1.tgz#169ecf9f9c6200ad42a98c8576af449c1badbaee" + integrity sha512-qGx/KJl3bvtOHrGau2WklEZuXhS3zme+jf+fsu6Ej7W7IP/C49v7KNlWIsT1jZu0YnfzSIYDGcEWpCa1wKGWXQ== + dependencies: + abstract-level "^1.0.2" + catering "^2.1.0" + module-error "^1.0.1" + napi-macros "^2.2.2" + node-gyp-build "^4.3.0" + clean-stack@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" @@ -7109,6 +8789,11 @@ cluster-key-slot@1.1.2: resolved "https://registry.yarnpkg.com/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz#88ddaa46906e303b5de30d3153b7d9fe0a0c19ac" integrity sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA== +codeco@^1.1.0, codeco@^1.2.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/codeco/-/codeco-1.2.3.tgz#2ec2ea3cac5c9e4f077b502144c00cbabdb212b5" + integrity sha512-nbj0SrL3Cr5nWRwStBDYkA/lEJ9xm9TOjKk7Fo4rEspEC/fb9k3N9MvoK/ygTInBh5dqjsFGC9Bd6AE3GnAyxg== + color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -7133,6 +8818,16 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +color-support@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== + +colorette@2.0.19: + version "2.0.19" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798" + integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== + colorette@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40" @@ -7143,6 +8838,11 @@ colorette@^2.0.16, colorette@^2.0.7: resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== +colors@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.0.tgz#5f20c9fef6945cb1134260aab33bfbdc8295e04e" + integrity sha512-EDpX3a7wHMWFA7PUHWPHNWqOxIIRSJetuwl0AS5Oi/5FMV8kWm69RTlgm00GKjBO1xFHMtBbL49yRtMMdticBw== + combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -7261,6 +8961,11 @@ config-chain@^1.1.13: ini "^1.3.4" proto-list "~1.2.1" +console-control-strings@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== + content-disposition@0.5.4: version "0.5.4" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" @@ -7422,11 +9127,77 @@ crc32-stream@^4.0.2: crc-32 "^1.2.0" readable-stream "^3.4.0" +create-hash@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd" + integrity sha512-snRpch/kwQhcdlnZKYanNF1m0RDlrCdSKQaH87w1FCFPVPNCQ/Il9QJKAX2jVBZddRdaHBMC+zXa9Gw9tmkNUA== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + ripemd160 "^2.0.0" + sha.js "^2.4.0" + +create-hash@1.2.0, create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.6.tgz#acb9e221a4e17bdb076e90657c42b93e3726cf06" + integrity sha512-23osI7H2SH6Zm4g7A7BTM9+3XicGZkemw00eEhrFViR3EdGru+azj2fMKf9J2zWMGO7AfPgYRdIRL96kkdy8QA== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + create-require@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== +cron-parser@^4.0.0: + version "4.9.0" + resolved "https://registry.yarnpkg.com/cron-parser/-/cron-parser-4.9.0.tgz#0340694af3e46a0894978c6f52a6dbb5c0f11ad5" + integrity sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q== + dependencies: + luxon "^3.2.1" + +cross-fetch@^3.1.5: + version "3.1.8" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82" + integrity sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg== + dependencies: + node-fetch "^2.6.12" + +cross-inspect@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/cross-inspect/-/cross-inspect-1.0.0.tgz#5fda1af759a148594d2d58394a9e21364f6849af" + integrity sha512-4PFfn4b5ZN6FMNGSZlyb7wUhuN8wvj8t/VQHZdM4JsDcruGJ8L2kf9zao98QIrBPFCpdk27qst/AGTl7pL3ypQ== + dependencies: + tslib "^2.4.0" + cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" @@ -7451,6 +9222,11 @@ csstype@^3.0.2: resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== +cuint@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/cuint/-/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b" + integrity sha512-d4ZVpCW31eWwCMe1YT3ur7mUDnTXbgwyzaL320DrcRT45rfjYxkt5QWLrmOJ+/UEAI2+fQgKe/fCjR8l4TpRgw== + cz-conventional-changelog@3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/cz-conventional-changelog/-/cz-conventional-changelog-3.3.0.tgz#9246947c90404149b3fe2cf7ee91acad3b7d22d2" @@ -7465,6 +9241,22 @@ cz-conventional-changelog@3.3.0: optionalDependencies: "@commitlint/load" ">6.1.1" +dag-jose-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/dag-jose-utils/-/dag-jose-utils-3.0.0.tgz#38a0fb1e17c0af5ea148fdd50a8b77671fe329fa" + integrity sha512-gu+XutOTy3kD8fDcA1SMjZ2U0mUOb/hxoRVZaMCizXN7Ssbc5dKOzeXQ4GquV4BdQzs3w5Y7irOpn2plFPIJfg== + dependencies: + "@ipld/dag-cbor" "^7.0.1" + multiformats "^11.0.1" + +dag-jose-utils@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/dag-jose-utils/-/dag-jose-utils-4.0.0.tgz#0cdecb555e6dbff2f023f36beee5b2a14d93d337" + integrity sha512-bmmXtVdEKp/zYH8El4GGkMREJioUztz8fzOErfy5dTbyKIVOF61C5sfsZLYCB/wiT/I9+SPNrQeo/Cx6Ik3wJQ== + dependencies: + "@ipld/dag-cbor" "^9.0.7" + multiformats "^13.0.0" + dag-jose@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/dag-jose/-/dag-jose-4.0.0.tgz#4e65f62af58dd5203b2b094eb52142ffe0cdec1d" @@ -7490,6 +9282,11 @@ data-uri-to-buffer@^4.0.0: resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz#d8feb2b2881e6a4f58c2e08acfd0e2834e26222e" integrity sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A== +dataloader@2.2.2, dataloader@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-2.2.2.tgz#216dc509b5abe39d43a9b9d97e6e5e473dfbe3e0" + integrity sha512-8YnDaaf7N3k/q5HnTJVuzSyLETjoZjVmHc4AeKAzOvKHEFQKcn64OKBfzHYtE9zGjctNM7V9I0MfnUVLpi7M5g== + date-fns@^2.30.0: version "2.30.0" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0" @@ -7528,6 +9325,13 @@ debug@^3.2.7: dependencies: ms "^2.1.1" +debug@^4.3.3: + version "4.3.5" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.5.tgz#e83444eceb9fedd4a1da56d671ae2446a01a6e1e" + integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg== + dependencies: + ms "2.1.2" + decamelize-keys@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.1.tgz#04a2d523b2f18d80d0158a43b895d56dff8d19d8" @@ -7546,6 +9350,18 @@ decamelize@^4.0.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== +decode-uri-component@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" + integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== + +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== + dependencies: + mimic-response "^3.1.0" + dedent@0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" @@ -7558,6 +9374,11 @@ deep-eql@^4.1.3: dependencies: type-detect "^4.0.0" +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + deep-is@^0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" @@ -7600,16 +9421,31 @@ define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1: has-property-descriptors "^1.0.0" object-keys "^1.1.1" +delay@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" + integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw== + delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== -depd@2.0.0: +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== + +depd@2.0.0, depd@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== + destroy@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" @@ -7625,6 +9461,11 @@ detect-indent@6.1.0: resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== +detect-libc@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700" + integrity sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw== + detect-libc@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.2.tgz#8ccf2ba9315350e1241b88d0ac3b0e1fbd99605d" @@ -7643,6 +9484,60 @@ dezalgo@^1.0.4: asap "^2.0.0" wrappy "1" +did-jwt@^7.2.0, did-jwt@^7.4.7: + version "7.4.7" + resolved "https://registry.yarnpkg.com/did-jwt/-/did-jwt-7.4.7.tgz#44105fb0a0cdfd78c087de52087422075c674700" + integrity sha512-Apz7nIfIHSKWIMaEP5L/K8xkwByvjezjTG0xiqwKdnNj1x8M0+Yasury5Dm/KPltxi2PlGfRPf3IejRKZrT8mQ== + dependencies: + "@noble/ciphers" "^0.4.0" + "@noble/curves" "^1.0.0" + "@noble/hashes" "^1.3.0" + "@scure/base" "^1.1.3" + canonicalize "^2.0.0" + did-resolver "^4.1.0" + multibase "^4.0.6" + multiformats "^9.6.2" + uint8arrays "3.1.1" + +did-resolver@^4.0.1, did-resolver@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/did-resolver/-/did-resolver-4.1.0.tgz#740852083c4fd5bf9729d528eca5d105aff45eb6" + integrity sha512-S6fWHvCXkZg2IhS4RcVHxwuyVejPR7c+a4Go0xbQ9ps5kILa8viiYQgrM4gfTyeTjJ0ekgJH9gk/BawTpmkbZA== + +dids@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/dids/-/dids-4.0.4.tgz#b84e10f0d41554c91cfe9f06f731bfc1f70cfe60" + integrity sha512-PKxQP0QFqgeMe0dbL7LCRdPJVhZU2ejj8RWCfJ6vro3a+o5o32cWNM1X6YXpdIWq6G5fTJw9KO2dHj2ZzYDc7w== + dependencies: + "@didtools/cacao" "^2.1.0" + "@didtools/codecs" "^1.0.1" + "@didtools/pkh-ethereum" "^0.4.1" + "@stablelib/random" "^1.0.1" + codeco "^1.1.0" + dag-jose-utils "^3.0.0" + did-jwt "^7.2.0" + did-resolver "^4.1.0" + multiformats "^11.0.2" + rpc-utils "^0.6.1" + uint8arrays "^4.0.3" + +dids@^5.0.0, dids@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/dids/-/dids-5.0.2.tgz#5a87b101814a46cdc2ecc0d32fa5c0e6d78e8ccb" + integrity sha512-sxTgrvJtatqdm7dukGbquk23BVvbiaxf3nTKywWaY9AUqwC2IYEo6FG0En2cMl3J1fqMMQXrGg9luh2xDmYOmw== + dependencies: + "@didtools/cacao" "^3.0.1" + "@didtools/codecs" "^3.0.0" + "@didtools/pkh-ethereum" "^0.5.0" + "@stablelib/random" "^1.0.2" + codeco "^1.2.0" + dag-jose-utils "^4.0.0" + did-jwt "^7.4.7" + did-resolver "^4.1.0" + multiformats "^13.0.0" + rpc-utils "^0.6.2" + uint8arrays "^5.0.1" + didyoumean@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" @@ -7748,6 +9643,11 @@ dotenv@^10.0.0: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== +dset@^3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/dset/-/dset-3.1.3.tgz#c194147f159841148e8e34ca41f638556d9542d2" + integrity sha512-20TuZZHCEZ2O71q9/+8BwKwZ0QtD9D8ObhrihJPr+vLLYlSuAU3/zL4cSlgbfeoGHTjCSJBa7NGcrF9/Bx/WJQ== + eastasianwidth@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" @@ -7768,6 +9668,20 @@ ecdsa-sig-formatter@1.0.11, ecdsa-sig-formatter@^1.0.11: dependencies: safe-buffer "^5.0.1" +ecurve@1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/ecurve/-/ecurve-1.0.5.tgz#d148e8fe50a674f983bb5bae09da0ea23e10535e" + integrity sha512-1Z3Zu5Nh5LSVGnwEnie1LDoHZByZxG2tk3wftkqeVHrfujmR8O+dOh96HVPxRPh4BjRWX0Z9mpwCYv/O/njgDw== + dependencies: + bigi "^1.1.0" + +ed2curve@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/ed2curve/-/ed2curve-0.3.0.tgz#322b575152a45305429d546b071823a93129a05d" + integrity sha512-8w2fmmq3hv9rCrcI7g9hms2pMunQr1JINfcjwR9tAyZqhtyaMN991lF/ZfHfr5tzZQ8c7y7aBgZbjfbd0fjFwQ== + dependencies: + tweetnacl "1.x.x" + editorconfig@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-1.0.4.tgz#040c9a8e9a6c5288388b87c2db07028aa89f53a3" @@ -7808,6 +9722,19 @@ elliptic@6.5.4: minimalistic-assert "^1.0.1" minimalistic-crypto-utils "^1.0.1" +elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.4: + version "6.5.5" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.5.tgz#c715e09f78b6923977610d4c2346d6ce22e6dded" + integrity sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" @@ -7823,7 +9750,7 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== -encoding@^0.1.13: +encoding@^0.1.12, encoding@^0.1.13: version "0.1.13" resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== @@ -7890,6 +9817,31 @@ entities@^4.2.0, entities@^4.4.0: resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== +env-paths@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== + +eosjs-ecc@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eosjs-ecc/-/eosjs-ecc-4.0.7.tgz#f5246da3b84839fcc237204768ef6e5ea56cc814" + integrity sha512-uuqhqnrDy9XTpKfkhiZqRDUTCCI9oWBalVK5IosL7kpYwA9I3lm68INYFLyWsHpF2xwHqPql8MrMYJ3zfOn5Qg== + dependencies: + "@babel/runtime" "7.6.0" + bigi "1.4.2" + browserify-aes "1.0.6" + bs58 "4.0.1" + bytebuffer "5.0.1" + create-hash "1.1.3" + create-hmac "1.1.6" + ecurve "1.0.5" + randombytes "2.0.5" + +err-code@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" + integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== + err-code@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/err-code/-/err-code-3.0.1.tgz#a444c7b992705f2b120ee320b09972eef331c920" @@ -7902,6 +9854,15 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" +error-polyfill@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/error-polyfill/-/error-polyfill-0.1.3.tgz#df848b61ad8834f7a5db69a70b9913df86721d15" + integrity sha512-XHJk60ufE+TG/ydwp4lilOog549iiQF2OAPhkk9DdiYWMrltz5yhDz/xnKuenNwP7gy3dsibssO5QpVhkrSzzg== + dependencies: + capability "^0.2.5" + o3 "^1.0.3" + u3 "^0.1.1" + error@7.0.2: version "7.0.2" resolved "https://registry.yarnpkg.com/error/-/error-7.0.2.tgz#a5f75fff4d9926126ddac0ea5dc38e689153cb02" @@ -8217,6 +10178,11 @@ eslint@^7.32.0: text-table "^0.2.0" v8-compile-cache "^2.0.3" +esm@^3.2.25: + version "3.2.25" + resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10" + integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA== + espree@^7.3.0, espree@^7.3.1: version "7.3.1" resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" @@ -8326,6 +10292,14 @@ events@3.3.0, events@^3.2.0, events@^3.3.0: resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== +evp_bytestokey@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + execa@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" @@ -8356,6 +10330,11 @@ execa@^5.0.0, execa@^5.1.1: signal-exit "^3.0.3" strip-final-newline "^2.0.0" +expand-template@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" + integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== + expand-tilde@^2.0.0, expand-tilde@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" @@ -8455,7 +10434,12 @@ fast-glob@^3.2.9, fast-glob@^3.3.0: merge2 "^1.3.0" micromatch "^4.0.4" -fast-json-stable-stringify@^2.0.0: +fast-json-patch@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/fast-json-patch/-/fast-json-patch-3.1.1.tgz#85064ea1b1ebf97a3f7ad01e23f9337e72c66947" + integrity sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ== + +fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== @@ -8528,6 +10512,11 @@ file-type@^3.3.0: resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9" integrity sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA== +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -8535,6 +10524,11 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" +filter-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b" + integrity sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ== + finalhandler@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" @@ -8620,6 +10614,11 @@ follow-redirects@^1.0.0, follow-redirects@^1.14.7, follow-redirects@^1.14.8, fol resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.5.tgz#54d4d6d062c0fa7d9d17feb008461550e3ba8020" integrity sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw== +follow-redirects@^1.14.4: + version "1.15.6" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" + integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== + for-each@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" @@ -8748,6 +10747,11 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== +fs@0.0.1-security: + version "0.0.1-security" + resolved "https://registry.yarnpkg.com/fs/-/fs-0.0.1-security.tgz#8a7bd37186b6dddf3813f23858b57ecaaf5e41d4" + integrity sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w== + fsevents@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" @@ -8778,6 +10782,20 @@ functions-have-names@^1.2.3: resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== +gauge@^4.0.3: + version "4.0.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" + integrity sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg== + dependencies: + aproba "^1.0.3 || ^2.0.0" + color-support "^1.1.3" + console-control-strings "^1.1.0" + has-unicode "^2.0.1" + signal-exit "^3.0.7" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wide-align "^1.1.5" + gaxios@^5.0.0: version "5.1.3" resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-5.1.3.tgz#f7fa92da0fe197c846441e5ead2573d4979e9013" @@ -8891,6 +10909,11 @@ get-them-args@1.3.2: resolved "https://registry.yarnpkg.com/get-them-args/-/get-them-args-1.3.2.tgz#74a20ba8a4abece5ae199ad03f2bcc68fdfc9ba5" integrity sha512-LRn8Jlk+DwZE4GTlDbT3Hikd1wSHgLMme/+7ddlqKd7ldwR6LjJgTVWzBnR01wnYGe4KgrXjg287RaI22UHmAw== +getopts@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/getopts/-/getopts-2.3.0.tgz#71e5593284807e03e2427449d4f6712a268666f4" + integrity sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA== + getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" @@ -8909,6 +10932,11 @@ git-raw-commits@^2.0.0: split2 "^3.0.0" through2 "^4.0.0" +github-from-package@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" + integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw== + glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" @@ -9077,7 +11105,12 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" -graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.9: +gql-query-builder@^3.8.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/gql-query-builder/-/gql-query-builder-3.8.0.tgz#d182d127f88abb7d39f7bec2c64f8b4570812e2f" + integrity sha512-q0PncZTrLDeyiH4R7YH1ISM+XGB4NvQ8eTm/Wr/sHSuquFZvqvDpGyMhbgoCZDc8kNAK8GOdfh3nI2GCLREFvw== + +graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -9087,6 +11120,23 @@ graphemer@^1.4.0: resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== +graphql-relay@^0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/graphql-relay/-/graphql-relay-0.10.1.tgz#4729ec92b5cf73879cf76d817ddbee7808d1cec9" + integrity sha512-8AtwSe6B0/b4+YzynHr38PP7S+zX5Vs5LEo0BEzGCPq/THAiHa5H5ZLf3bRbKbok15ADxDQSsGJmlqXeJDDPIw== + +graphql-scalars@^1.22.5: + version "1.23.0" + resolved "https://registry.yarnpkg.com/graphql-scalars/-/graphql-scalars-1.23.0.tgz#486785d1a6f9449277054a92afc7e1fb73f459d6" + integrity sha512-YTRNcwitkn8CqYcleKOx9IvedA8JIERn8BRq21nlKgOr4NEcTaWEG0sT+H92eF3ALTFbPgsqfft4cw+MGgv0Gg== + dependencies: + tslib "^2.5.0" + +graphql@^16.8.0, graphql@^16.8.1: + version "16.8.2" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.8.2.tgz#54771c7ff195da913f5e70af8044a026d32eca2a" + integrity sha512-cvVIBILwuoSyD54U4cF/UXDh5yAobhNV/tPygI4lZhgOIJQE/WLWC4waBRb4I6bDVYb3OVx3lfHbaQOEoUD5sg== + gtoken@^7.0.0: version "7.1.0" resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-7.1.0.tgz#d61b4ebd10132222817f7222b1e6064bd463fc26" @@ -9159,7 +11209,21 @@ has-tostringtag@^1.0.0, has-tostringtag@^1.0.2: dependencies: has-symbols "^1.0.3" -hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3: +has-unicode@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== + +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== @@ -9281,6 +11345,11 @@ htmlparser2@^8.0.2: domutils "^3.0.1" entities "^4.4.0" +http-cache-semantics@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" + integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== + http-errors@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" @@ -9292,6 +11361,26 @@ http-errors@2.0.0: statuses "2.0.1" toidentifier "1.0.1" +http-errors@^1.7.2: + version "1.8.1" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c" + integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.1" + +http-proxy-agent@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" + integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== + dependencies: + "@tootallnate/once" "1" + agent-base "6" + debug "4" + http-proxy-middleware@3.0.0-beta.0: version "3.0.0-beta.0" resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-3.0.0-beta.0.tgz#4c32cd1a190ec3c5d4e255b88c267ef47de0ec32" @@ -9348,6 +11437,13 @@ human-signals@^2.1.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== +humanize-ms@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== + dependencies: + ms "^2.0.0" + iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -9417,6 +11513,11 @@ indent-string@^4.0.0: resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== +infer-owner@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -9435,7 +11536,7 @@ ini@4.1.1: resolved "https://registry.yarnpkg.com/ini/-/ini-4.1.1.tgz#d95b3d843b1e906e56d6747d5447904ff50ce7a1" integrity sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g== -ini@^1.3.4: +ini@^1.3.4, ini@~1.3.0: version "1.3.8" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== @@ -9502,6 +11603,11 @@ interpret@^1.0.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== +interpret@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" + integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== + invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" @@ -9509,6 +11615,19 @@ invariant@^2.2.4: dependencies: loose-envify "^1.0.0" +ip-address@^9.0.5: + version "9.0.5" + resolved "https://registry.yarnpkg.com/ip-address/-/ip-address-9.0.5.tgz#117a960819b08780c3bd1f14ef3c1cc1d3f3ea5a" + integrity sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g== + dependencies: + jsbn "1.1.0" + sprintf-js "^1.1.3" + +ip-regex@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5" + integrity sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q== + ipaddr.js@1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" @@ -9530,7 +11649,7 @@ ipfs-core-types@^0.14.1: ipfs-unixfs "^9.0.0" multiformats "^11.0.0" -ipfs-core-utils@^0.18.0: +ipfs-core-utils@^0.18.0, ipfs-core-utils@^0.18.1: version "0.18.1" resolved "https://registry.yarnpkg.com/ipfs-core-utils/-/ipfs-core-utils-0.18.1.tgz#d5fae11bfdb511749c6f905b0d0da3174eb50909" integrity sha512-P7jTpdfvlyBG3JR4o+Th3QJADlmXmwMxbkjszXry6VAjfSfLIIqXsdeYPoVRkV69GFEeQozuz2k/jR+U8cUH/Q== @@ -9556,6 +11675,31 @@ ipfs-core-utils@^0.18.0: timeout-abort-controller "^3.0.0" uint8arrays "^4.0.2" +ipfs-http-client@^60.0.0: + version "60.0.1" + resolved "https://registry.yarnpkg.com/ipfs-http-client/-/ipfs-http-client-60.0.1.tgz#d2e9ab430aad43a92a6e44008e534afba4fd22b9" + integrity sha512-amwM5TNuf077J+/q27jPHfatC05vJuIbX6ZnlYLjc2QsjOCKsORNBqV3brNw7l+fPrijV1yrwEDLG3JEnKsfMw== + dependencies: + "@ipld/dag-cbor" "^9.0.0" + "@ipld/dag-json" "^10.0.0" + "@ipld/dag-pb" "^4.0.0" + "@libp2p/logger" "^2.0.5" + "@libp2p/peer-id" "^2.0.0" + "@multiformats/multiaddr" "^11.1.5" + any-signal "^3.0.0" + dag-jose "^4.0.0" + err-code "^3.0.1" + ipfs-core-types "^0.14.1" + ipfs-core-utils "^0.18.1" + ipfs-utils "^9.0.13" + it-first "^2.0.0" + it-last "^2.0.0" + merge-options "^3.0.4" + multiformats "^11.0.0" + parse-duration "^1.0.0" + stream-to-it "^0.2.2" + uint8arrays "^4.0.2" + ipfs-unixfs@^11.1.3: version "11.1.3" resolved "https://registry.yarnpkg.com/ipfs-unixfs/-/ipfs-unixfs-11.1.3.tgz#b53f36d8d34022516d6cfead4305839712c1dab2" @@ -9638,6 +11782,11 @@ is-boolean-object@^1.1.0: call-bind "^1.0.2" has-tostringtag "^1.0.0" +is-buffer@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" + integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== + is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" @@ -9691,6 +11840,11 @@ is-interactive@^1.0.0: resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== +is-lambda@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" + integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== + is-negative-zero@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747" @@ -9843,6 +11997,11 @@ isomorphic-ws@^5.0.0: resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz#e5529148912ecb9b451b46ed44d53dae1ce04bbf" integrity sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw== +isows@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/isows/-/isows-1.0.3.tgz#93c1cf0575daf56e7120bab5c8c448b0809d0d74" + integrity sha512-2cKei4vlmg2cxEjm3wVSqn8pcoRF/LX/wpifuuNquFO4SQmPwarClT+SUCA2lt+l581tTeZIPIZuIDo2jWN1fg== + isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" @@ -9918,11 +12077,26 @@ it-all@^2.0.0: resolved "https://registry.yarnpkg.com/it-all/-/it-all-2.0.1.tgz#45d530ecf6e13fb81d7ba583cdfd55ffdb376b05" integrity sha512-9UuJcCRZsboz+HBQTNOau80Dw+ryGaHYFP/cPYzFBJBFcfDathMYnhHk4t52en9+fcyDGPTdLB+lFc1wzQIroA== +it-all@^3.0.1: + version "3.0.6" + resolved "https://registry.yarnpkg.com/it-all/-/it-all-3.0.6.tgz#30a4f922ae9ca0945b0f720d3478ae6f5b6707ab" + integrity sha512-HXZWbxCgQZJfrv5rXvaVeaayXED8nTKx9tj9fpBhmcUJcedVZshMMMqTj0RG2+scGypb9Ut1zd1ifbf3lA8L+Q== + +it-batch@^3.0.1: + version "3.0.6" + resolved "https://registry.yarnpkg.com/it-batch/-/it-batch-3.0.6.tgz#0bcda35bf1c600e821c6d5f4d2446fe85a26ab1d" + integrity sha512-pQAAlSvJ4aV6xM/6LRvkPdKSKXxS4my2fGzNUxJyAQ8ccFdxPmK1bUuF5OoeUDkcdrbs8jtsmc4DypCMrGY6sg== + it-first@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/it-first/-/it-first-2.0.1.tgz#75d66b254c385ae3a1906def060a69006a437cef" integrity sha512-noC1oEQcWZZMUwq7VWxHNLML43dM+5bviZpfmkxkXlvBe60z7AFRqpZSga9uQBo792jKv9otnn1IjA4zwgNARw== +it-first@^3.0.4: + version "3.0.6" + resolved "https://registry.yarnpkg.com/it-first/-/it-first-3.0.6.tgz#f532f0f36fe9bf0c291e0162b9d3375d59fe8f05" + integrity sha512-ExIewyK9kXKNAplg2GMeWfgjUcfC1FnUXz/RPfAvIXby+w7U4b3//5Lic0NV03gXT8O/isj5Nmp6KiY0d45pIQ== + it-glob@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/it-glob/-/it-glob-1.0.2.tgz#bab9b04d6aaac42884502f3a0bfee84c7a29e15e" @@ -10011,6 +12185,13 @@ jest-worker@^27.4.5: merge-stream "^2.0.0" supports-color "^8.0.0" +jet-logger@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/jet-logger/-/jet-logger-1.2.2.tgz#f3866c0a34b6dc43f03bf4479ca677a1110156bc" + integrity sha512-Kbw4G3BC45+Umz5XBnsE50pHplruJTVKGRy5X1YfCu3Te7f8ggTL8Tm10YegAD2QP41MVQ3o/Y9MFAZzfythqw== + dependencies: + colors "1.3.0" + jiti@^1.19.1: version "1.21.0" resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d" @@ -10053,7 +12234,12 @@ js-cookie@^3.0.5: resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-3.0.5.tgz#0b7e2fd0c01552c58ba86e0841f94dc2557dcdbc" integrity sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw== -js-sha3@0.8.0: +js-sha256@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.9.0.tgz#0b89ac166583e91ef9123644bd3c5334ce9d0966" + integrity sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA== + +js-sha3@0.8.0, js-sha3@^0.8.0: version "0.8.0" resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== @@ -10078,6 +12264,11 @@ js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" +jsbn@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040" + integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A== + jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" @@ -10105,6 +12296,11 @@ json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== +json-ptr@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/json-ptr/-/json-ptr-3.1.1.tgz#184c3d48db659fa9bbc1519f7db6f390ddffb659" + integrity sha512-SiSJQ805W1sDUCD1+/t1/1BIrveq2Fe9HJqENxZmMCILmrPI7WhS/pePpIOx85v6/H2z1Vy7AI08GV2TzfXocg== + json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" @@ -10115,6 +12311,11 @@ json-schema-traverse@^1.0.0: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== +json-schema-typed@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/json-schema-typed/-/json-schema-typed-8.0.1.tgz#826ee39e3b6cef536f85412ff048d3ff6f19dfa0" + integrity sha512-XQmWYj2Sm4kn4WeTYvmpKEbyPsL7nBsb647c7pMe6l02/yx2+Jfc4dT6UZkEXnIUb5LhD55r2HPsJ1milQ4rDg== + json-schema@0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" @@ -10166,6 +12367,15 @@ jsonparse@^1.2.0: resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== +jsontokens@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/jsontokens/-/jsontokens-4.0.1.tgz#c3edf74a01160b2ca6d62b021b288edd59d1184a" + integrity sha512-+MO415LEN6M+3FGsRz4wU20g7N2JA+2j9d9+pGaNJHviG4L8N0qzavGyENw6fJqsq9CcrHOIL6iWX5yeTZ86+Q== + dependencies: + "@noble/hashes" "^1.1.2" + "@noble/secp256k1" "^1.6.3" + base64-js "^1.5.1" + jsonwebtoken@^8.5.1: version "8.5.1" resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz#00e71e0b8df54c2121a1f26137df2280673bcc0d" @@ -10226,6 +12436,40 @@ jws@^4.0.0: jwa "^2.0.0" safe-buffer "^5.0.1" +key-did-provider-ed25519@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/key-did-provider-ed25519/-/key-did-provider-ed25519-3.0.2.tgz#5c336954680db2ae03e9d4a25cdbde30b72062b5" + integrity sha512-4Yw0CeO1hKRaUsh9NIz4tn4Ysr09CdoJItyT0vHjd5iedJ+FvVt7pTbNr7IY0/+8mWvYslutAK5LFrwu5agpsA== + dependencies: + "@noble/curves" "^1.1.0" + did-jwt "^7.2.0" + dids "^4.0.4" + fast-json-stable-stringify "^2.1.0" + rpc-utils "^0.6.2" + uint8arrays "^4.0.3" + +key-did-provider-ed25519@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/key-did-provider-ed25519/-/key-did-provider-ed25519-4.0.2.tgz#f1ae847257e5aefff7ac6899630231034e62da05" + integrity sha512-bnnRGuuUtylKGMVmgXVSoGccBg87roFi6xy5dQmTgNqnCmrxBBUatYoVimcnA+SGCFqi2qk6B9dD10Ed4rTZPg== + dependencies: + "@noble/curves" "^1.3.0" + did-jwt "^7.4.7" + dids "^5.0.2" + fast-json-stable-stringify "^2.1.0" + rpc-utils "^0.6.2" + uint8arrays "^5.0.1" + +key-did-resolver@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/key-did-resolver/-/key-did-resolver-4.0.0.tgz#011910ef2db7db82977466ac6850b4976f8cd761" + integrity sha512-+U2nd/0rjO4Yqe2hnHBD7ygcLRfT43Oje9IIjv1BlBi0lopwxZpIFQ7GekguOHK02r+JGdl8mpJVNHs5lvXVOA== + dependencies: + "@noble/curves" "^1.2.0" + multiformats "^13.0.0" + uint8arrays "^5.0.1" + varint "^6.0.0" + keyv@^4.5.3: version "4.5.4" resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" @@ -10246,6 +12490,26 @@ kind-of@^6.0.3: resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== +knex@^2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/knex/-/knex-2.5.1.tgz#a6c6b449866cf4229f070c17411f23871ba52ef9" + integrity sha512-z78DgGKUr4SE/6cm7ku+jHvFT0X97aERh/f0MUKAKgFnwCYBEW4TFBqtHWFYiJFid7fMrtpZ/gxJthvz5mEByA== + dependencies: + colorette "2.0.19" + commander "^10.0.0" + debug "4.3.4" + escalade "^3.1.1" + esm "^3.2.25" + get-package-type "^0.1.0" + getopts "2.3.0" + interpret "^2.2.0" + lodash "^4.17.21" + pg-connection-string "2.6.1" + rechoir "^0.8.0" + resolve-from "^5.0.0" + tarn "^3.0.2" + tildify "2.0.0" + kubo-rpc-client@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/kubo-rpc-client/-/kubo-rpc-client-3.0.4.tgz#4027b0abeb848d4a5bdb18a7d614af5173966575" @@ -10296,6 +12560,43 @@ leac@^0.6.0: resolved "https://registry.yarnpkg.com/leac/-/leac-0.6.0.tgz#dcf136e382e666bd2475f44a1096061b70dc0912" integrity sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg== +least-recent@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/least-recent/-/least-recent-1.0.3.tgz#8c11b57c3874dac051f65e265b690e10a35390c6" + integrity sha512-PH9ZuFAKFf5fY7j0wizus6f/Ni2wSaby4eQYEUmR+sK6lY7OEbVz/iEh/tTgEmgOivWJhay89wVyUe5VnXoUSQ== + dependencies: + nanoevents "^8.0.0" + +leb128@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/leb128/-/leb128-0.0.5.tgz#84524a86ef7799fb3933ce41345f6490e27ac948" + integrity sha512-elbNtfmu3GndZbesVF6+iQAfVjOXW9bM/aax9WwMlABZW+oK9sbAZEXoewaPHmL34sxa8kVwWsru8cNE/yn2gg== + dependencies: + bn.js "^5.0.0" + buffer-pipe "0.0.3" + +level-supports@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-4.0.1.tgz#431546f9d81f10ff0fea0e74533a0e875c08c66a" + integrity sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA== + +level-transcoder@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/level-transcoder/-/level-transcoder-1.0.1.tgz#f8cef5990c4f1283d4c86d949e73631b0bc8ba9c" + integrity sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w== + dependencies: + buffer "^6.0.3" + module-error "^1.0.1" + +level@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/level/-/level-8.0.1.tgz#737161db1bc317193aca4e7b6f436e7e1df64379" + integrity sha512-oPBGkheysuw7DmzFQYyFe8NAia5jFLAgEnkgWnK3OXAuJr8qFT+xBQIwokAZPME2bhPFzS8hlYcL16m8UZrtwQ== + dependencies: + abstract-level "^1.0.4" + browser-level "^1.0.1" + classic-level "^1.2.0" + levn@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" @@ -10382,6 +12683,16 @@ lodash.camelcase@^4.3.0: resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== +lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ== + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== + lodash.defaults@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" @@ -10422,6 +12733,11 @@ lodash.isinteger@^4.0.4: resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" integrity sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA== +lodash.ismatch@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" + integrity sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g== + lodash.isnumber@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc" @@ -10495,6 +12811,14 @@ log-update@^4.0.0: slice-ansi "^4.0.0" wrap-ansi "^6.2.0" +logfmt@^1.3.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/logfmt/-/logfmt-1.4.0.tgz#6cb1e62cf65143a3248aa0f2823c3bd436e2251f" + integrity sha512-p1Ow0C2dDJYaQBhRHt+HVMP6ELuBm4jYSYNHPMfz0J5wJ9qA6/7oBOlBZBfT1InqguTYcvJzNea5FItDxTcbyw== + dependencies: + split "0.2.x" + through "2.3.x" + long@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/long/-/long-2.4.0.tgz#9fa180bb1d9500cdc29c4156766a1995e1f4524f" @@ -10505,6 +12829,11 @@ long@^5.0.0: resolved "https://registry.yarnpkg.com/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1" integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q== +long@~3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" + integrity sha512-ZYvPPOMqUwPoDsbJaR10iQJYnMuZhRTvHYl62ErLIEX7RgFlziSBUUvrt3OVfc47QlHHpzPZYP17g3Fv7oeJkg== + longest@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/longest/-/longest-2.0.1.tgz#781e183296aa94f6d4d916dc335d0d17aefa23f8" @@ -10543,6 +12872,11 @@ lru-cache@^6.0.0: resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.0.tgz#0bd445ca57363465900f4d1f9bd8db343a4d95c3" integrity sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q== +luxon@^3.2.1: + version "3.4.4" + resolved "https://registry.yarnpkg.com/luxon/-/luxon-3.4.4.tgz#cf20dc27dc532ba41a169c43fdcc0063601577af" + integrity sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA== + make-dir@^3.0.0, make-dir@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" @@ -10562,6 +12896,28 @@ make-error@^1, make-error@^1.1.1: resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== +make-fetch-happen@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz#53085a09e7971433e6765f7971bf63f4e05cb968" + integrity sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg== + dependencies: + agentkeepalive "^4.1.3" + cacache "^15.2.0" + http-cache-semantics "^4.1.0" + http-proxy-agent "^4.0.1" + https-proxy-agent "^5.0.0" + is-lambda "^1.0.1" + lru-cache "^6.0.0" + minipass "^3.1.3" + minipass-collect "^1.0.2" + minipass-fetch "^1.3.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + negotiator "^0.6.2" + promise-retry "^2.0.1" + socks-proxy-agent "^6.0.0" + ssri "^8.0.0" + map-obj@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" @@ -10572,6 +12928,11 @@ map-obj@^4.0.0: resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== +mapmoize@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/mapmoize/-/mapmoize-1.2.1.tgz#a491a01dfc9f851478120057d98af9b160edf4d7" + integrity sha512-LK8ArSM1wbfRPTnl+LpdxW1pwkfY6GxtM9p+STr6aDtM7ImR8jLuf4ekei43/AN0f7XDSrohzwwK57eGHSDAuA== + marked@7.0.4: version "7.0.4" resolved "https://registry.yarnpkg.com/marked/-/marked-7.0.4.tgz#e2558ee2d535b9df6a27c6e282dc603a18388a6d" @@ -10584,6 +12945,15 @@ md-to-react-email@4.1.0: dependencies: marked "7.0.4" +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" @@ -10655,6 +13025,11 @@ methods@^1.1.2, methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== +micro-base@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/micro-base/-/micro-base-0.9.0.tgz#09cfe20285bec0ea97f41dc3d10e3fba3d0266ee" + integrity sha512-4+tOMKidYT5nQ6/UNmYrGVO5PMcnJdfuR4NC8HK8s2H61B4itOhA9yrsjBdqGV7ecdtej36x3YSIfPLRmPrspg== + micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: version "4.0.5" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" @@ -10690,6 +13065,11 @@ mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== +mimic-response@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== + min-indent@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" @@ -10754,12 +13134,51 @@ minimist@1.2.7: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== -minimist@^1.1.0, minimist@^1.2.0, minimist@^1.2.6: +minimist@^1.1.0, minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.6: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== -minipass@^3.0.0: +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" + +minipass-fetch@^1.3.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-1.4.1.tgz#d75e0091daac1b0ffd7e9d41629faff7d0c1f1b6" + integrity sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw== + dependencies: + minipass "^3.1.0" + minipass-sized "^1.0.3" + minizlib "^2.0.0" + optionalDependencies: + encoding "^0.1.12" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-pipeline@^1.2.2, minipass-pipeline@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== + dependencies: + minipass "^3.0.0" + +minipass-sized@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" + integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== + dependencies: + minipass "^3.0.0" + +minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3: version "3.3.6" resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== @@ -10781,7 +13200,7 @@ minipass@^5.0.0: resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c" integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== -minizlib@^2.1.1: +minizlib@^2.0.0, minizlib@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== @@ -10789,6 +13208,11 @@ minizlib@^2.1.1: minipass "^3.0.0" yallist "^4.0.0" +mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" + integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== + mkdirp@^0.5.4: version "0.5.6" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" @@ -10832,6 +13256,11 @@ module-details-from-path@^1.0.3: resolved "https://registry.yarnpkg.com/module-details-from-path/-/module-details-from-path-1.0.3.tgz#114c949673e2a8a35e9d35788527aa37b679da2b" integrity sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A== +module-error@^1.0.1, module-error@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/module-error/-/module-error-1.0.2.tgz#8d1a48897ca883f47a45816d4fb3e3c6ba404d86" + integrity sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA== + mri@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" @@ -10847,7 +13276,7 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@2.1.3, ms@^2.1.1: +ms@2.1.3, ms@^2.0.0, ms@^2.1.1: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -10875,7 +13304,14 @@ multer@^1.4.5-lts.1: type-is "^1.6.4" xtend "^4.0.0" -multiformats@^11.0.0, multiformats@^11.0.2: +multibase@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/multibase/-/multibase-4.0.6.tgz#6e624341483d6123ca1ede956208cb821b440559" + integrity sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ== + dependencies: + "@multiformats/base-x" "^4.0.1" + +multiformats@^11.0.0, multiformats@^11.0.1, multiformats@^11.0.2: version "11.0.2" resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-11.0.2.tgz#b14735efc42cd8581e73895e66bebb9752151b60" integrity sha512-b5mYMkOkARIuVZCpvijFj9a6m5wMVLC7cf/jIPd5D/ARDOfLC5+IFkbgDXQgcU2goIsTD/O9NY4DI/Mt4OGvlg== @@ -10890,6 +13326,24 @@ multiformats@^13.0.0, multiformats@^13.1.0: resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-13.1.0.tgz#5aa9d2175108a448fc3bdb54ba8a3d0b6cab3ac3" integrity sha512-HzdtdBwxsIkzpeXzhQ5mAhhuxcHbjEHH+JQoxt7hG/2HGFjjwyolLo7hbaexcnhoEuV4e0TNJ8kkpMjiEYY4VQ== +multiformats@^9.4.2, multiformats@^9.5.4, multiformats@^9.6.2: + version "9.9.0" + resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-9.9.0.tgz#c68354e7d21037a8f1f8833c8ccd68618e8f1d37" + integrity sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg== + +multihashes-sync@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/multihashes-sync/-/multihashes-sync-2.0.0.tgz#777c6ab4b32862075a775cec15f09c1e69d426df" + integrity sha512-hoBamCqXuVmeo4NAY52dbYuUIKHy3/FcqxyKZSbhqicR2SbUjgiY4FoDvE8BV40dPfAJTT6pQpqYeuKxqKwOLQ== + dependencies: + "@noble/hashes" "^1.3.3" + multiformats "^13.0.0" + +mustache@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/mustache/-/mustache-4.2.0.tgz#e5892324d60a12ec9c2a73359edca52972bf6f64" + integrity sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ== + mute-stream@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" @@ -10904,7 +13358,17 @@ mz@^2.7.0: object-assign "^4.0.1" thenify-all "^1.0.0" -nanoid@^3.1.20, nanoid@^3.3.6, nanoid@^3.3.7: +nan@^2.13.2: + version "2.20.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.20.0.tgz#08c5ea813dd54ed16e5bd6505bf42af4f7838ca3" + integrity sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw== + +nanoevents@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/nanoevents/-/nanoevents-8.0.0.tgz#d58d5cf69b172d794707b2468bdaccc415ad23b6" + integrity sha512-bYYwNCdNc5ea6/Lwh1uioU1/7aaKa3EPmNQ2weTm8PWSpbWrsaWHePe0Zq4SF+D3F3JX3cn+QdktOPCf1meOqw== + +nanoid@^3.1.20, nanoid@^3.3.1, nanoid@^3.3.6, nanoid@^3.3.7: version "3.3.7" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== @@ -10914,6 +13378,16 @@ nanoid@^4.0.0: resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-4.0.2.tgz#140b3c5003959adbebf521c170f282c5e7f9fb9e" integrity sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw== +napi-build-utils@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" + integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== + +napi-macros@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/napi-macros/-/napi-macros-2.2.2.tgz#817fef20c3e0e40a963fbf7b37d1600bd0201044" + integrity sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g== + native-fetch@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/native-fetch/-/native-fetch-3.0.0.tgz#06ccdd70e79e171c365c75117959cf4fe14a09bb" @@ -10929,7 +13403,24 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -negotiator@0.6.3: +near-api-js@^0.44.2: + version "0.44.2" + resolved "https://registry.yarnpkg.com/near-api-js/-/near-api-js-0.44.2.tgz#e451f68f2c56bd885c7b918db5818a3e6e9423d0" + integrity sha512-eMnc4V+geggapEUa3nU2p8HSHn/njtloI4P2mceHQWO8vDE1NGpnAw8FuTBrLmXSgIv9m6oocgFc9t3VNf5zwg== + dependencies: + bn.js "5.2.0" + borsh "^0.6.0" + bs58 "^4.0.0" + depd "^2.0.0" + error-polyfill "^0.1.3" + http-errors "^1.7.2" + js-sha256 "^0.9.0" + mustache "^4.0.0" + node-fetch "^2.6.1" + text-encoding-utf-8 "^1.0.2" + tweetnacl "^1.0.1" + +negotiator@0.6.3, negotiator@^0.6.2: version "0.6.3" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== @@ -10962,12 +13453,29 @@ next@14.1.0: "@next/swc-win32-ia32-msvc" "14.1.0" "@next/swc-win32-x64-msvc" "14.1.0" +node-abi@^3.3.0: + version "3.65.0" + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.65.0.tgz#ca92d559388e1e9cab1680a18c1a18757cdac9d3" + integrity sha512-ThjYBfoDNr08AWx6hGaRbfPwxKV9kVzAzOzlLKbk2CuqXE2xnCh+cbAGnwM3t8Lq4v9rUB7VfondlkBckcJrVA== + dependencies: + semver "^7.3.5" + +node-addon-api@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" + integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== + +node-addon-api@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-7.1.0.tgz#71f609369379c08e251c558527a107107b5e0fdb" + integrity sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g== + node-domexception@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== -node-fetch@^2.6.8, node-fetch@^2.6.9: +node-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.8, node-fetch@^2.6.9: version "2.7.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== @@ -10995,6 +13503,27 @@ node-gyp-build-optional-packages@5.1.1: dependencies: detect-libc "^2.0.1" +node-gyp-build@^4.2.0, node-gyp-build@^4.3.0: + version "4.8.1" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.1.tgz#976d3ad905e71b76086f4f0b0d3637fe79b6cda5" + integrity sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw== + +node-gyp@8.x: + version "8.4.1" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-8.4.1.tgz#3d49308fc31f768180957d6b5746845fbd429937" + integrity sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w== + dependencies: + env-paths "^2.2.0" + glob "^7.1.4" + graceful-fs "^4.2.6" + make-fetch-happen "^9.1.0" + nopt "^5.0.0" + npmlog "^6.0.0" + rimraf "^3.0.2" + semver "^7.3.5" + tar "^6.1.2" + which "^2.0.2" + node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" @@ -11036,6 +13565,13 @@ noms@0.0.0: inherits "^2.0.1" readable-stream "~1.0.31" +nopt@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" + integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== + dependencies: + abbrev "1" + nopt@^7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/nopt/-/nopt-7.2.0.tgz#067378c68116f602f552876194fd11f1292503d7" @@ -11087,6 +13623,16 @@ npm-run-path@^4.0.0, npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" +npmlog@^6.0.0: + version "6.0.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" + integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg== + dependencies: + are-we-there-yet "^3.0.0" + console-control-strings "^1.1.0" + gauge "^4.0.3" + set-blocking "^2.0.0" + nyc@^15.1.0: version "15.1.0" resolved "https://registry.yarnpkg.com/nyc/-/nyc-15.1.0.tgz#1335dae12ddc87b6e249d5a1994ca4bdaea75f02" @@ -11120,6 +13666,13 @@ nyc@^15.1.0: test-exclude "^6.0.0" yargs "^15.0.2" +o3@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/o3/-/o3-1.0.3.tgz#192ce877a882dfa6751f0412a865fafb2da1dac0" + integrity sha512-f+4n+vC6s4ysy7YO7O2gslWZBUu8Qj2i2OUJOvjRxQva7jVjYjB29jrr9NCjmxZQR0gzrOcv1RnqoYOeMs5VRQ== + dependencies: + capability "^0.2.5" + oauth-sign@~0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" @@ -11145,6 +13698,13 @@ object-keys@^1.1.1: resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== +object-sizeof@^2.6.1: + version "2.6.4" + resolved "https://registry.yarnpkg.com/object-sizeof/-/object-sizeof-2.6.4.tgz#cdcb6697ac20978ddfa57d6d4f5fae8e7b8509dc" + integrity sha512-YuJAf7Bi61KROcYmXm8RCeBrBw8UOaJDzTm1gp0eU7RjYi1xEte3/Nmg/VyPaHcJZ3sNojs1Y0xvSrgwkLmcFw== + dependencies: + buffer "^6.0.3" + object.assign@^4.1.5: version "4.1.5" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" @@ -11423,6 +13983,17 @@ pathval@^1.1.1: resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== +pbkdf2@^3.0.9: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + peberminta@^0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/peberminta/-/peberminta-0.9.0.tgz#8ec9bc0eb84b7d368126e71ce9033501dca2a352" @@ -11438,6 +14009,34 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== +pg-boss@^8.2.0: + version "8.4.2" + resolved "https://registry.yarnpkg.com/pg-boss/-/pg-boss-8.4.2.tgz#4c300e3683e6acd7c157481544a49b8f565fe5e5" + integrity sha512-xcl/G8C7qlCyrcvlQvgLVBIe68zO0XfZc6K86/G9fq/mL+YQMEo1spW6lHqsPpNi2KGlpXwBEL/XZxkMa19eRA== + dependencies: + cron-parser "^4.0.0" + delay "^5.0.0" + lodash.debounce "^4.0.8" + p-map "^4.0.0" + pg "^8.5.1" + serialize-error "^8.1.0" + uuid "^9.0.0" + +pg-cloudflare@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz#e6d5833015b170e23ae819e8c5d7eaedb472ca98" + integrity sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q== + +pg-connection-string@2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.6.1.tgz#78c23c21a35dd116f48e12e23c0965e8d9e2cbfb" + integrity sha512-w6ZzNu6oMmIzEAYVw+RLK0+nqHPt8K3ZnknKi+g48Ak2pr3dtljJW3o+D/n2zzCG07Zoe9VOX3aiKpj+BN0pjg== + +pg-connection-string@^2.6.4: + version "2.6.4" + resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.6.4.tgz#f543862adfa49fa4e14bc8a8892d2a84d754246d" + integrity sha512-v+Z7W/0EO707aNMaAEfiGnGL9sxxumwLl2fJvCQtMn9Fxsg+lPpPkdcyBSv/KFgpGdYkMfn+EI1Or2EHjpgLCA== + pg-int8@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/pg-int8/-/pg-int8-1.0.1.tgz#943bd463bf5b71b4170115f80f8efc9a0c0eb78c" @@ -11448,12 +14047,22 @@ pg-numeric@1.0.2: resolved "https://registry.yarnpkg.com/pg-numeric/-/pg-numeric-1.0.2.tgz#816d9a44026086ae8ae74839acd6a09b0636aa3a" integrity sha512-BM/Thnrw5jm2kKLE5uJkXqqExRUY/toLHda65XgFTBTFYZyopbKjBe29Ii3RbkvlsMoFwD+tHeGaCjjv0gHlyw== +pg-pool@^3.6.2: + version "3.6.2" + resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-3.6.2.tgz#3a592370b8ae3f02a7c8130d245bc02fa2c5f3f2" + integrity sha512-Htjbg8BlwXqSBQ9V8Vjtc+vzf/6fVUuak/3/XXKA9oxZprwW3IMDQTGHP+KDmVL7rtd+R1QjbnCFPuTHm3G4hg== + pg-protocol@*: version "1.6.0" resolved "https://registry.yarnpkg.com/pg-protocol/-/pg-protocol-1.6.0.tgz#4c91613c0315349363af2084608db843502f8833" integrity sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q== -pg-types@^2.2.0: +pg-protocol@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/pg-protocol/-/pg-protocol-1.6.1.tgz#21333e6d83b01faaebfe7a33a7ad6bfd9ed38cb3" + integrity sha512-jPIlvgoD63hrEuihvIg+tJhoGjUsLPn6poJY9N5CnlPd91c2T18T/9zBtLxZSb1EhYxBRoZJtzScCaWlYLtktg== + +pg-types@^2.1.0, pg-types@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/pg-types/-/pg-types-2.2.0.tgz#2d0250d636454f7cfa3b6ae0382fdfa8063254a3" integrity sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA== @@ -11477,6 +14086,26 @@ pg-types@^4.0.1: postgres-interval "^3.0.0" postgres-range "^1.1.1" +pg@^8.11.3, pg@^8.5.1: + version "8.12.0" + resolved "https://registry.yarnpkg.com/pg/-/pg-8.12.0.tgz#9341724db571022490b657908f65aee8db91df79" + integrity sha512-A+LHUSnwnxrnL/tZ+OLfqR1SxLN3c/pgDztZ47Rpbsd4jUytsTtwQo/TLPRzPJMp/1pbhYVhH9cuSZLAajNfjQ== + dependencies: + pg-connection-string "^2.6.4" + pg-pool "^3.6.2" + pg-protocol "^1.6.1" + pg-types "^2.1.0" + pgpass "1.x" + optionalDependencies: + pg-cloudflare "^1.1.1" + +pgpass@1.x: + version "1.0.5" + resolved "https://registry.yarnpkg.com/pgpass/-/pgpass-1.0.5.tgz#9b873e4a564bb10fa7a7dbd55312728d422a223d" + integrity sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug== + dependencies: + split2 "^4.1.0" + picocolors@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" @@ -11701,6 +14330,24 @@ postgres-range@^1.1.1: resolved "https://registry.yarnpkg.com/postgres-range/-/postgres-range-1.1.4.tgz#a59c5f9520909bcec5e63e8cf913a92e4c952863" integrity sha512-i/hbxIE9803Alj/6ytL7UHQxRvZkI9O4Sy+J3HGc4F4oo/2eQAjTSNJ0bfxyse3bH0nuVesCk+3IRLaMtG3H6w== +prebuild-install@^7.1.1: + version "7.1.2" + resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.2.tgz#a5fd9986f5a6251fbc47e1e5c65de71e68c0a056" + integrity sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ== + dependencies: + detect-libc "^2.0.0" + expand-template "^2.0.3" + github-from-package "0.0.0" + minimist "^1.2.3" + mkdirp-classic "^0.5.3" + napi-build-utils "^1.0.1" + node-abi "^3.3.0" + pump "^3.0.0" + rc "^1.2.7" + simple-get "^4.0.0" + tar-fs "^2.0.0" + tunnel-agent "^0.6.0" + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -11788,6 +14435,19 @@ progress@^2.0.0: resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== + +promise-retry@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" + integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== + dependencies: + err-code "^2.0.2" + retry "^0.12.0" + proto-list@~1.2.1: version "1.2.4" resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" @@ -11903,12 +14563,22 @@ qs@~6.5.2: resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== +query-string@^7.1.0: + version "7.1.3" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-7.1.3.tgz#a1cf90e994abb113a325804a972d98276fe02328" + integrity sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg== + dependencies: + decode-uri-component "^0.2.2" + filter-obj "^1.1.0" + split-on-first "^1.0.0" + strict-uri-encode "^2.0.0" + querystring@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g== -queue-microtask@^1.2.2: +queue-microtask@^1.2.2, queue-microtask@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== @@ -11928,7 +14598,14 @@ race-signal@^1.0.2: resolved "https://registry.yarnpkg.com/race-signal/-/race-signal-1.0.2.tgz#e42379fba0cec4ee8dab7c9bbbd4aa6e0d14c25f" integrity sha512-o3xNv0iTcIDQCXFlF6fPAMEBRjFxssgGoRqLbg06m+AdzEXXLUmoNOoUHTVz2NoBI8hHwKFKoC6IqyNtWr2bww== -randombytes@^2.1.0: +randombytes@2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.5.tgz#dc009a246b8d09a177b4b7a0ae77bc570f4b1b79" + integrity sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg== + dependencies: + safe-buffer "^5.1.0" + +randombytes@^2.0.1, randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== @@ -11950,6 +14627,16 @@ raw-body@2.5.2: iconv-lite "0.4.24" unpipe "1.0.0" +rc@^1.2.7: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + rdf-canonize@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/rdf-canonize/-/rdf-canonize-3.4.0.tgz#87f88342b173cc371d812a07de350f0c1aa9f058" @@ -12157,6 +14844,13 @@ rechoir@^0.6.2: dependencies: resolve "^1.1.6" +rechoir@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22" + integrity sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ== + dependencies: + resolve "^1.20.0" + redent@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" @@ -12182,6 +14876,11 @@ reflect-metadata@^0.1.13: resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.14.tgz#24cf721fe60677146bb77eeb0e1f9dece3d65859" integrity sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A== +regenerator-runtime@^0.13.2: + version "0.13.11" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== + regenerator-runtime@^0.14.0: version "0.14.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" @@ -12298,7 +14997,7 @@ resolve-global@1.0.0, resolve-global@^1.0.0: dependencies: global-dirs "^0.1.1" -resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.22.1, resolve@^1.22.2, resolve@^1.22.4: +resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.20.0, resolve@^1.22.1, resolve@^1.22.2, resolve@^1.22.4: version "1.22.8" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== @@ -12320,6 +15019,11 @@ retimer@^3.0.0: resolved "https://registry.yarnpkg.com/retimer/-/retimer-3.0.0.tgz#98b751b1feaf1af13eb0228f8ea68b8f9da530df" integrity sha512-WKE0j11Pa0ZJI5YIk0nflGI7SQsfl2ljihVy7ogh7DeQSeYAUi0ubZ/yEueGtDfUPk6GH5LRw1hBdLq4IwUBWA== +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== + reusify@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" @@ -12344,11 +15048,38 @@ rimraf@^5.0.1: dependencies: glob "^10.3.7" +ripemd160-min@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/ripemd160-min/-/ripemd160-min-0.0.6.tgz#a904b77658114474d02503e819dcc55853b67e62" + integrity sha512-+GcJgQivhs6S9qvLogusiTcS9kQUfgR75whKuy5jIhuiOfQuJ8fjqxV6EGD5duH1Y/FawFUMtMhyeq3Fbnib8A== + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +rpc-utils@^0.6.1, rpc-utils@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rpc-utils/-/rpc-utils-0.6.2.tgz#3cab779f93048eda69ff198c58b1a2c2e35e3fa6" + integrity sha512-kzk1OflbBckfDBAo8JwsmtQSHzj+6hxRt5G+u8A8ZSmunBw1nhWvRkSq8j1+EvWBqBRLy1aiGLUW5644CZqQtA== + dependencies: + nanoid "^3.3.1" + run-async@^2.4.0: version "2.4.1" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== +run-parallel-limit@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz#be80e936f5768623a38a963262d6bef8ff11e7ba" + integrity sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw== + dependencies: + queue-microtask "^1.2.2" + run-parallel@^1.1.6, run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" @@ -12373,7 +15104,7 @@ safe-array-concat@^1.1.0: has-symbols "^1.0.3" isarray "^2.0.5" -safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -12438,6 +15169,29 @@ scrypt-js@3.0.1: resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== +scryptsy@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/scryptsy/-/scryptsy-2.1.0.tgz#8d1e8d0c025b58fdd25b6fa9a0dc905ee8faa790" + integrity sha512-1CdSqHQowJBnMAFyPEBRfqag/YP9OF394FV+4YREIJX4ljD7OxvQRDayyoyyCk+senRjSkP6VnUNQmVQqB6g7w== + +secp256k1@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.1.tgz#b9570ca26ace9e74c3171512bba253da9c0b6d60" + integrity sha512-iGRjbGAKfXMqhtdkkuNxsgJQfJO8Oo78Rm7DAvsG3XKngq+nJIOGqrCSXcQqIVsmCj0wFanE5uTKFxV3T9j2wg== + dependencies: + elliptic "^6.5.2" + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + +secp256k1@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.3.tgz#c4559ecd1b8d3c1827ed2d1b94190d69ce267303" + integrity sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA== + dependencies: + elliptic "^6.5.4" + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + secure-json-parse@^2.4.0: version "2.7.0" resolved "https://registry.yarnpkg.com/secure-json-parse/-/secure-json-parse-2.7.0.tgz#5a5f9cd6ae47df23dba3151edd06855d47e09862" @@ -12503,6 +15257,13 @@ send@0.18.0: range-parser "~1.2.1" statuses "2.0.1" +serialize-error@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-8.1.0.tgz#3a069970c712f78634942ddd50fbbc0eaebe2f67" + integrity sha512-3NnuWfM6vBYoy5gZFvHiYsVbafvI9vZv/+jlIigFn4oP4zjNPK3LhcY0xSCgeb1a5L8jO71Mit9LlNoi2UfDDQ== + dependencies: + type-fest "^0.20.2" + serialize-javascript@6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" @@ -12564,6 +15325,14 @@ setprototypeof@1.2.0: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -12615,7 +15384,7 @@ side-channel@^1.0.4, side-channel@^1.0.6: get-intrinsic "^1.2.4" object-inspect "^1.13.1" -signal-exit@^3.0.2, signal-exit@^3.0.3: +signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== @@ -12625,6 +15394,20 @@ signal-exit@^4.0.1: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== +simple-concat@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" + integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== + +simple-get@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543" + integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA== + dependencies: + decompress-response "^6.0.0" + once "^1.3.1" + simple-concat "^1.0.0" + simple-update-notifier@^1.0.7: version "1.1.0" resolved "https://registry.yarnpkg.com/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz#67694c121de354af592b347cdba798463ed49c82" @@ -12664,6 +15447,11 @@ slice-ansi@^4.0.0: astral-regex "^2.0.0" is-fullwidth-code-point "^3.0.0" +smart-buffer@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== + socket.io-adapter@~2.5.2: version "2.5.4" resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.5.4.tgz#4fdb1358667f6d68f25343353bd99bd11ee41006" @@ -12703,6 +15491,23 @@ socket.io@4.7.3: socket.io-adapter "~2.5.2" socket.io-parser "~4.2.4" +socks-proxy-agent@^6.0.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz#2687a31f9d7185e38d530bef1944fe1f1496d6ce" + integrity sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ== + dependencies: + agent-base "^6.0.2" + debug "^4.3.3" + socks "^2.6.2" + +socks@^2.6.2: + version "2.8.3" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.8.3.tgz#1ebd0f09c52ba95a09750afe3f3f9f724a800cb5" + integrity sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw== + dependencies: + ip-address "^9.0.5" + smart-buffer "^4.2.0" + sonic-boom@^3.0.0, sonic-boom@^3.7.0: version "3.8.0" resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-3.8.0.tgz#e442c5c23165df897d77c3c14ef3ca40dec66a66" @@ -12781,6 +15586,11 @@ spdx-license-ids@^3.0.0: resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz#887da8aa73218e51a1d917502d79863161a93f9c" integrity sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg== +split-on-first@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" + integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== + split2@^3.0.0: version "3.2.2" resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" @@ -12788,16 +15598,40 @@ split2@^3.0.0: dependencies: readable-stream "^3.0.0" -split2@^4.0.0: +split2@^4.0.0, split2@^4.1.0: version "4.2.0" resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== +split@0.2.x: + version "0.2.10" + resolved "https://registry.yarnpkg.com/split/-/split-0.2.10.tgz#67097c601d697ce1368f418f06cd201cf0521a57" + integrity sha512-e0pKq+UUH2Xq/sXbYpZBZc3BawsfDZ7dgv+JtRTUPNcvF5CMR4Y9cvJqkMY0MoxWzTHvZuz1beg6pNEKlszPiQ== + dependencies: + through "2" + +sprintf-js@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a" + integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== +sqlite3@^5.0.8: + version "5.1.7" + resolved "https://registry.yarnpkg.com/sqlite3/-/sqlite3-5.1.7.tgz#59ca1053c1ab38647396586edad019b1551041b7" + integrity sha512-GGIyOiFaG+TUra3JIfkI/zGP8yZYLPQ0pl1bH+ODjiX57sPhrLU5sQJn1y9bDKZUFYkX1crlrPfSYt0BKKdkog== + dependencies: + bindings "^1.5.0" + node-addon-api "^7.0.0" + prebuild-install "^7.1.1" + tar "^6.1.11" + optionalDependencies: + node-gyp "8.x" + sshpk@^1.7.0: version "1.18.0" resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.18.0.tgz#1663e55cddf4d688b86a46b77f0d5fe363aba028" @@ -12813,6 +15647,13 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" +ssri@^8.0.0, ssri@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" + integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== + dependencies: + minipass "^3.1.1" + stacktrace-parser@0.1.10: version "0.1.10" resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a" @@ -12825,6 +15666,11 @@ statuses@2.0.1: resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== +"statuses@>= 1.5.0 < 2": + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + stream-browserify@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-3.0.0.tgz#22b0a2850cdf6503e73085da1fc7b7d0c2122f2f" @@ -12845,6 +15691,11 @@ streamsearch@^1.1.0: resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== +strict-uri-encode@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" + integrity sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ== + string-argv@0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" @@ -12855,7 +15706,7 @@ string-template@~0.2.1: resolved "https://registry.yarnpkg.com/string-template/-/string-template-0.2.1.tgz#42932e598a352d01fc22ec3367d9d84eec6c9add" integrity sha512-Yptehjogou2xm4UJbxJ4CxgZx12HBfeystp0y3x7s4Dj32ltVVG1Gg8YhKjHZkHicuKpZX/ffilA8505VbUbpw== -"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -12976,6 +15827,11 @@ strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1. resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== + strnum@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.0.5.tgz#5c4e829fe15ad4ff0d20c3db5ac97b73c9b072db" @@ -13115,7 +15971,17 @@ tapable@^2.1.1, tapable@^2.2.0: resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== -tar-stream@^2.2.0: +tar-fs@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" + integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== + dependencies: + chownr "^1.1.1" + mkdirp-classic "^0.5.2" + pump "^3.0.0" + tar-stream "^2.1.4" + +tar-stream@^2.1.4, tar-stream@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== @@ -13126,6 +15992,18 @@ tar-stream@^2.2.0: inherits "^2.0.3" readable-stream "^3.1.1" +tar@^6.0.2, tar@^6.1.11, tar@^6.1.2: + version "6.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" + integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^5.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + tar@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.0.tgz#b14ce49a79cb1cd23bc9b016302dea5474493f73" @@ -13138,6 +16016,11 @@ tar@^6.2.0: mkdirp "^1.0.3" yallist "^4.0.0" +tarn@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/tarn/-/tarn-3.0.2.tgz#73b6140fbb881b71559c4f8bfde3d9a4b3d27693" + integrity sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ== + terser-webpack-plugin@^5.3.10: version "5.3.10" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz#904f4c9193c6fd2a03f693a2150c62a92f40d199" @@ -13168,6 +16051,11 @@ test-exclude@^6.0.0: glob "^7.1.4" minimatch "^3.0.4" +text-encoding-utf-8@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz#585b62197b0ae437e3c7b5d0af27ac1021e10d13" + integrity sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg== + text-extensions@^1.0.0: version "1.9.0" resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" @@ -13223,11 +16111,16 @@ through2@^4.0.0: dependencies: readable-stream "3" -"through@>=2.2.7 <3", through@^2.3.6, through@^2.3.8: +through@2, through@2.3.x, "through@>=2.2.7 <3", through@^2.3.6, through@^2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== +tildify@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/tildify/-/tildify-2.0.0.tgz#f205f3674d677ce698b7067a99e949ce03b4754a" + integrity sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw== + timeout-abort-controller@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/timeout-abort-controller/-/timeout-abort-controller-3.0.0.tgz#dd57ffca041652c03769904f8d95afd93fb95595" @@ -13235,6 +16128,17 @@ timeout-abort-controller@^3.0.0: dependencies: retimer "^3.0.0" +tiny-secp256k1@^1.1.3: + version "1.1.6" + resolved "https://registry.yarnpkg.com/tiny-secp256k1/-/tiny-secp256k1-1.1.6.tgz#7e224d2bee8ab8283f284e40e6b4acb74ffe047c" + integrity sha512-FmqJZGduTyvsr2cF3375fqGHUovSwDi/QytexX1Se4BPuPZpTE5Ftp5fg+EFSuEf3lhZqgCRjEG3ydUQ/aNiwA== + dependencies: + bindings "^1.3.0" + bn.js "^4.11.8" + create-hmac "^1.1.7" + elliptic "^6.4.0" + nan "^2.13.2" + tiny-typed-emitter@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/tiny-typed-emitter/-/tiny-typed-emitter-2.1.0.tgz#b3b027fdd389ff81a152c8e847ee2f5be9fad7b5" @@ -13247,6 +16151,11 @@ tmp@^0.0.33: dependencies: os-tmpdir "~1.0.2" +to-data-view@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/to-data-view/-/to-data-view-1.1.0.tgz#08d6492b0b8deb9b29bdf1f61c23eadfa8994d00" + integrity sha512-1eAdufMg6mwgmlojAx3QeMnzB/BTVp7Tbndi3U7ftcT2zCZadjxkkmLmd97zmaxWi+sgGcgWrokmpEoy0Dn0vQ== + to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" @@ -13374,6 +16283,11 @@ tunnel-agent@^0.6.0: dependencies: safe-buffer "^5.0.1" +tweetnacl@1.x.x, tweetnacl@^1.0.1, tweetnacl@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" + integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== + tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" @@ -13485,11 +16399,21 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" +typedarray-to-buffer@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-4.0.0.tgz#cdd2933c61dd3f5f02eda5d012d441f95bfeb50a" + integrity sha512-6dOYeZfS3O9RtRD1caom0sMxgK59b27+IwoNy8RDPsmslSGOyU+mpTamlaIW7aNKi90ZQZ9DFaZL3YRoiSCULQ== + typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== +typeforce@^1.11.5: + version "1.18.0" + resolved "https://registry.yarnpkg.com/typeforce/-/typeforce-1.18.0.tgz#d7416a2c5845e085034d70fcc5b6cc4a90edbfdc" + integrity sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g== + typescript@5.1.6: version "5.1.6" resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.1.6.tgz#02f8ac202b6dad2c0dd5e0913745b47a37998274" @@ -13505,6 +16429,11 @@ typescript@^5.0.0: resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.2.tgz#0ae9cebcfae970718474fe0da2c090cad6577372" integrity sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ== +u3@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/u3/-/u3-0.1.1.tgz#5f52044f42ee76cd8de33148829e14528494b73b" + integrity sha512-+J5D5ir763y+Am/QY6hXNRlwljIeRMZMGs0cT6qqZVVzzT3X3nFPXVyPOFRMOR4kupB0T8JnCdpWdp6Q/iXn3w== + uint8-varint@^2.0.1, uint8-varint@^2.0.2: version "2.0.4" resolved "https://registry.yarnpkg.com/uint8-varint/-/uint8-varint-2.0.4.tgz#85be52b3849eb30f2c3640a2df8a14364180affb" @@ -13520,7 +16449,14 @@ uint8arraylist@^2.0.0, uint8arraylist@^2.1.2, uint8arraylist@^2.4.3, uint8arrayl dependencies: uint8arrays "^5.0.1" -uint8arrays@^4.0.2, uint8arrays@^4.0.3: +uint8arrays@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-3.1.1.tgz#2d8762acce159ccd9936057572dade9459f65ae0" + integrity sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg== + dependencies: + multiformats "^9.4.2" + +uint8arrays@^4.0.2, uint8arrays@^4.0.3, uint8arrays@^4.0.6: version "4.0.10" resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-4.0.10.tgz#3ec5cde3348903c140e87532fc53f46b8f2e921f" integrity sha512-AnJNUGGDJAgFw/eWu/Xb9zrVKEGlwJJCaeInlf3BkecE/zcTobk5YXYIPNQJO1q5Hh1QZrQQHf0JvcHqz2hqoA== @@ -13561,6 +16497,20 @@ undici@^5.12.0, undici@^5.21.2: dependencies: "@fastify/busboy" "^2.0.0" +unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== + dependencies: + imurmurhash "^0.1.4" + universalify@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" @@ -13584,7 +16534,7 @@ update-browserslist-db@^1.0.13: escalade "^3.1.1" picocolors "^1.0.0" -uri-js@^4.2.2: +uri-js@^4.2.2, uri-js@^4.4.1: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== @@ -13683,11 +16633,28 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" +value-or-promise@^1.0.11, value-or-promise@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/value-or-promise/-/value-or-promise-1.0.12.tgz#0e5abfeec70148c78460a849f6b003ea7986f15c" + integrity sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q== + varint@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/varint/-/varint-6.0.0.tgz#9881eb0ce8feaea6512439d19ddf84bf551661d0" integrity sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg== +varintes@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/varintes/-/varintes-2.0.5.tgz#e5e2e53b10300ca4d5c0bacae2a826f7b3b2cab5" + integrity sha512-iF3jlHLko9NrYjaUZvT3VwypP3V20KNNhT1tzqblyIyrVjNiW7HseGOhuP+apgZBp9X/8+5pxa7kNikhJeZlIw== + +varuint-bitcoin@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/varuint-bitcoin/-/varuint-bitcoin-1.1.2.tgz#e76c138249d06138b480d4c5b40ef53693e24e92" + integrity sha512-4EVb+w4rx+YfVM32HQX42AbbT7/1f5zwAYhIujKXKk8NQK+JfRVl3pqT3hjNn/L+RstigmGGKVwHA/P0wgITZw== + dependencies: + safe-buffer "^5.1.1" + vary@^1, vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" @@ -13702,6 +16669,20 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" +viem@^1.21.4: + version "1.21.4" + resolved "https://registry.yarnpkg.com/viem/-/viem-1.21.4.tgz#883760e9222540a5a7e0339809202b45fe6a842d" + integrity sha512-BNVYdSaUjeS2zKQgPs+49e5JKocfo60Ib2yiXOWBT6LuVxY1I/6fFX3waEtpXvL1Xn4qu+BVitVtMh9lyThyhQ== + dependencies: + "@adraffy/ens-normalize" "1.10.0" + "@noble/curves" "1.2.0" + "@noble/hashes" "1.3.2" + "@scure/bip32" "1.3.2" + "@scure/bip39" "1.2.1" + abitype "0.9.8" + isows "1.0.3" + ws "8.13.0" + watchpack@^2.4.0: version "2.4.1" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.1.tgz#29308f2cac150fa8e4c92f90e0ec954a9fed7fff" @@ -13804,13 +16785,27 @@ which@^1.2.14: dependencies: isexe "^2.0.0" -which@^2.0.1: +which@^2.0.1, which@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" +wide-align@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" + integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== + dependencies: + string-width "^1.0.2 || 2 || 3 || 4" + +wif@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/wif/-/wif-2.0.6.tgz#08d3f52056c66679299726fade0d432ae74b4704" + integrity sha512-HIanZn1zmduSF+BQhkE+YXIbEiH0xPr1012QbFEGB0xsKqJii0/SqJjyn8dFv6y36kOznMgMB+LGcbZTJ1xACQ== + dependencies: + bs58check "<3.0.0" + word-wrap@^1.0.3: version "1.2.5" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" @@ -13868,6 +16863,11 @@ ws@7.4.6: resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== +ws@8.13.0: + version "8.13.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" + integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== + ws@^8.15.0, ws@^8.7.0: version "8.16.0" resolved "https://registry.yarnpkg.com/ws/-/ws-8.16.0.tgz#d1cd774f36fbc07165066a60e40323eab6446fd4" @@ -13911,6 +16911,13 @@ xtend@^4.0.0, xtend@~4.0.0, xtend@~4.0.1: resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== +xxhashjs@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/xxhashjs/-/xxhashjs-0.2.2.tgz#8a6251567621a1c46a5ae204da0249c7f8caa9d8" + integrity sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw== + dependencies: + cuint "^0.2.2" + y18n@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" From dafc12f383ba948ed3222e725092b1deb48a7a36 Mon Sep 17 00:00:00 2001 From: m0ar Date: Tue, 18 Jun 2024 12:15:42 +0200 Subject: [PATCH 30/34] server: separate optimism RPC config to allow dynamic publish target selection --- .env.example | 3 -- .../src/controllers/nodes/createDpid.ts | 46 +++++++++++-------- nodes-lib/test/root.spec.ts | 2 +- 3 files changed, 29 insertions(+), 22 deletions(-) diff --git a/.env.example b/.env.example index 3bddd15af..89866b5d9 100755 --- a/.env.example +++ b/.env.example @@ -115,9 +115,6 @@ GOOGLE_DEV_API_KEY= # Unnecessary for now, not doing serverside 2step ## Configure RPC nodes (open an issue/ping us to access DeSci Labs' nodes) ETHEREUM_RPC_URL=http://host.docker.internal:8545 -# Use this for Goerli testnet -# ETHEREUM_RPC_URL=https://eth-goerli.g.alchemy.com/v2/demo - # Use this for Sepolia testnet # ETHEREUM_RPC_URL=https://eth-sepolia.g.alchemy.com/v2/demo diff --git a/desci-server/src/controllers/nodes/createDpid.ts b/desci-server/src/controllers/nodes/createDpid.ts index 8dd498d76..cc6e4e1ee 100644 --- a/desci-server/src/controllers/nodes/createDpid.ts +++ b/desci-server/src/controllers/nodes/createDpid.ts @@ -17,20 +17,43 @@ export type DpidErrorResponse = { error: string; }; -const CERAMIC_API = process.env.CERAMIC_API; +const CERAMIC_API_URLS = { + local: "http://localhost:7007", + dev: "https://ceramic-dev.desci.com", + prod: "https://ceramic-prod.desci.com", +} as const; + +const OPTIMISM_RPC_URLS = { + local: "http://localhost:8545", + dev: "https://reverse-proxy-dev.desci.com/rpc_opt_sepolia", + prod: "https://reverse-proxy-prod.desci.com/rpc_opt_mainnet", +} as const; /** Not secret: pre-seeded ganache account for local dev */ const GANACHE_PKEY = "ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80"; -let aliasRegistryAddress: string; const apiServerUrl = process.env.SERVER_URL; +/** Manually set in this module since the envvar needs to support OG ethereum during migration */ +let optimismRpcUrl: string; +let aliasRegistryAddress: string; +let ceramicApiUrl: string; + if (apiServerUrl.includes("localhost")) { aliasRegistryAddress = contracts.localDpidAliasInfo.proxies.at(0).address; + ceramicApiUrl = CERAMIC_API_URLS.local; + optimismRpcUrl = OPTIMISM_RPC_URLS.local; } else if (apiServerUrl.includes("dev") || apiServerUrl.includes("staging")) { aliasRegistryAddress = contracts.devDpidAliasInfo.proxies.at(0).address; + ceramicApiUrl = CERAMIC_API_URLS.dev; + optimismRpcUrl = OPTIMISM_RPC_URLS.dev; } else if (process.env.NODE_ENV === "production") { aliasRegistryAddress = contracts.prodDpidAliasInfo.proxies.at(0).address; + ceramicApiUrl = CERAMIC_API_URLS.prod; + optimismRpcUrl = OPTIMISM_RPC_URLS.prod; +} else { + console.error("Cannot derive contract address due to ambiguous environment"); + throw new Error("Ambiguous environment"); }; export const createDpid = async (req: RequestWithNode, res: Response) => { @@ -55,11 +78,6 @@ export const createDpid = async (req: RequestWithNode, res: Response { - if (!CERAMIC_API) { - throw new Error("CERAMIC_API not configured"); - }; - - const client = newCeramicClient(CERAMIC_API); + const client = newCeramicClient(ceramicApiUrl); const [_owner, legacyVersions] = await registry.legacyLookup(dpid); const streamEvents = await resolveHistory(client, ceramicStream) diff --git a/nodes-lib/test/root.spec.ts b/nodes-lib/test/root.spec.ts index 8d43cdc13..e68baf8e9 100644 --- a/nodes-lib/test/root.spec.ts +++ b/nodes-lib/test/root.spec.ts @@ -363,7 +363,7 @@ describe("nodes-lib", () => { const pubResult = await publishDraftNode(uuid, testSigner, did); // Allow graph node to index - await sleep(2_500); + await sleep(5_000); // make sure codex history is of equal length const dpidHistory = await getDpidHistory(uuid); From 7798198fad3e0d0c023ec045cc4abb07af043e27 Mon Sep 17 00:00:00 2001 From: m0ar Date: Tue, 18 Jun 2024 14:47:40 +0200 Subject: [PATCH 31/34] server: fix tests & dpid upgrade with history validation --- .../src/controllers/nodes/createDpid.ts | 38 ++++++++++++------- nodes-lib/src/codex.ts | 15 +++++++- nodes-lib/test/root.spec.ts | 37 +++++++++++++++--- 3 files changed, 71 insertions(+), 19 deletions(-) diff --git a/desci-server/src/controllers/nodes/createDpid.ts b/desci-server/src/controllers/nodes/createDpid.ts index cc6e4e1ee..6eb388f94 100644 --- a/desci-server/src/controllers/nodes/createDpid.ts +++ b/desci-server/src/controllers/nodes/createDpid.ts @@ -18,13 +18,13 @@ export type DpidErrorResponse = { }; const CERAMIC_API_URLS = { - local: "http://localhost:7007", + local: "http://host.docker.internal:7007", dev: "https://ceramic-dev.desci.com", prod: "https://ceramic-prod.desci.com", } as const; const OPTIMISM_RPC_URLS = { - local: "http://localhost:8545", + local: "http://host.docker.internal:8545", dev: "https://reverse-proxy-dev.desci.com/rpc_opt_sepolia", prod: "https://reverse-proxy-prod.desci.com/rpc_opt_mainnet", } as const; @@ -56,6 +56,8 @@ if (apiServerUrl.includes("localhost")) { throw new Error("Ambiguous environment"); }; +console.log("Using new publish configuration:", { aliasRegistryAddress, optimismRpcUrl, ceramicApiUrl }); + export const createDpid = async (req: RequestWithNode, res: Response) => { const owner = req.user; const node = req.node; @@ -148,6 +150,7 @@ export const upgradeDpid = async ( const logger = parentLogger.child({ module: "NODE::upgradeDpid", ceramicStream, + dpid, }); const provider = new ethers.providers.JsonRpcProvider(optimismRpcUrl); @@ -167,7 +170,10 @@ export const upgradeDpid = async ( wallet, ); - if (!compareHistory(dpid, ceramicStream, dpidAliasRegistry, logger)) { + const historyValid = await validateHistory( + dpid, ceramicStream, dpidAliasRegistry, logger + ); + if (!historyValid) { logger.warn( { dpid, ceramicStream }, "version histories disagree; refusing to upgrade dPID", @@ -191,41 +197,47 @@ export const upgradeDpid = async ( * This should be checked before upgrading a dPID, to make sure * the new stream accurately represents the publish history. */ -const compareHistory = async ( +const validateHistory = async ( dpid: number, ceramicStream: string, registry: DpidAliasRegistry, logger: Logger ) => { const client = newCeramicClient(ceramicApiUrl); - const [_owner, legacyVersions] = await registry.legacyLookup(dpid); + const legacyEntry = await registry.legacyLookup(dpid); const streamEvents = await resolveHistory(client, ceramicStream) const streamStates = await Promise.all(streamEvents .map(s => s.commit) - .map(c => client.loadStream(c)) + .map(c => client.loadStream(c).then(state => state.content)) ); + const [_owner, legacyVersions ] = legacyEntry; + // Stream could have one or more additional entries - if (legacyVersions.length < streamStates.length) { + if (legacyVersions.length > streamStates.length) { logger.error( - "Stream history shorter than legacy history", - { legacyVersions, streamStates} + { legacyVersions, streamStates }, + "Stream has shorter history than legacy dPID", ); return false; }; - for (const [i, streamState] of streamStates.entries()) { + for (const [i, legacyVersion] of legacyVersions.entries()) { // Cant compare timestamp because anchor time WILL differ - const expectedCid = legacyVersions[i][0]; - if (expectedCid !== streamState.content.manifest) { + const expectedCid = legacyVersion[0]; + if (expectedCid !== streamStates[i].manifest) { logger.error( + { legacyVersions, streamStates}, "Manifest CID mismatch between legacy and stream history", - { legacyVersions, streamStates} ); return false; }; }; + logger.info( + { dpid, ceramicStream }, + "Legacy and stream history check passed", + ); return true; } diff --git a/nodes-lib/src/codex.ts b/nodes-lib/src/codex.ts index 8e7486414..848f589ba 100644 --- a/nodes-lib/src/codex.ts +++ b/nodes-lib/src/codex.ts @@ -15,6 +15,7 @@ import { getNodesLibInternalConfig } from "./config/index.js"; import { Signer } from "ethers"; import { authorizedSessionDidFromSigner } from "./util/signing.js"; import { type DID } from"dids"; +import { CID } from "multiformats"; const LOG_CTX = "[nodes-lib::codex]"; /** @@ -126,7 +127,19 @@ const backfillNewStream = async ( const title = "[BACKFILLED]"; // version.title is the title of the event, e.g. "Published" const license = "[BACKFILLED]"; - const manifest = convert0xHexToCid(nextVersion.cid); + + // When pulling history from new contract legacy entries, the CID + // is cleartext. Otherwise, it needs to be decoded from hex. + let manifest: string; + try { + // If this works, it was a plaintext CID + manifest = CID.parse(nextVersion.cid).toString(); + } catch (e) { + // Otherwise, fall back to hex decoding old style representation + console.log(LOG_CTX, `got non-plaintext CID for backfill: ${nextVersion.cid}`); + manifest = convert0xHexToCid(nextVersion.cid); + }; + const op = streamID === "" ? createResearchObject(compose, { title, manifest, license }) diff --git a/nodes-lib/test/root.spec.ts b/nodes-lib/test/root.spec.ts index e68baf8e9..38ac4e3ca 100644 --- a/nodes-lib/test/root.spec.ts +++ b/nodes-lib/test/root.spec.ts @@ -14,11 +14,10 @@ import { updateDescription, updateLicense, updateResearchFields, addContributor, removeContributor, addExternalCid, updateCoverImage, publishNode, - getPublishHistory, } from "../src/api.js"; import axios from "axios"; import { getCodexHistory, getCurrentState, getRawState } from "../src/codex.js"; -import { dpidPublish, findDpid, lookupLegacyDpid } from "../src/chain.js"; +import { dpidPublish, findDpid } from "../src/chain.js"; import { sleep } from "./util.js"; import { convert0xHexToCid } from "../src/util/converting.js"; import { @@ -35,6 +34,8 @@ import { import { authorizedSessionDidFromSigner, signerFromPkey } from "../src/util/signing.js"; import { NODESLIB_CONFIGS, getNodesLibInternalConfig, setApiKey, setNodesLibConfig } from "../src/index.js"; import { getResources } from "@desci-labs/desci-codex-lib"; +import { contracts, typechain as tc } from "@desci-labs/desci-contracts"; +import { Wallet, providers } from "ethers"; // Pre-funded ganache account const TEST_PKEY = "ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80"; @@ -482,13 +483,39 @@ describe("nodes-lib", () => { uuid = node.uuid; // make a dpid-only publish - const { prepubResult: { updatedManifest }} = await dpidPublish(uuid, false, testSigner); - - legacyDpid = parseInt(updatedManifest.dpid!.id); + const { prepubResult: { updatedManifest, updatedManifestCid }} = await dpidPublish( + uuid, false, testSigner + ); // Allow graph node to index await sleep(2_500); + legacyDpid = parseInt(updatedManifest.dpid!.id); + + // Import as legacy entry (i.e., fake migration step) + // Publish uses this to validate history before migrating dPID + const wallet = new Wallet( + TEST_PKEY, + new providers.JsonRpcProvider(getNodesLibInternalConfig().chainConfig.rpcUrl), + ); + const aliasRegistry = tc.DpidAliasRegistry__factory.connect( + contracts.localDpidAliasInfo.proxies.at(0)!.address, + wallet, + ); + const tx = await aliasRegistry.importLegacyDpid( + legacyDpid, + { + owner: await testSigner.getAddress(), + versions: [ + { + cid: updatedManifestCid, + time: 1337 // Import fn can't validate this anyway + }, + ], + }, + ); + await tx.wait(); + // make a regular publish pubResult = await publishNode(uuid, did); await sleep(1000); From 0b7b18a931b65ff52ff8d5182a7d22f3aa6b5900 Mon Sep 17 00:00:00 2001 From: m0ar Date: Tue, 18 Jun 2024 14:58:05 +0200 Subject: [PATCH 32/34] server: add --ignore-engines to yarn cmds in workflows --- .github/workflows/build-and-test.yaml | 4 ++-- .github/workflows/build-server.yaml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-and-test.yaml b/.github/workflows/build-and-test.yaml index ec9d7259a..aae21bbc4 100644 --- a/.github/workflows/build-and-test.yaml +++ b/.github/workflows/build-and-test.yaml @@ -54,7 +54,7 @@ jobs: docker info - name: Install dependencies - run: cd desci-models && npm i -g yarn && yarn && yarn build && cd ../desci-server && yarn && cd ../desci-repo && yarn + run: cd desci-models && npm i -g yarn && yarn && yarn build && cd ../desci-server && yarn && cd ../desci-repo && yarn --ignore-engines - name: Stub contract run: | @@ -63,7 +63,7 @@ jobs: - name: Run tests run: | - cd desci-server && export DOCKER_BUILDKIT=1 && yarn && yarn test + cd desci-server && export DOCKER_BUILDKIT=1 && yarn --ignore-engines && yarn test if [ $? -ne 0 ]; then exit 1 fi diff --git a/.github/workflows/build-server.yaml b/.github/workflows/build-server.yaml index 037c538a6..b20942c05 100644 --- a/.github/workflows/build-server.yaml +++ b/.github/workflows/build-server.yaml @@ -56,7 +56,7 @@ jobs: docker info - name: Install dependencies - run: cd desci-models && npm i -g yarn && yarn && yarn build && cd ../desci-server && yarn + run: cd desci-models && npm i -g yarn && yarn && yarn build && cd ../desci-server && yarn --ignore-engines - name: Stub contract run: | @@ -65,7 +65,7 @@ jobs: - name: Run tests run: | - cd desci-server && export DOCKER_BUILDKIT=1 && yarn && yarn test + cd desci-server && export DOCKER_BUILDKIT=1 && yarn --ignore-engines && yarn test echo "exit code $?" if [ $? -ne 0 ]; then exit 1 From 19e1e3cd4a841648dd7c7ca4de3588032dde2337 Mon Sep 17 00:00:00 2001 From: m0ar Date: Tue, 18 Jun 2024 15:01:47 +0200 Subject: [PATCH 33/34] server: fix the fix xzibit --- .github/workflows/build-and-test.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-and-test.yaml b/.github/workflows/build-and-test.yaml index aae21bbc4..956ee3061 100644 --- a/.github/workflows/build-and-test.yaml +++ b/.github/workflows/build-and-test.yaml @@ -54,7 +54,7 @@ jobs: docker info - name: Install dependencies - run: cd desci-models && npm i -g yarn && yarn && yarn build && cd ../desci-server && yarn && cd ../desci-repo && yarn --ignore-engines + run: cd desci-models && npm i -g yarn && yarn && yarn build && cd ../desci-server && yarn --ignore-engines && cd ../desci-repo && yarn - name: Stub contract run: | From 4f1829b2f9bae60236febb9a1b0e5f936caeb4d5 Mon Sep 17 00:00:00 2001 From: m0ar Date: Tue, 18 Jun 2024 15:23:10 +0200 Subject: [PATCH 34/34] server: add contract owner pkey to vault config --- desci-server/kubernetes/deployment_dev.yaml | 1 + desci-server/kubernetes/deployment_prod.yaml | 1 + desci-server/kubernetes/deployment_staging.yaml | 1 + 3 files changed, 3 insertions(+) diff --git a/desci-server/kubernetes/deployment_dev.yaml b/desci-server/kubernetes/deployment_dev.yaml index a9dec132e..b1fae99dd 100644 --- a/desci-server/kubernetes/deployment_dev.yaml +++ b/desci-server/kubernetes/deployment_dev.yaml @@ -63,6 +63,7 @@ spec: export AWS_S3_BUCKET_REGION={{ .Data.AWS_S3_BUCKET_REGION }} export THEGRAPH_API_URL={{ .Data.THEGRAPH_API_URL }} export HOT_WALLET_KEY={{ .Data.HOT_WALLET_KEY }} + export REGISTRY_OWNER_PKEY={{ .Data.REGISTRY_OWNER_PKEY }} export CSO_CLASSIFIER_API={{ .Data.CSO_CLASSIFIER_API }} export VSCODE_ACCESS_TOKEN={{ .Data.VSCODE_ACCESS_TOKEN }} export NODES_MEDIA_SERVER_URL={{ .Data.NODES_MEDIA_SERVER_URL }} diff --git a/desci-server/kubernetes/deployment_prod.yaml b/desci-server/kubernetes/deployment_prod.yaml index 433c06e99..855eabbe0 100755 --- a/desci-server/kubernetes/deployment_prod.yaml +++ b/desci-server/kubernetes/deployment_prod.yaml @@ -63,6 +63,7 @@ spec: export AWS_S3_BUCKET_REGION={{ .Data.AWS_S3_BUCKET_REGION }} export THEGRAPH_API_URL={{ .Data.THEGRAPH_API_URL }} export HOT_WALLET_KEY={{ .Data.HOT_WALLET_KEY }} + export REGISTRY_OWNER_PKEY={{ .Data.REGISTRY_OWNER_PKEY }} export CSO_CLASSIFIER_API={{ .Data.CSO_CLASSIFIER_API }} export VSCODE_ACCESS_TOKEN={{ .Data.VSCODE_ACCESS_TOKEN }} export NODES_MEDIA_SERVER_URL={{ .Data.NODES_MEDIA_SERVER_URL }} diff --git a/desci-server/kubernetes/deployment_staging.yaml b/desci-server/kubernetes/deployment_staging.yaml index 37f173ed5..b85b93ede 100644 --- a/desci-server/kubernetes/deployment_staging.yaml +++ b/desci-server/kubernetes/deployment_staging.yaml @@ -75,6 +75,7 @@ spec: export AWS_S3_BUCKET_REGION={{ .Data.AWS_S3_BUCKET_REGION }} export THEGRAPH_API_URL=http://graph-sepolia-prod.desci.com/subgraphs/name/nodes export HOT_WALLET_KEY={{ .Data.HOT_WALLET_KEY }} + export REGISTRY_OWNER_PKEY={{ .Data.REGISTRY_OWNER_PKEY }} export CSO_CLASSIFIER_API={{ .Data.CSO_CLASSIFIER_API }} export VSCODE_ACCESS_TOKEN={{ .Data.VSCODE_ACCESS_TOKEN }} export NODES_MEDIA_SERVER_URL={{ .Data.NODES_MEDIA_SERVER_URL }}