@artblocks/contracts 1.2.0 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -38
- package/artifacts/contracts/AdminACLV1.sol/AdminACLV1.json +2 -2
- package/artifacts/contracts/BytecodeStorageReaders/BytecodeStorageReaderContractV2.sol/BytecodeStorageReaderContractV2.json +201 -0
- package/artifacts/contracts/BytecodeStorageReaders/UniversalBytecodeStorageReader.sol/UniversalBytecodeStorageReader.json +154 -0
- package/artifacts/contracts/BytecodeStorageV2Writer.sol/BytecodeStorageV2Writer.json +87 -0
- package/artifacts/contracts/DependencyRegistryV0.sol/DependencyRegistryV0.json +144 -14
- package/artifacts/contracts/GenArt721CoreV3_Curated.sol/GenArt721CoreV3_Curated.json +2493 -0
- package/artifacts/contracts/OwnedCreate2FactoryV0.sol/OwnedCreate2FactoryV0.json +311 -0
- package/artifacts/contracts/archive/GenArt721CoreV3.sol/GenArt721CoreV3.json +15 -2
- package/artifacts/contracts/archive/GenArt721CoreV3_Explorations.sol/GenArt721CoreV3_Explorations.json +15 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV2.sol/MinterDAExpV2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV3.sol/MinterDAExpV3.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV4.sol/MinterDAExpV4.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol/MinterDAExpSettlementV0.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV1.sol/MinterDAExpSettlementV1.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV2.sol/MinterDAExpSettlementV2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV2.sol/MinterDALinV2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV3.sol/MinterDALinV3.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV4.sol/MinterDALinV4.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV1.sol/MinterHolderV1.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV2.sol/MinterHolderV2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV3.sol/MinterHolderV3.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV4.sol/MinterHolderV4.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV1.sol/MinterMerkleV1.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV2.sol/MinterMerkleV2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV3.sol/MinterMerkleV3.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV4.sol/MinterMerkleV4.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV5.sol/MinterMerkleV5.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterPolyptych/MinterPolyptychV0.sol/IGenArt721CoreContractV3WithRandomizer.json +37 -0
- package/artifacts/contracts/archive/minter-suite/Minters/MinterPolyptych/MinterPolyptychV0.sol/MinterPolyptychV0.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSEA/MinterSEAV0.sol/MinterSEAV0.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV2.sol/MinterSetPriceV2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV3.sol/MinterSetPriceV3.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV4.sol/MinterSetPriceV4.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V2.sol/MinterSetPriceERC20V2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V3.sol/MinterSetPriceERC20V3.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V4.sol/MinterSetPriceERC20V4.json +2 -2
- package/artifacts/contracts/engine/V3/EngineFactoryV0.sol/EngineFactoryV0.json +20 -2
- package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine.sol/GenArt721CoreV3_Engine.json +48 -12
- package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol/GenArt721CoreV3_Engine_Flex.json +76 -40
- package/artifacts/contracts/engine/V3/forks/GenArt721CoreV3_Engine_Flex_PROOF.sol/GenArt721CoreV3_Engine_Flex_PROOF.json +15 -2
- package/artifacts/contracts/engine/V3/forks/PROHIBITION/AdminACLV0_PROHIBITION.sol/AdminACLV0_PROHIBITION.json +2 -2
- package/artifacts/contracts/engine/V3/forks/PROHIBITION/GenArt721CoreV3_Engine_Flex_PROHIBITION.sol/GenArt721CoreV3_Engine_Flex_PROHIBITION.json +15 -2
- package/artifacts/contracts/engine/V3/forks/PROHIBITION/interfaces/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.sol/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.json +37 -0
- package/artifacts/contracts/engine-registry/CoreRegistryV1.sol/CoreRegistryV1.json +2 -2
- package/artifacts/contracts/generator/AddressChunks.sol/AddressChunks.json +10 -0
- package/artifacts/contracts/generator/GenArt721GeneratorV0.sol/GenArt721GeneratorV0.json +333 -0
- package/artifacts/contracts/generator/GenArt721GeneratorV0.sol/ILegacyGenArt721CoreV2_PBAB_Flex.json +47 -0
- package/artifacts/contracts/interfaces/v0.8.x/IBytecodeStorageReader.sol/IBytecodeStorageReader.json +7 -7
- package/artifacts/contracts/interfaces/v0.8.x/IBytecodeStorageReaderV2.sol/IBytecodeStorageReaderV2.json +7 -7
- package/artifacts/contracts/interfaces/v0.8.x/IBytecodeStorageReader_Base.sol/IBytecodeStorageReader_Base.json +30 -0
- package/artifacts/contracts/interfaces/v0.8.x/ICoreRegistryV1.sol/ICoreRegistryV1.json +13 -0
- package/artifacts/contracts/interfaces/v0.8.x/IDependencyRegistryV0.sol/IDependencyRegistryV0.json +170 -0
- package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3.sol/IGenArt721CoreContractV3.json +37 -0
- package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol/IGenArt721CoreContractV3_Base.json +37 -0
- package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine.sol/IGenArt721CoreContractV3_Engine.json +42 -0
- package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex.sol/IGenArt721CoreContractV3_Engine_Flex.json +42 -0
- package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex_PreV3p2.sol/IGenArt721CoreContractV3_Engine_Flex_PreV3p2.json +37 -0
- package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_PreV3p2.sol/IGenArt721CoreContractV3_Engine_PreV3p2.json +37 -0
- package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreProjectScriptV0.sol/IGenArt721CoreProjectScriptV0.json +59 -0
- package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreProjectScriptV1.sol/IGenArt721CoreProjectScriptV1.json +64 -0
- package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreTokenHashProviderV0.sol/IGenArt721CoreTokenHashProviderV0.json +30 -0
- package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreTokenHashProviderV1.sol/IGenArt721CoreTokenHashProviderV1.json +30 -0
- package/artifacts/contracts/interfaces/v0.8.x/IGenArt721GeneratorV0.sol/IGenArt721GeneratorV0.json +63 -0
- package/artifacts/contracts/interfaces/v0.8.x/IOwnedCreate2FactoryV0.sol/IOwnedCreate2FactoryV0.json +74 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISeaDropShimForContract.sol/ISeaDropShimForContract.json +37 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterMinPriceV0.sol/ISharedMinterMinPriceV0.json +37 -0
- package/artifacts/contracts/interfaces/v0.8.x/IUniversalBytecodeStorageReader.sol/IUniversalBytecodeStorageReader.json +56 -0
- package/artifacts/contracts/interfaces/v0.8.x/integration-refs/OpenSea/ERC721SeaDropStructsErrorsAndEvents.sol/ERC721SeaDropStructsErrorsAndEvents.json +43 -0
- package/artifacts/contracts/interfaces/v0.8.x/integration-refs/OpenSea/INonFungibleSeaDropToken.sol/INonFungibleSeaDropToken.json +715 -0
- package/artifacts/contracts/interfaces/v0.8.x/integration-refs/OpenSea/ISeaDrop.sol/ISeaDrop.json +1571 -0
- package/artifacts/contracts/interfaces/v0.8.x/integration-refs/OpenSea/ISeaDropTokenContractMetadata.sol/ISeaDropTokenContractMetadata.json +345 -0
- package/artifacts/contracts/interfaces/v0.8.x/integration-refs/OpenSea/SeaDropErrorsAndEvents.sol/SeaDropErrorsAndEvents.json +717 -0
- package/artifacts/contracts/libs/v0.8.x/AuthLib.sol/AuthLib.json +2 -2
- package/artifacts/contracts/libs/v0.8.x/Bytes32Strings.sol/Bytes32Strings.json +2 -2
- package/artifacts/contracts/libs/v0.8.x/DependencyRegistryStorageLib.sol/DependencyRegistryStorageLib.json +2 -2
- package/artifacts/contracts/libs/v0.8.x/JsonStatic.sol/JsonStatic.json +10 -0
- package/artifacts/contracts/libs/v0.8.x/V3FlexLib.sol/V3FlexLib.json +9 -22
- package/artifacts/contracts/libs/v0.8.x/minter-libs/MaxInvocationsLib.sol/MaxInvocationsLib.json +2 -2
- package/artifacts/contracts/libs/v0.8.x/minter-libs/MinPriceLib.sol/MinPriceLib.json +24 -0
- package/artifacts/contracts/libs/v0.8.x/minter-libs/PolyptychLib.sol/PolyptychLib.json +2 -2
- package/artifacts/contracts/libs/v0.8.x/minter-libs/RAMLib.sol/RAMLib.json +2 -2
- package/artifacts/contracts/libs/v0.8.x/minter-libs/SEALib.sol/SEALib.json +2 -2
- package/artifacts/contracts/libs/v0.8.x/minter-libs/SettlementExpLib.sol/SettlementExpLib.json +2 -2
- package/artifacts/contracts/libs/v0.8.x/minter-libs/SplitFundsLib.sol/SplitFundsLib.json +2 -2
- package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV1.sol/MinterFilterV1.json +2 -2
- package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV2.sol/MinterFilterV2.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterDAExpHolderV5.sol/MinterDAExpHolderV5.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterDAExpSettlementV3.sol/MinterDAExpSettlementV3.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterDAExpV5.sol/MinterDAExpV5.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterDALinHolderV5.sol/MinterDALinHolderV5.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterDALinV5.sol/MinterDALinV5.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterMinPriceMerkleV0.sol/MinterMinPriceMerkleV0.json +664 -0
- package/artifacts/contracts/minter-suite/Minters/MinterMinPriceV0.sol/MinterMinPriceV0.json +387 -0
- package/artifacts/contracts/minter-suite/Minters/MinterRAMV0.sol/MinterRAMV0.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterSEAV1.sol/MinterSEAV1.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V5.sol/MinterSetPriceERC20V5.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceHolderV5.sol/MinterSetPriceHolderV5.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceMerkleV5.sol/MinterSetPriceMerkleV5.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterSetPricePolyptychERC20V5.sol/MinterSetPricePolyptychERC20V5.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterSetPricePolyptychV5.sol/MinterSetPricePolyptychV5.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceV5.sol/MinterSetPriceV5.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/one-off/MinterSetPriceV5_SingleCore.sol/MinterSetPriceV5_SingleCore.json +2 -2
- package/artifacts/contracts/minter-suite/Minters/one-off/SeaDropXArtBlocksShim.sol/SeaDropXArtBlocksShim.json +1206 -0
- package/artifacts/contracts/mock/BytecodeV1LibCallsMock.sol/BytecodeV1LibCallsMock.json +2 -2
- package/artifacts/contracts/mock/BytecodeV2LibCallsMock.sol/BytecodeV2LibCallsMock.json +2 -2
- package/artifacts/contracts/mock/DummySharedMinter.sol/DummySharedMinter.json +2 -2
- package/artifacts/contracts/mock/ERC20MockAltDecimals.sol/ERC20MockAltDecimals.json +318 -0
- package/artifacts/contracts/mock/ForceSendMock.sol/ForceSendMock.json +2 -2
- package/artifacts/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol/GenArt721CoreV3_Engine_IncorrectCoreType.json +2 -2
- package/artifacts/contracts/mock/MockAdminACLV0_PROHIBITION.sol/MockAdminACLV0Events_PROHIBITION.json +2 -2
- package/artifacts/contracts/mock/MockFileStore.sol/MockFileStore.json +35 -0
- package/artifacts/contracts/mock/OriginRegisterMock.sol/OriginRegisterMock.json +2 -2
- package/artifacts/contracts/mock/RandomizerV2_NoAssignMock.sol/RandomizerV2_NoAssignMock.json +2 -2
- package/artifacts/contracts/randomizer/deprecated/PolyptychRandomizerV0.sol/BasicPolyptychRandomizerV0.json +2 -2
- package/artifacts/contracts/randomizer/deprecated/RandomizerV2.sol/BasicRandomizerV2.json +2 -2
- package/artifacts/contracts/randomizer/shared/SharedRandomizerV0.sol/SharedRandomizerV0.json +2 -2
- package/contracts/BytecodeStorageReaders/BytecodeStorageReaderContractV2.sol +103 -0
- package/contracts/BytecodeStorageReaders/UniversalBytecodeStorageReader.sol +70 -0
- package/contracts/BytecodeStorageV2Writer.sol +69 -0
- package/contracts/DependencyRegistryV0.sol +229 -60
- package/contracts/GenArt721CoreV3_Curated.sol +133 -0
- package/contracts/OwnedCreate2FactoryV0.sol +173 -0
- package/contracts/engine/V3/EngineFactoryV0.sol +10 -2
- package/contracts/engine/V3/GenArt721CoreV3_Engine.sol +139 -70
- package/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol +141 -71
- package/contracts/generator/AddressChunks.sol +106 -0
- package/contracts/generator/GenArt721GeneratorV0.sol +1094 -0
- package/contracts/generator/scripty-support/Scripty.sol +5 -0
- package/contracts/interfaces/v0.8.x/IBytecodeStorageReader.sol +34 -36
- package/contracts/interfaces/v0.8.x/IBytecodeStorageReaderV2.sol +5 -3
- package/contracts/interfaces/v0.8.x/IBytecodeStorageReader_Base.sol +20 -0
- package/contracts/interfaces/v0.8.x/ICoreRegistryV1.sol +5 -0
- package/contracts/interfaces/v0.8.x/IDependencyRegistryV0.sol +94 -0
- package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol +13 -2
- package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine.sol +3 -1
- package/contracts/interfaces/v0.8.x/IGenArt721CoreProjectScriptV0.sol +22 -0
- package/contracts/interfaces/v0.8.x/IGenArt721CoreProjectScriptV1.sol +23 -0
- package/contracts/interfaces/v0.8.x/IGenArt721CoreTokenHashProviderV0.sol +11 -0
- package/contracts/interfaces/v0.8.x/IGenArt721CoreTokenHashProviderV1.sol +9 -0
- package/contracts/interfaces/v0.8.x/IGenArt721GeneratorV0.sol +14 -0
- package/contracts/interfaces/v0.8.x/IOwnedCreate2FactoryV0.sol +40 -0
- package/contracts/interfaces/v0.8.x/ISeaDropShimForContract.sol +19 -0
- package/contracts/interfaces/v0.8.x/ISharedMinterMinPriceV0.sol +22 -0
- package/contracts/interfaces/v0.8.x/ISharedMinterRequired.sol +10 -4
- package/contracts/interfaces/v0.8.x/IUniversalBytecodeStorageReader.sol +28 -0
- package/contracts/interfaces/v0.8.x/integration-refs/OpenSea/ERC721SeaDropStructsErrorsAndEvents.sol +58 -0
- package/contracts/interfaces/v0.8.x/integration-refs/OpenSea/INonFungibleSeaDropToken.sol +186 -0
- package/contracts/interfaces/v0.8.x/integration-refs/OpenSea/ISeaDrop.sol +337 -0
- package/contracts/interfaces/v0.8.x/integration-refs/OpenSea/ISeaDropTokenContractMetadata.sol +152 -0
- package/contracts/interfaces/v0.8.x/integration-refs/OpenSea/SeaDropErrorsAndEvents.sol +320 -0
- package/contracts/interfaces/v0.8.x/integration-refs/OpenSea/SeaDropStructs.sol +146 -0
- package/contracts/libs/v0.8.x/Bytes32Strings.sol +20 -0
- package/contracts/libs/v0.8.x/DependencyRegistryStorageLib.sol +11 -3
- package/contracts/libs/v0.8.x/JsonStatic.sol +373 -0
- package/contracts/libs/v0.8.x/V3FlexLib.sol +9 -3
- package/contracts/libs/v0.8.x/minter-libs/MinPriceLib.sol +64 -0
- package/contracts/libs/v0.8.x/minter-libs/SplitFundsLib.sol +107 -0
- package/contracts/minter-suite/Minters/MinterMinPriceMerkleV0.sol +765 -0
- package/contracts/minter-suite/Minters/MinterMinPriceV0.sol +462 -0
- package/contracts/minter-suite/Minters/one-off/SeaDropXArtBlocksShim.sol +869 -0
- package/contracts/mock/ERC20MockAltDecimals.sol +31 -0
- package/contracts/mock/MockFileStore.sol +22 -0
- package/package.json +20 -18
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_format": "hh-sol-artifact-1",
|
|
3
|
+
"contractName": "MockFileStore",
|
|
4
|
+
"sourceName": "contracts/mock/MockFileStore.sol",
|
|
5
|
+
"abi": [
|
|
6
|
+
{
|
|
7
|
+
"inputs": [
|
|
8
|
+
{
|
|
9
|
+
"internalType": "string",
|
|
10
|
+
"name": "name",
|
|
11
|
+
"type": "string"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"internalType": "bytes",
|
|
15
|
+
"name": "",
|
|
16
|
+
"type": "bytes"
|
|
17
|
+
}
|
|
18
|
+
],
|
|
19
|
+
"name": "getContent",
|
|
20
|
+
"outputs": [
|
|
21
|
+
{
|
|
22
|
+
"internalType": "bytes",
|
|
23
|
+
"name": "script",
|
|
24
|
+
"type": "bytes"
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"stateMutability": "pure",
|
|
28
|
+
"type": "function"
|
|
29
|
+
}
|
|
30
|
+
],
|
|
31
|
+
"bytecode": "0x608060405234801561001057600080fd5b50611ac5806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80632647c23d14610030575b600080fd5b61004361003e366004610143565b610059565b604051610050919061026c565b60405180910390f35b60606040518060400160405280601681526020017567756e7a6970536372697074732d302e302e312e6a7360501b81525060405160200161009a919061029f565b6040516020818303038152906040528051906020012084846040516020016100c39291906102bb565b6040516020818303038152906040528051906020012003610101576040518061180001604052806117c481526020016102cc6117c491399050610126565b83836040516020016101149291906102bb565b60405160208183030381529060405290505b9392505050565b634e487b7160e01b600052604160045260246000fd5b60008060006040848603121561015857600080fd5b83356001600160401b038082111561016f57600080fd5b818601915086601f83011261018357600080fd5b81358181111561019257600080fd5b602088818386010111156101a557600080fd5b8084019650819550808801359350828411156101c057600080fd5b838801935088601f8501126101d457600080fd5b83359150828211156101e8576101e861012d565b604051601f8301601f19908116603f011681019084821181831017156102105761021061012d565b816040528381528a8385880101111561022857600080fd5b838387018483013760008385830101528096505050505050509250925092565b60005b8381101561026357818101518382015260200161024b565b50506000910152565b602081526000825180602084015261028b816040850160208701610248565b601f01601f19169190910160400192915050565b600082516102b1818460208701610248565b9190910192915050565b818382376000910190815291905056fe496e567a5a53427a64484a70593351694f79676f4b54302b65335a686369423250565670626e513451584a7959586b7351543156615735304d545a42636e4a686553786650565670626e517a4d6b4679636d46354c484a795057356c647942324b4673774c4441734d4377774c4441734d4377774c4441734d5377784c4445734d5377794c4449734d6977794c444d734d79777a4c444d734e4377304c4451734e4377314c4455734e5377314c4441734d4377774c4442644b537875636a31755a586367646968624d4377774c4441734d4377784c4445734d6977794c444d734d7977304c4451734e5377314c4459734e6977334c4463734f4377344c446b734f5377784d4377784d4377784d5377784d5377784d6977784d6977784d7977784d7977774c4442644b537873636a31755a586367646968624d5459734d5463734d5467734d4377344c4463734f5377324c4445774c4455734d5445734e4377784d69777a4c44457a4c4449734d5451734d5377784e5630704c48527950575a31626d4e30615739754b48497362696c375a6d39794b485a68636942305057356c647942424b444d784b53786c505441375a54777a4d5473724b3255706446746c585431754b7a307850447879573255744d5630375a6d39794b485a68636942685057356c647942664b4852624d7a42644b53786c505445375a54777a4d4473724b3255705a6d39794b485a6863694231505852625a56303764547830573255724d5630374b7974314b5746626456303964533130573256645044773166475537636d563064584a7557335173595631394c475679505852794b484a794c4449704c476c7950575679577a42644c474e7950575679577a46644f326c79577a4934585430794e54677359334a624d6a5534585430794f44743259584967595849396448496f626e49734d436b736348493959584a624d4630735658493959584a624d563073635431755a5863675153677a4d6a63324f436b375a6d39794b4738394d44747650444d794e7a59344f79737262796c74505368764a6a517a4e6a6b774b54342b506a46384b47386d4d6a45344e445570504477784c4730394b47306d4e5449304d6a6770506a342b4d6e776f625359784d7a45774e796b38504449736254306f625359324d5459344d436b2b506a3430664368744a6a4d344e545570504477304c484662623130394b4368744a6a59314d6a67774b54342b506a68384b47306d4d6a55314b5477384f436b2b506a34784f335a68636942744c4738735244316d6457356a64476c76626968794c47347364436c375a6d39794b485a686369426c50584975624756755a33526f4c4745394d4378315057356c647942424b4734704f3245385a5473724b324570636c74685853596d4b79743157334a62595630744d563037646d467949476339626d56334945456f62696b375a6d39794b4745394d447468504734374b7974684b576462595630395a3174684c5446644b33566259533078585477384d54743259584967637a74705a6968304b58747a5057356c647942424b444538504734704f335a6863694270505445314c5734375a6d39794b4745394d447468504755374b7974684b576c6d4b484a62595630705a6d39794b485a686369426d5057453850445238636c74685853786f50573474636c74685853787350576462636c746858533078585373725044786f4c4863396248776f4d54773861436b744d547473504431334f79737262436c7a573346626246302b506a35705854316d66575673633255675a6d39794b484d39626d56334945456f5a536b73595430774f3245385a5473724b324570636c74685853596d4b484e62595630396356746e57334a62595630744d5630724b31302b506a34784e533179573246644b5474795a585231636d346763333073525431755a586367646967794f4467704f325a766369687650544137627a77784e4451374b7974764b555662623130394f44743259584967627a746d6233496f627a30784e445137627a77794e5459374b7974764b555662623130394f54743259584967627a746d6233496f627a30794e545937627a77794f4441374b7974764b555662623130394e7a743259584967627a746d6233496f627a30794f444137627a77794f4467374b7974764b555662623130394f4474325958496762797876636a31755a5863676469677a4d696b375a6d39794b4738394d44747650444d794f79737262796c76636c7476585430314f335a68636942764f335a686369426e636a31454b4555734f5377784b547432595849676558493952436876636977314c4445704c4649395a6e5675593352706232346f63696c375a6d39794b485a686369427550584a624d463073644430784f335138636935735a57356e644767374b7974304b584a626446302b6269596d4b473439636c743058536b37636d563064584a75494735394c4841395a6e5675593352706232346f636978754c48517065335a686369426c505734764f4877774f334a6c64485679626968795732566466484a625a537378585477384f436b2b506968754a6a63704a6e52394c4351395a6e5675593352706232346f636978754b58743259584967644431754c7a68384d4474795a585231636d346f636c743058587879573351724d56303850446838636c74304b7a4a64504477784e696b2b506968754a6a637066537833636a316d6457356a64476c76626968794b5874795a585231636d346f636973334b533834664442394c47317950575a31626d4e30615739754b484973626978304b58736f626a3039626e567362487838626a77774b53596d4b4734394d436b734b48513950573531624778386648512b636935735a57356e644767704a69596f644431794c6d786c626d643061436b37646d467949475539626d56334b484975516c6c5552564e66554556535830564d52553146546c51395054492f515470794c6b4a5a5645565458314246556c39465445564e52553555505430305031383664696b6f644331754b5474795a585231636d34675a53357a5a58516f6369357a64574a68636e4a68655368754c4851704b53786c66547432595849676548493957794a31626d56346347566a6447566b4945565052694973496d6c75646d467361575167596d78765932736764486c775a534973496d6c75646d467361575167624756755a33526f4c32787064475679595777694c434a70626e5a6862476c6b4947527063335268626d4e6c49697769633352795a57467449475a70626d6c7a6147566b49697769626d3867633352795a57467449476868626d52735a5849694c437769626d38675932467362474a68593273694c434a70626e5a6862476c6b494656555269303449475268644745694c434a6c654852795953426d615756735a43423062323867624739755a794973496d526864475567626d393049476c7549484a68626d646c494445354f4441744d6a41354f534973496d5a70624756755957316c49485276627942736232356e49697769633352795a57467449475a70626d6c7a61476c755a794973496d6c75646d467361575167656d6c7749475268644745695853783450575a31626d4e30615739754b484973626978304b587432595849675a5431755a58636752584a796233496f626e783865484a62636c30704f326c6d4b4755755932396b5a5431794c455679636d39794c6d4e6863485231636d56546447466a6131527959574e6c4a695a46636e4a766369356a5958423064584a6c5533526859327455636d466a5a53686c4c4867704c4346304b58526f636d393349475537636d563064584a75494756394c48707950575a31626d4e30615739754b484973626978304b587432595849675a5431794c6d786c626d6430614474705a6967685a5878386443596d6443356d4a695968644335734b584a6c6448567962694275664878755a586367646967774b5474325958496759543068626e78386443783150534630664878304c6d6b37644878384b485139653330704c473538664368755057356c647942324b4755714d796b704f335a686369426e50575a31626d4e30615739754b46597065335a686369425950573475624756755a33526f4f326c6d4b46592b57436c37646d467949474939626d56334948596f54574630614335745958676f57436f794c4659704b5474694c6e4e6c644368754b53787550574a396653787a505851755a6e78384d43787050585175634878384d43786d50585175596e78384d43786f5058517562437873505851755a4378335058517562537855505851756269784a505755714f44746b623374705a69676861436c37637a31774b484973615377784b54743259584967516a31774b484973615373784c444d704f326c6d4b476b7250544d7351696c705a696843505430784b5767395a334973624431356369783350546b73564430314f325673633255676157596f516a30394d696c37646d467949456339634368794c476b734d7a45704b7a49314e79785a5058416f636978704b7a45774c4445314b5373304c466339527974774b484973615373314c444d784b5373784f326b72505445304f325a766369683259584967517a31755a586367646968584b5378505057356c647942324b4445354b53786a50544137597a785a4f79737259796c505732787957324e64585431774b4849736153746a4b6a4d734e796b376153733957536f7a4f325a766369683259584967616a31534b4538704c484e7950536778504478714b5330784c4856795055516f547978714c4445704c474d394d44746a504663374b587432595849675a443131636c74774b4849736153787a63696c644f326b725057516d4d545537646d467949486b395a44342b506a51376157596f655477784e696c4457324d724b3130396554746c62484e6c65335a686369425450544173526a30774f325a7663696835505430784e6a386f526a307a4b33416f636978704c444d704c476b7250544973557a314457324d744d5630704f6e6b39505445335079684750544d72634368794c476b734e796b73615373394d796b36655430394d54676d4a696847505445784b33416f636978704c4445794e796b73615373394e796b37526930744f796c4457324d724b31303955333139646d467949456f395179357a64574a68636e4a68655367774c4563704c486f395179357a64574a68636e4a68655368484b5474335056496f53696b73564431534b486f704c4767395243684b4c4863734d536b73624431454b486f73564377784b58316c62484e6c4948676f4d536b375a57787a5a5874325958496765543133636968704b5373304c466f39636c74354c54526466484a626553307a585477384f43787250586b72576a74705a696872506d55706533556d4a6e676f4d436b37596e4a6c595774395953596d5a79686d4b316f704c473475633256304b4849756333566959584a7959586b6f655378724b53786d4b5378304c6d49395a697339576978304c6e4139615431724b6a67736443356d50584d375932397564476c75645756396157596f6154354a4b5874314a695a344b4441704f324a795a574672665831684a695a6e4b4759724d544d784d4463794b54746d6233496f646d467949485a7950536778504478334b5330784c47687950536778504478554b5330784c45773961547337544431704b58743259584967557a316f5779516f636978704b535a32636c307354543154506a342b4e4474705a6968704b7a31544a6a45314c476b2b53536c376453596d654367774b547469636d5668613331705a696854664878344b4449704c4530384d6a55324b5735625a6973725854314e4f325673633255676157596f545430394d6a55324b58744d50576b7361443175645778734f324a795a5746726657567363325637646d467949457339545330794e5451376157596f545434794e6a517065335a686369426a505530744d6a55334c465539636e4a6259313037537a31774b4849736153776f4d54773856536b744d536b7261584a6259313073615373395658313259584967554431735779516f636978704b535a6f636c3073546a3151506a342b4e447451664878344b444d704c476b725056416d4d545537646d467949486f3963484a62546c30376157596f546a347a4b5874325958496756543175636c744f585474364b7a306b4b48497361536b6d4b444538504655704c54457361537339565831705a696870506b6b706533556d4a6e676f4d436b37596e4a6c595774395953596d5a79686d4b7a457a4d5441334d696b375a6d39794b485a686369425250575972537a746d504645375a6973394e436c7557325a64505735625a69313658537875573259724d563039626c746d4b7a4574656c3073626c746d4b7a4a64505735625a6973794c5870644c4735625a69737a58543175573259724d7931365854746d50564639665851756244316f4c4851756344314d4c485175596a316d4c4851755a6a317a4c47676d4a69687a5054457364433574505863736443356b5057777364433575505651706658646f6157786c4b43467a4b5474795a585231636d34675a6a3039626935735a57356e6447672f626a7074636968754c4441735a696c394f335a6863694242636a31755a586367646967774b54743259584967553349395a6e5675593352706232346f63696c374b484a624d46306850544d7866487879577a4664495430784d7a6c3866484a624d6c3068505467704a695a344b445973496d6c75646d4673615751675a3370706343426b5958526849696b37646d467949473439636c737a58537830505445774f32346d4e43596d4b48517250584a624d54426466436879577a4578585477384f436b724d696b375a6d39794b485a686369426c50536875506a347a4a6a45704b796875506a34304a6a45704f32552b4d44746c4c543068636c74304b7974644b5474795a585231636d34676443736f626959794b583073545849395a6e5675593352706232346f63696c37646d467949473439636935735a57356e64476737636d563064584a754b484a626269303058587879573234744d31303850446838636c74754c544a64504477784e6e7879573234744d563038504449304b54342b506a42394f325a31626d4e30615739754945676f636978754b5874795a585231636d3467656e496f6369357a64574a68636e4a6865536854636968794b5377744f436b73626e7838626d56334948596f5458496f63696b704b583132595849675648493964486c775a57396d4946526c654852455a574e765a47567950434a314969596d626d56334946526c654852455a574e765a4756794c454e795054413764484a35653152794c6d526c5932396b5a53684263697837633352795a5746744f69457766536b73513349394d58316a5958526a61487439646d467949475a795053677050543537646d46794947343762475630494849395a47396a6457316c626e51756358566c636e6c545a57786c59335276636b46736243676e63324e79615842305733523563475539496e526c65485176616d463259584e6a636d6c776443746e656d6c77496c316263334a6a585363704f325a76636968735a585167644342765a6942794b585279655874735a5851675a5431304c6e4e79597935745958526a61436776586d5268644745364b43347150796b6f507a6f374b474a68633255324e436b705079776f4c696f704a4338704f326c6d4b43466c4b574e76626e5270626e566c4f32786c644674684c4855735a79787a5854316c4c476b3956576c7564446842636e4a686553356d636d39744b47632f595852765969687a4b54706b5a574e765a475656556b6c44623231776232356c626e516f63796b73647a302b6479356a614746795132396b5a5546304b4441704b53786f5057356c647942555a5868305247566a6232526c636967704c6d526c5932396b5a5368494b476b704b53787350575276593356745a5735304c6d4e795a5746305a5556735a57316c626e516f496e4e6a636d6c77644349704f3277756447563464454e76626e526c626e51396143776f626a31304c6e4268636d5675644535765a4755705054317564577873664878754c6e4a6c634778685932564461476c735a4368734c48517066574e6864474e6f4b47557065324e76626e4e76624755755a584a796233496f496b4e766457786b494735766443426e645735366158416763324e7961584230496978304c475570665830375a6e496f4b5474336157356b623363755a335675656d6c7755336c75597a31494f336470626d52766479356e645735366158425459334a706348527a50575a794f3330704b436b37a2646970667358221220a3efdeeed8de842eaf710fe472cc6dc0df6dbc55597ec2560e75de8b3267a1c464736f6c63430008160033",
|
|
32
|
+
"deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80632647c23d14610030575b600080fd5b61004361003e366004610143565b610059565b604051610050919061026c565b60405180910390f35b60606040518060400160405280601681526020017567756e7a6970536372697074732d302e302e312e6a7360501b81525060405160200161009a919061029f565b6040516020818303038152906040528051906020012084846040516020016100c39291906102bb565b6040516020818303038152906040528051906020012003610101576040518061180001604052806117c481526020016102cc6117c491399050610126565b83836040516020016101149291906102bb565b60405160208183030381529060405290505b9392505050565b634e487b7160e01b600052604160045260246000fd5b60008060006040848603121561015857600080fd5b83356001600160401b038082111561016f57600080fd5b818601915086601f83011261018357600080fd5b81358181111561019257600080fd5b602088818386010111156101a557600080fd5b8084019650819550808801359350828411156101c057600080fd5b838801935088601f8501126101d457600080fd5b83359150828211156101e8576101e861012d565b604051601f8301601f19908116603f011681019084821181831017156102105761021061012d565b816040528381528a8385880101111561022857600080fd5b838387018483013760008385830101528096505050505050509250925092565b60005b8381101561026357818101518382015260200161024b565b50506000910152565b602081526000825180602084015261028b816040850160208701610248565b601f01601f19169190910160400192915050565b600082516102b1818460208701610248565b9190910192915050565b818382376000910190815291905056fe496e567a5a53427a64484a70593351694f79676f4b54302b65335a686369423250565670626e513451584a7959586b7351543156615735304d545a42636e4a686553786650565670626e517a4d6b4679636d46354c484a795057356c647942324b4673774c4441734d4377774c4441734d4377774c4441734d5377784c4445734d5377794c4449734d6977794c444d734d79777a4c444d734e4377304c4451734e4377314c4455734e5377314c4441734d4377774c4442644b537875636a31755a586367646968624d4377774c4441734d4377784c4445734d6977794c444d734d7977304c4451734e5377314c4459734e6977334c4463734f4377344c446b734f5377784d4377784d4377784d5377784d5377784d6977784d6977784d7977784d7977774c4442644b537873636a31755a586367646968624d5459734d5463734d5467734d4377344c4463734f5377324c4445774c4455734d5445734e4377784d69777a4c44457a4c4449734d5451734d5377784e5630704c48527950575a31626d4e30615739754b48497362696c375a6d39794b485a68636942305057356c647942424b444d784b53786c505441375a54777a4d5473724b3255706446746c585431754b7a307850447879573255744d5630375a6d39794b485a68636942685057356c647942664b4852624d7a42644b53786c505445375a54777a4d4473724b3255705a6d39794b485a6863694231505852625a56303764547830573255724d5630374b7974314b5746626456303964533130573256645044773166475537636d563064584a7557335173595631394c475679505852794b484a794c4449704c476c7950575679577a42644c474e7950575679577a46644f326c79577a4934585430794e54677359334a624d6a5534585430794f44743259584967595849396448496f626e49734d436b736348493959584a624d4630735658493959584a624d563073635431755a5863675153677a4d6a63324f436b375a6d39794b4738394d44747650444d794e7a59344f79737262796c74505368764a6a517a4e6a6b774b54342b506a46384b47386d4d6a45344e445570504477784c4730394b47306d4e5449304d6a6770506a342b4d6e776f625359784d7a45774e796b38504449736254306f625359324d5459344d436b2b506a3430664368744a6a4d344e545570504477304c484662623130394b4368744a6a59314d6a67774b54342b506a68384b47306d4d6a55314b5477384f436b2b506a34784f335a68636942744c4738735244316d6457356a64476c76626968794c47347364436c375a6d39794b485a686369426c50584975624756755a33526f4c4745394d4378315057356c647942424b4734704f3245385a5473724b324570636c74685853596d4b79743157334a62595630744d563037646d467949476339626d56334945456f62696b375a6d39794b4745394d447468504734374b7974684b576462595630395a3174684c5446644b33566259533078585477384d54743259584967637a74705a6968304b58747a5057356c647942424b444538504734704f335a6863694270505445314c5734375a6d39794b4745394d447468504755374b7974684b576c6d4b484a62595630705a6d39794b485a686369426d5057453850445238636c74685853786f50573474636c74685853787350576462636c746858533078585373725044786f4c4863396248776f4d54773861436b744d547473504431334f79737262436c7a573346626246302b506a35705854316d66575673633255675a6d39794b484d39626d56334945456f5a536b73595430774f3245385a5473724b324570636c74685853596d4b484e62595630396356746e57334a62595630744d5630724b31302b506a34784e533179573246644b5474795a585231636d346763333073525431755a586367646967794f4467704f325a766369687650544137627a77784e4451374b7974764b555662623130394f44743259584967627a746d6233496f627a30784e445137627a77794e5459374b7974764b555662623130394f54743259584967627a746d6233496f627a30794e545937627a77794f4441374b7974764b555662623130394e7a743259584967627a746d6233496f627a30794f444137627a77794f4467374b7974764b555662623130394f4474325958496762797876636a31755a5863676469677a4d696b375a6d39794b4738394d44747650444d794f79737262796c76636c7476585430314f335a68636942764f335a686369426e636a31454b4555734f5377784b547432595849676558493952436876636977314c4445704c4649395a6e5675593352706232346f63696c375a6d39794b485a686369427550584a624d463073644430784f335138636935735a57356e644767374b7974304b584a626446302b6269596d4b473439636c743058536b37636d563064584a75494735394c4841395a6e5675593352706232346f636978754c48517065335a686369426c505734764f4877774f334a6c64485679626968795732566466484a625a537378585477384f436b2b506968754a6a63704a6e52394c4351395a6e5675593352706232346f636978754b58743259584967644431754c7a68384d4474795a585231636d346f636c743058587879573351724d56303850446838636c74304b7a4a64504477784e696b2b506968754a6a637066537833636a316d6457356a64476c76626968794b5874795a585231636d346f636973334b533834664442394c47317950575a31626d4e30615739754b484973626978304b58736f626a3039626e567362487838626a77774b53596d4b4734394d436b734b48513950573531624778386648512b636935735a57356e644767704a69596f644431794c6d786c626d643061436b37646d467949475539626d56334b484975516c6c5552564e66554556535830564d52553146546c51395054492f515470794c6b4a5a5645565458314246556c39465445564e52553555505430305031383664696b6f644331754b5474795a585231636d34675a53357a5a58516f6369357a64574a68636e4a68655368754c4851704b53786c66547432595849676548493957794a31626d56346347566a6447566b4945565052694973496d6c75646d467361575167596d78765932736764486c775a534973496d6c75646d467361575167624756755a33526f4c32787064475679595777694c434a70626e5a6862476c6b4947527063335268626d4e6c49697769633352795a57467449475a70626d6c7a6147566b49697769626d3867633352795a57467449476868626d52735a5849694c437769626d38675932467362474a68593273694c434a70626e5a6862476c6b494656555269303449475268644745694c434a6c654852795953426d615756735a43423062323867624739755a794973496d526864475567626d393049476c7549484a68626d646c494445354f4441744d6a41354f534973496d5a70624756755957316c49485276627942736232356e49697769633352795a57467449475a70626d6c7a61476c755a794973496d6c75646d467361575167656d6c7749475268644745695853783450575a31626d4e30615739754b484973626978304b587432595849675a5431755a58636752584a796233496f626e783865484a62636c30704f326c6d4b4755755932396b5a5431794c455679636d39794c6d4e6863485231636d56546447466a6131527959574e6c4a695a46636e4a766369356a5958423064584a6c5533526859327455636d466a5a53686c4c4867704c4346304b58526f636d393349475537636d563064584a75494756394c48707950575a31626d4e30615739754b484973626978304b587432595849675a5431794c6d786c626d6430614474705a6967685a5878386443596d6443356d4a695968644335734b584a6c6448567962694275664878755a586367646967774b5474325958496759543068626e78386443783150534630664878304c6d6b37644878384b485139653330704c473538664368755057356c647942324b4755714d796b704f335a686369426e50575a31626d4e30615739754b46597065335a686369425950573475624756755a33526f4f326c6d4b46592b57436c37646d467949474939626d56334948596f54574630614335745958676f57436f794c4659704b5474694c6e4e6c644368754b53787550574a396653787a505851755a6e78384d43787050585175634878384d43786d50585175596e78384d43786f5058517562437873505851755a4378335058517562537855505851756269784a505755714f44746b623374705a69676861436c37637a31774b484973615377784b54743259584967516a31774b484973615373784c444d704f326c6d4b476b7250544d7351696c705a696843505430784b5767395a334973624431356369783350546b73564430314f325673633255676157596f516a30394d696c37646d467949456339634368794c476b734d7a45704b7a49314e79785a5058416f636978704b7a45774c4445314b5373304c466339527974774b484973615373314c444d784b5373784f326b72505445304f325a766369683259584967517a31755a586367646968584b5378505057356c647942324b4445354b53786a50544137597a785a4f79737259796c505732787957324e64585431774b4849736153746a4b6a4d734e796b376153733957536f7a4f325a766369683259584967616a31534b4538704c484e7950536778504478714b5330784c4856795055516f547978714c4445704c474d394d44746a504663374b587432595849675a443131636c74774b4849736153787a63696c644f326b725057516d4d545537646d467949486b395a44342b506a51376157596f655477784e696c4457324d724b3130396554746c62484e6c65335a686369425450544173526a30774f325a7663696835505430784e6a386f526a307a4b33416f636978704c444d704c476b7250544973557a314457324d744d5630704f6e6b39505445335079684750544d72634368794c476b734e796b73615373394d796b36655430394d54676d4a696847505445784b33416f636978704c4445794e796b73615373394e796b37526930744f796c4457324d724b31303955333139646d467949456f395179357a64574a68636e4a68655367774c4563704c486f395179357a64574a68636e4a68655368484b5474335056496f53696b73564431534b486f704c4767395243684b4c4863734d536b73624431454b486f73564377784b58316c62484e6c4948676f4d536b375a57787a5a5874325958496765543133636968704b5373304c466f39636c74354c54526466484a626553307a585477384f43787250586b72576a74705a696872506d55706533556d4a6e676f4d436b37596e4a6c595774395953596d5a79686d4b316f704c473475633256304b4849756333566959584a7959586b6f655378724b53786d4b5378304c6d49395a697339576978304c6e4139615431724b6a67736443356d50584d375932397564476c75645756396157596f6154354a4b5874314a695a344b4441704f324a795a574672665831684a695a6e4b4759724d544d784d4463794b54746d6233496f646d467949485a7950536778504478334b5330784c47687950536778504478554b5330784c45773961547337544431704b58743259584967557a316f5779516f636978704b535a32636c307354543154506a342b4e4474705a6968704b7a31544a6a45314c476b2b53536c376453596d654367774b547469636d5668613331705a696854664878344b4449704c4530384d6a55324b5735625a6973725854314e4f325673633255676157596f545430394d6a55324b58744d50576b7361443175645778734f324a795a5746726657567363325637646d467949457339545330794e5451376157596f545434794e6a517065335a686369426a505530744d6a55334c465539636e4a6259313037537a31774b4849736153776f4d54773856536b744d536b7261584a6259313073615373395658313259584967554431735779516f636978704b535a6f636c3073546a3151506a342b4e447451664878344b444d704c476b725056416d4d545537646d467949486f3963484a62546c30376157596f546a347a4b5874325958496756543175636c744f585474364b7a306b4b48497361536b6d4b444538504655704c54457361537339565831705a696870506b6b706533556d4a6e676f4d436b37596e4a6c595774395953596d5a79686d4b7a457a4d5441334d696b375a6d39794b485a686369425250575972537a746d504645375a6973394e436c7557325a64505735625a69313658537875573259724d563039626c746d4b7a4574656c3073626c746d4b7a4a64505735625a6973794c5870644c4735625a69737a58543175573259724d7931365854746d50564639665851756244316f4c4851756344314d4c485175596a316d4c4851755a6a317a4c47676d4a69687a5054457364433574505863736443356b5057777364433575505651706658646f6157786c4b43467a4b5474795a585231636d34675a6a3039626935735a57356e6447672f626a7074636968754c4441735a696c394f335a6863694242636a31755a586367646967774b54743259584967553349395a6e5675593352706232346f63696c374b484a624d46306850544d7866487879577a4664495430784d7a6c3866484a624d6c3068505467704a695a344b445973496d6c75646d4673615751675a3370706343426b5958526849696b37646d467949473439636c737a58537830505445774f32346d4e43596d4b48517250584a624d54426466436879577a4578585477384f436b724d696b375a6d39794b485a686369426c50536875506a347a4a6a45704b796875506a34304a6a45704f32552b4d44746c4c543068636c74304b7974644b5474795a585231636d34676443736f626959794b583073545849395a6e5675593352706232346f63696c37646d467949473439636935735a57356e64476737636d563064584a754b484a626269303058587879573234744d31303850446838636c74754c544a64504477784e6e7879573234744d563038504449304b54342b506a42394f325a31626d4e30615739754945676f636978754b5874795a585231636d3467656e496f6369357a64574a68636e4a6865536854636968794b5377744f436b73626e7838626d56334948596f5458496f63696b704b583132595849675648493964486c775a57396d4946526c654852455a574e765a47567950434a314969596d626d56334946526c654852455a574e765a4756794c454e795054413764484a35653152794c6d526c5932396b5a53684263697837633352795a5746744f69457766536b73513349394d58316a5958526a61487439646d467949475a795053677050543537646d46794947343762475630494849395a47396a6457316c626e51756358566c636e6c545a57786c59335276636b46736243676e63324e79615842305733523563475539496e526c65485176616d463259584e6a636d6c776443746e656d6c77496c316263334a6a585363704f325a76636968735a585167644342765a6942794b585279655874735a5851675a5431304c6e4e79597935745958526a61436776586d5268644745364b43347150796b6f507a6f374b474a68633255324e436b705079776f4c696f704a4338704f326c6d4b43466c4b574e76626e5270626e566c4f32786c644674684c4855735a79787a5854316c4c476b3956576c7564446842636e4a686553356d636d39744b47632f595852765969687a4b54706b5a574e765a475656556b6c44623231776232356c626e516f63796b73647a302b6479356a614746795132396b5a5546304b4441704b53786f5057356c647942555a5868305247566a6232526c636967704c6d526c5932396b5a5368494b476b704b53787350575276593356745a5735304c6d4e795a5746305a5556735a57316c626e516f496e4e6a636d6c77644349704f3277756447563464454e76626e526c626e51396143776f626a31304c6e4268636d5675644535765a4755705054317564577873664878754c6e4a6c634778685932564461476c735a4368734c48517066574e6864474e6f4b47557065324e76626e4e76624755755a584a796233496f496b4e766457786b494735766443426e645735366158416763324e7961584230496978304c475570665830375a6e496f4b5474336157356b623363755a335675656d6c7755336c75597a31494f336470626d52766479356e645735366158425459334a706348527a50575a794f3330704b436b37a2646970667358221220a3efdeeed8de842eaf710fe472cc6dc0df6dbc55597ec2560e75de8b3267a1c464736f6c63430008160033",
|
|
33
|
+
"linkReferences": {},
|
|
34
|
+
"deployedLinkReferences": {}
|
|
35
|
+
}
|
|
@@ -32,8 +32,8 @@
|
|
|
32
32
|
"type": "function"
|
|
33
33
|
}
|
|
34
34
|
],
|
|
35
|
-
"bytecode": "
|
|
36
|
-
"deployedBytecode": "
|
|
35
|
+
"bytecode": "0x608060405234801561001057600080fd5b50610148806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063c95bb9c814610030575b600080fd5b61004361003e3660046100d0565b610045565b005b60405163f889b3ed60e01b81526001600160a01b038481166004830152602482018490526044820183905285169063f889b3ed90606401600060405180830381600087803b15801561009657600080fd5b505af11580156100aa573d6000803e3d6000fd5b5050505050505050565b80356001600160a01b03811681146100cb57600080fd5b919050565b600080600080608085870312156100e657600080fd5b6100ef856100b4565b93506100fd602086016100b4565b9396939550505050604082013591606001359056fea26469706673582212202b13862ac3f6da97d308a9d1df150b40baf4a97c029ad0c9721177200340af4964736f6c63430008130033",
|
|
36
|
+
"deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063c95bb9c814610030575b600080fd5b61004361003e3660046100d0565b610045565b005b60405163f889b3ed60e01b81526001600160a01b038481166004830152602482018490526044820183905285169063f889b3ed90606401600060405180830381600087803b15801561009657600080fd5b505af11580156100aa573d6000803e3d6000fd5b5050505050505050565b80356001600160a01b03811681146100cb57600080fd5b919050565b600080600080608085870312156100e657600080fd5b6100ef856100b4565b93506100fd602086016100b4565b9396939550505050604082013591606001359056fea26469706673582212202b13862ac3f6da97d308a9d1df150b40baf4a97c029ad0c9721177200340af4964736f6c63430008130033",
|
|
37
37
|
"linkReferences": {},
|
|
38
38
|
"deployedLinkReferences": {}
|
|
39
39
|
}
|
package/artifacts/contracts/mock/RandomizerV2_NoAssignMock.sol/RandomizerV2_NoAssignMock.json
CHANGED
|
@@ -121,8 +121,8 @@
|
|
|
121
121
|
"type": "function"
|
|
122
122
|
}
|
|
123
123
|
],
|
|
124
|
-
"bytecode": "
|
|
125
|
-
"deployedBytecode": "
|
|
124
|
+
"bytecode": "0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6104918061007e6000396000f3fe608060405234801561001057600080fd5b50600436106100785760003560e01c8063471f23d11461007d578063715018a6146100925780638da5cb5b1461009a578063b628171a146100be578063b7bc7356146100cf578063e19133e2146100e2578063eaa76157146100f5578063f2fde38b14610108575b600080fd5b61009061008b3660046103ae565b61011b565b005b61009061018d565b6100a26101a1565b6040516001600160a01b03909116815260200160405180910390f35b6100906100cc3660046103ae565b50565b6100906100dd3660046103ae565b6101b0565b6001546100a2906001600160a01b031681565b6100906101033660046103c7565b6101e5565b6100906101163660046103c7565b610217565b600061012682610292565b60015460405161078f60e21b815260048101859052602481018390529192506001600160a01b031690611e3c906044015b600060405180830381600087803b15801561017157600080fd5b505af1158015610185573d6000803e3d6000fd5b505050505050565b6101956102ff565b61019f600061035e565b565b6000546001600160a01b031690565b60015460405161078f60e21b815260048101839052600060248201819052916001600160a01b031690611e3c90604401610157565b6101ed6102ff565b6101f561018d565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b61021f6102ff565b6001600160a01b0381166102895760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6100cc8161035e565b60004282436102a260018261040d565b40836102af60c882610426565b6102ba906001610448565b6040805160208101969096528501939093526060840191909152608083015260a082015260c00160405160208183030381529060405280519060200120915050919050565b336103086101a1565b6001600160a01b03161461019f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610280565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156103c057600080fd5b5035919050565b6000602082840312156103d957600080fd5b81356001600160a01b03811681146103f057600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610420576104206103f7565b92915050565b60008261044357634e487b7160e01b600052601260045260246000fd5b500690565b80820180821115610420576104206103f756fea264697066735822122084896d3a2e48acb7afdbbd076c4a9e76624cdbc7d0e9549aa65c62fe7a38f9e664736f6c63430008130033",
|
|
125
|
+
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100785760003560e01c8063471f23d11461007d578063715018a6146100925780638da5cb5b1461009a578063b628171a146100be578063b7bc7356146100cf578063e19133e2146100e2578063eaa76157146100f5578063f2fde38b14610108575b600080fd5b61009061008b3660046103ae565b61011b565b005b61009061018d565b6100a26101a1565b6040516001600160a01b03909116815260200160405180910390f35b6100906100cc3660046103ae565b50565b6100906100dd3660046103ae565b6101b0565b6001546100a2906001600160a01b031681565b6100906101033660046103c7565b6101e5565b6100906101163660046103c7565b610217565b600061012682610292565b60015460405161078f60e21b815260048101859052602481018390529192506001600160a01b031690611e3c906044015b600060405180830381600087803b15801561017157600080fd5b505af1158015610185573d6000803e3d6000fd5b505050505050565b6101956102ff565b61019f600061035e565b565b6000546001600160a01b031690565b60015460405161078f60e21b815260048101839052600060248201819052916001600160a01b031690611e3c90604401610157565b6101ed6102ff565b6101f561018d565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b61021f6102ff565b6001600160a01b0381166102895760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6100cc8161035e565b60004282436102a260018261040d565b40836102af60c882610426565b6102ba906001610448565b6040805160208101969096528501939093526060840191909152608083015260a082015260c00160405160208183030381529060405280519060200120915050919050565b336103086101a1565b6001600160a01b03161461019f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610280565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156103c057600080fd5b5035919050565b6000602082840312156103d957600080fd5b81356001600160a01b03811681146103f057600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610420576104206103f7565b92915050565b60008261044357634e487b7160e01b600052601260045260246000fd5b500690565b80820180821115610420576104206103f756fea264697066735822122084896d3a2e48acb7afdbbd076c4a9e76624cdbc7d0e9549aa65c62fe7a38f9e664736f6c63430008130033",
|
|
126
126
|
"linkReferences": {},
|
|
127
127
|
"deployedLinkReferences": {}
|
|
128
128
|
}
|
|
@@ -222,8 +222,8 @@
|
|
|
222
222
|
"type": "function"
|
|
223
223
|
}
|
|
224
224
|
],
|
|
225
|
-
"bytecode": "
|
|
226
|
-
"deployedBytecode": "
|
|
225
|
+
"bytecode": "0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6109798061007e6000396000f3fe608060405234801561001057600080fd5b50600436106100a45760003560e01c806308aacdf1146100a95780633897bb42146100e1578063447aa1c51461011d57806359e4a2ad1461013257806366b92a0e14610145578063715018a6146101705780638da5cb5b14610178578063b628171a14610180578063e19133e214610193578063eaa76157146101a6578063eb037309146101b9578063f2fde38b146101cc575b600080fd5b6100cc6100b73660046107f5565b60036020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6101046100ef3660046107f5565b60026020526000908152604090205460a01b81565b6040516001600160a01b031990911681526020016100d8565b61013061012b366004610823565b6101df565b005b610130610140366004610847565b610239565b600454610158906001600160a01b031681565b6040516001600160a01b0390911681526020016100d8565b6101306102bf565b6101586102d3565b61013061018e3660046107f5565b6102e2565b600154610158906001600160a01b031681565b6101306101b4366004610823565b61043a565b6101306101c73660046107f5565b61046c565b6101306101da366004610823565b6104d8565b6101ef63447aa1c560e01b610551565b600480546001600160a01b0319166001600160a01b0383169081179091556040517f8efe01ac3eede6840252c9e2462d05448dc65a012877da2bcf1e32c06a161a3d90600090a250565b6004546001600160a01b031633146102965760405162461bcd60e51b815260206004820152601b60248201527a13db9b1e481a185cda14d9595914d95d1d195c90dbdb9d1c9858dd602a1b60448201526064015b60405180910390fd5b60009182526002602052604090912080546001600160601b03191660a09290921c919091179055565b6102c761061e565b6102d1600061067d565b565b6000546001600160a01b031690565b6001546001600160a01b031633146103315760405162461bcd60e51b815260206004820152601260248201527113db9b1e4818dbdc99481b585e4818d85b1b60721b604482015260640161028d565b6000600381610343620f4240856108b0565b815260208101919091526040016000205460ff161561037e575060008181526002602052604090205460a01b6001600160a01b03191661038a565b610387826106cd565b90505b60008190036103d55760405162461bcd60e51b815260206004820152601760248201527613db9b1e481b9bdb8b5e995c9bc81a185cda081cd95959604a1b604482015260640161028d565b60015460405161078f60e21b815260048101849052602481018390526001600160a01b0390911690611e3c90604401600060405180830381600087803b15801561041e57600080fd5b505af1158015610432573d6000803e3d6000fd5b505050505050565b61044261061e565b61044a6102bf565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6104758161073a565b600081815260036020908152604091829020805460ff8082161560ff199092168217909255835185815291161515918101919091527fede330a7b41e8a7cd3e273fa4093f4fb1ab8d9b0dd270a9931dc4e5035cf1d28910160405180910390a150565b6104e061061e565b6001600160a01b0381166105455760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161028d565b61054e8161067d565b50565b60015460405163230448b160e01b81523360048201523060248201526001600160e01b0319831660448201526001600160a01b039091169063230448b1906064016020604051808303816000875af11580156105b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d591906108c4565b61054e5760405162461bcd60e51b815260206004820152601a60248201527913db9b1e4810dbdc994810591b5a5b9050d308185b1b1bddd95960321b604482015260640161028d565b336106276102d3565b6001600160a01b0316146102d15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161028d565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60004282436106dd6001826108e6565b40836106ea60c8826108ff565b6106f5906001610913565b6040805160208101969096528501939093526060840191909152608083015260a082015260c00160405160208183030381529060405280519060200120915050919050565b60015460405163a47d29cb60e01b8152600481018390526001600160a01b039091169063a47d29cb90602401602060405180830381865afa158015610783573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a79190610926565b6001600160a01b0316336001600160a01b03161461054e5760405162461bcd60e51b815260206004820152600b60248201526a13db9b1e48105c9d1a5cdd60aa1b604482015260640161028d565b60006020828403121561080757600080fd5b5035919050565b6001600160a01b038116811461054e57600080fd5b60006020828403121561083557600080fd5b81356108408161080e565b9392505050565b6000806040838503121561085a57600080fd5b8235915060208301356001600160a01b03198116811461087957600080fd5b809150509250929050565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000826108bf576108bf610884565b500490565b6000602082840312156108d657600080fd5b8151801515811461084057600080fd5b818103818111156108f9576108f961089a565b92915050565b60008261090e5761090e610884565b500690565b808201808211156108f9576108f961089a565b60006020828403121561093857600080fd5b81516108408161080e56fea2646970667358221220681a4e1625f6b753977654ee3f9be8f851c0baff1213d2d60e085f6a2e97a6d564736f6c63430008130033",
|
|
226
|
+
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a45760003560e01c806308aacdf1146100a95780633897bb42146100e1578063447aa1c51461011d57806359e4a2ad1461013257806366b92a0e14610145578063715018a6146101705780638da5cb5b14610178578063b628171a14610180578063e19133e214610193578063eaa76157146101a6578063eb037309146101b9578063f2fde38b146101cc575b600080fd5b6100cc6100b73660046107f5565b60036020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6101046100ef3660046107f5565b60026020526000908152604090205460a01b81565b6040516001600160a01b031990911681526020016100d8565b61013061012b366004610823565b6101df565b005b610130610140366004610847565b610239565b600454610158906001600160a01b031681565b6040516001600160a01b0390911681526020016100d8565b6101306102bf565b6101586102d3565b61013061018e3660046107f5565b6102e2565b600154610158906001600160a01b031681565b6101306101b4366004610823565b61043a565b6101306101c73660046107f5565b61046c565b6101306101da366004610823565b6104d8565b6101ef63447aa1c560e01b610551565b600480546001600160a01b0319166001600160a01b0383169081179091556040517f8efe01ac3eede6840252c9e2462d05448dc65a012877da2bcf1e32c06a161a3d90600090a250565b6004546001600160a01b031633146102965760405162461bcd60e51b815260206004820152601b60248201527a13db9b1e481a185cda14d9595914d95d1d195c90dbdb9d1c9858dd602a1b60448201526064015b60405180910390fd5b60009182526002602052604090912080546001600160601b03191660a09290921c919091179055565b6102c761061e565b6102d1600061067d565b565b6000546001600160a01b031690565b6001546001600160a01b031633146103315760405162461bcd60e51b815260206004820152601260248201527113db9b1e4818dbdc99481b585e4818d85b1b60721b604482015260640161028d565b6000600381610343620f4240856108b0565b815260208101919091526040016000205460ff161561037e575060008181526002602052604090205460a01b6001600160a01b03191661038a565b610387826106cd565b90505b60008190036103d55760405162461bcd60e51b815260206004820152601760248201527613db9b1e481b9bdb8b5e995c9bc81a185cda081cd95959604a1b604482015260640161028d565b60015460405161078f60e21b815260048101849052602481018390526001600160a01b0390911690611e3c90604401600060405180830381600087803b15801561041e57600080fd5b505af1158015610432573d6000803e3d6000fd5b505050505050565b61044261061e565b61044a6102bf565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6104758161073a565b600081815260036020908152604091829020805460ff8082161560ff199092168217909255835185815291161515918101919091527fede330a7b41e8a7cd3e273fa4093f4fb1ab8d9b0dd270a9931dc4e5035cf1d28910160405180910390a150565b6104e061061e565b6001600160a01b0381166105455760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161028d565b61054e8161067d565b50565b60015460405163230448b160e01b81523360048201523060248201526001600160e01b0319831660448201526001600160a01b039091169063230448b1906064016020604051808303816000875af11580156105b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d591906108c4565b61054e5760405162461bcd60e51b815260206004820152601a60248201527913db9b1e4810dbdc994810591b5a5b9050d308185b1b1bddd95960321b604482015260640161028d565b336106276102d3565b6001600160a01b0316146102d15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161028d565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60004282436106dd6001826108e6565b40836106ea60c8826108ff565b6106f5906001610913565b6040805160208101969096528501939093526060840191909152608083015260a082015260c00160405160208183030381529060405280519060200120915050919050565b60015460405163a47d29cb60e01b8152600481018390526001600160a01b039091169063a47d29cb90602401602060405180830381865afa158015610783573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a79190610926565b6001600160a01b0316336001600160a01b03161461054e5760405162461bcd60e51b815260206004820152600b60248201526a13db9b1e48105c9d1a5cdd60aa1b604482015260640161028d565b60006020828403121561080757600080fd5b5035919050565b6001600160a01b038116811461054e57600080fd5b60006020828403121561083557600080fd5b81356108408161080e565b9392505050565b6000806040838503121561085a57600080fd5b8235915060208301356001600160a01b03198116811461087957600080fd5b809150509250929050565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000826108bf576108bf610884565b500490565b6000602082840312156108d657600080fd5b8151801515811461084057600080fd5b818103818111156108f9576108f961089a565b92915050565b60008261090e5761090e610884565b500690565b808201808211156108f9576108f961089a565b60006020828403121561093857600080fd5b81516108408161080e56fea2646970667358221220681a4e1625f6b753977654ee3f9be8f851c0baff1213d2d60e085f6a2e97a6d564736f6c63430008130033",
|
|
227
227
|
"linkReferences": {},
|
|
228
228
|
"deployedLinkReferences": {}
|
|
229
229
|
}
|
|
@@ -95,8 +95,8 @@
|
|
|
95
95
|
"type": "function"
|
|
96
96
|
}
|
|
97
97
|
],
|
|
98
|
-
"bytecode": "
|
|
99
|
-
"deployedBytecode": "
|
|
98
|
+
"bytecode": "0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6104738061007e6000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c8063715018a6146100675780638da5cb5b14610071578063b628171a14610095578063e19133e2146100a8578063eaa76157146100bb578063f2fde38b146100ce575b600080fd5b61006f6100e1565b005b6100796100f5565b6040516001600160a01b03909116815260200160405180910390f35b61006f6100a3366004610390565b610104565b600154610079906001600160a01b031681565b61006f6100c93660046103a9565b6101c9565b61006f6100dc3660046103a9565b6101fb565b6100e9610274565b6100f360006102d3565b565b6000546001600160a01b031690565b6001546001600160a01b031633146101585760405162461bcd60e51b815260206004820152601260248201527113db9b1e4818dbdc99481b585e4818d85b1b60721b60448201526064015b60405180910390fd5b600061016382610323565b60015460405161078f60e21b815260048101859052602481018390529192506001600160a01b031690611e3c90604401600060405180830381600087803b1580156101ad57600080fd5b505af11580156101c1573d6000803e3d6000fd5b505050505050565b6101d1610274565b6101d96100e1565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b610203610274565b6001600160a01b0381166102685760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161014f565b610271816102d3565b50565b3361027d6100f5565b6001600160a01b0316146100f35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161014f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60004282436103336001826103ef565b408361034060c882610408565b61034b90600161042a565b6040805160208101969096528501939093526060840191909152608083015260a082015260c00160405160208183030381529060405280519060200120915050919050565b6000602082840312156103a257600080fd5b5035919050565b6000602082840312156103bb57600080fd5b81356001600160a01b03811681146103d257600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610402576104026103d9565b92915050565b60008261042557634e487b7160e01b600052601260045260246000fd5b500690565b80820180821115610402576104026103d956fea264697066735822122019ba206e0df91e7ff68994d026a3aa70936b620c436502dd9927fb40839e625464736f6c63430008130033",
|
|
99
|
+
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c8063715018a6146100675780638da5cb5b14610071578063b628171a14610095578063e19133e2146100a8578063eaa76157146100bb578063f2fde38b146100ce575b600080fd5b61006f6100e1565b005b6100796100f5565b6040516001600160a01b03909116815260200160405180910390f35b61006f6100a3366004610390565b610104565b600154610079906001600160a01b031681565b61006f6100c93660046103a9565b6101c9565b61006f6100dc3660046103a9565b6101fb565b6100e9610274565b6100f360006102d3565b565b6000546001600160a01b031690565b6001546001600160a01b031633146101585760405162461bcd60e51b815260206004820152601260248201527113db9b1e4818dbdc99481b585e4818d85b1b60721b60448201526064015b60405180910390fd5b600061016382610323565b60015460405161078f60e21b815260048101859052602481018390529192506001600160a01b031690611e3c90604401600060405180830381600087803b1580156101ad57600080fd5b505af11580156101c1573d6000803e3d6000fd5b505050505050565b6101d1610274565b6101d96100e1565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b610203610274565b6001600160a01b0381166102685760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161014f565b610271816102d3565b50565b3361027d6100f5565b6001600160a01b0316146100f35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161014f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60004282436103336001826103ef565b408361034060c882610408565b61034b90600161042a565b6040805160208101969096528501939093526060840191909152608083015260a082015260c00160405160208183030381529060405280519060200120915050919050565b6000602082840312156103a257600080fd5b5035919050565b6000602082840312156103bb57600080fd5b81356001600160a01b03811681146103d257600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610402576104026103d9565b92915050565b60008261042557634e487b7160e01b600052601260045260246000fd5b500690565b80820180821115610402576104026103d956fea264697066735822122019ba206e0df91e7ff68994d026a3aa70936b620c436502dd9927fb40839e625464736f6c63430008130033",
|
|
100
100
|
"linkReferences": {},
|
|
101
101
|
"deployedLinkReferences": {}
|
|
102
102
|
}
|
package/artifacts/contracts/randomizer/shared/SharedRandomizerV0.sol/SharedRandomizerV0.json
CHANGED
|
@@ -240,8 +240,8 @@
|
|
|
240
240
|
"type": "function"
|
|
241
241
|
}
|
|
242
242
|
],
|
|
243
|
-
"bytecode": "
|
|
244
|
-
"deployedBytecode": "
|
|
243
|
+
"bytecode": "0x60a060405234801561001057600080fd5b5060405161089b38038061089b83398101604081905261002f9161006d565b6001600160a01b03811660808190526040517f2ad63d43bf15d4fb27447dac9430a7e357192317067d6a79f145ae0893867d2890600090a25061009d565b60006020828403121561007f57600080fd5b81516001600160a01b038116811461009657600080fd5b9392505050565b6080516107dc6100bf60003960008181610146015261054f01526107dc6000f3fe608060405234801561001057600080fd5b50600436106100785760003560e01c80638f2a62c31461007d5780639f8ac23f146100cb578063a6db8cb614610119578063b1aea8c91461012e578063b310c79214610141578063b628171a14610168578063dddceed11461017b578063eaedc4231461018e575b600080fd5b6100b661008b366004610683565b6001600160a01b03919091166000908152600160209081526040808320938352929052205460ff1690565b60405190151581526020015b60405180910390f35b6101016100d9366004610683565b6001600160a01b03918216600090815260026020908152604080832093835292905220541690565b6040516001600160a01b0390911681526020016100c2565b61012c610127366004610683565b6101de565b005b61012c61013c3660046106af565b610260565b6101017f000000000000000000000000000000000000000000000000000000000000000081565b61012c6101763660046106f1565b6102cf565b61012c61018936600461070a565b610400565b6101c561019c366004610683565b6001600160a01b0391909116600090815260208181526040808320938352929052205460a01b90565b6040516001600160a01b031990911681526020016100c2565b6101e88282610454565b6001600160a01b0382166000818152600160209081526040808320858452825291829020805460ff19811660ff91821615908117909255835194855291840185905216151582820152517f459a9692be7991c0a9003b1503f8bae163cd2c99f35c952bf5b7b8d47629f6069181900360600190a15050565b61026a8383610454565b6001600160a01b03838116600081815260026020908152604080832087845290915280822080546001600160a01b0319169486169485179055518592917f3a32d746deba4ebe76a81771454e46f19940f56a24b0594a42356bcea6ac841491a4505050565b3360006102db8361050f565b6001600160a01b03831660009081526001602090815260408083208484529091528120549192509060ff161561034057506001600160a01b03821660009081526020818152604080832086845290915290205460a01b6001600160a01b03191661034d565b61034a8385610524565b90505b600081900361039d5760405162461bcd60e51b815260206004820152601760248201527613db9b1e481b9bdb8b5e995c9bc81a185cda081cd95959604a1b60448201526064015b60405180910390fd5b60405161078f60e21b815260048101859052602481018290526001600160a01b03841690611e3c90604401600060405180830381600087803b1580156103e257600080fd5b505af11580156103f6573d6000803e3d6000fd5b5050505050505050565b600061040b8361050f565b905061041784826105f7565b506001600160a01b03929092166000908152602081815260408083209383529290522080546001600160601b03191660a09290921c919091179055565b60405163a47d29cb60e01b8152600481018290526001600160a01b0383169063a47d29cb90602401602060405180830381865afa158015610499573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104bd919061074e565b6001600160a01b0316336001600160a01b03161461050b5760405162461bcd60e51b815260206004820152600b60248201526a13db9b1e48105c9d1a5cdd60aa1b6044820152606401610394565b5050565b600061051e620f42408361076b565b92915050565b6040516001600160601b0319606084901b166020820152603481018290526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906358fb597c90605401604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004016105ad91815260200190565b6020604051808303816000875af11580156105cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f0919061078d565b9392505050565b6001600160a01b03828116600090815260026020908152604080832085845290915290205416331461050b5760405162461bcd60e51b815260206004820152601e60248201527f4f6e6c79204861736820536565642053657474657220436f6e747261637400006044820152606401610394565b6001600160a01b038116811461068057600080fd5b50565b6000806040838503121561069657600080fd5b82356106a18161066b565b946020939093013593505050565b6000806000606084860312156106c457600080fd5b83356106cf8161066b565b92506020840135915060408401356106e68161066b565b809150509250925092565b60006020828403121561070357600080fd5b5035919050565b60008060006060848603121561071f57600080fd5b833561072a8161066b565b92506020840135915060408401356001600160a01b0319811681146106e657600080fd5b60006020828403121561076057600080fd5b81516105f08161066b565b60008261078857634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561079f57600080fd5b505191905056fea2646970667358221220ff7dcb586361ada8cbec0c58d78ec47205d64a2ff9ce40a5360c8c4d81d9624164736f6c63430008130033",
|
|
244
|
+
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100785760003560e01c80638f2a62c31461007d5780639f8ac23f146100cb578063a6db8cb614610119578063b1aea8c91461012e578063b310c79214610141578063b628171a14610168578063dddceed11461017b578063eaedc4231461018e575b600080fd5b6100b661008b366004610683565b6001600160a01b03919091166000908152600160209081526040808320938352929052205460ff1690565b60405190151581526020015b60405180910390f35b6101016100d9366004610683565b6001600160a01b03918216600090815260026020908152604080832093835292905220541690565b6040516001600160a01b0390911681526020016100c2565b61012c610127366004610683565b6101de565b005b61012c61013c3660046106af565b610260565b6101017f000000000000000000000000000000000000000000000000000000000000000081565b61012c6101763660046106f1565b6102cf565b61012c61018936600461070a565b610400565b6101c561019c366004610683565b6001600160a01b0391909116600090815260208181526040808320938352929052205460a01b90565b6040516001600160a01b031990911681526020016100c2565b6101e88282610454565b6001600160a01b0382166000818152600160209081526040808320858452825291829020805460ff19811660ff91821615908117909255835194855291840185905216151582820152517f459a9692be7991c0a9003b1503f8bae163cd2c99f35c952bf5b7b8d47629f6069181900360600190a15050565b61026a8383610454565b6001600160a01b03838116600081815260026020908152604080832087845290915280822080546001600160a01b0319169486169485179055518592917f3a32d746deba4ebe76a81771454e46f19940f56a24b0594a42356bcea6ac841491a4505050565b3360006102db8361050f565b6001600160a01b03831660009081526001602090815260408083208484529091528120549192509060ff161561034057506001600160a01b03821660009081526020818152604080832086845290915290205460a01b6001600160a01b03191661034d565b61034a8385610524565b90505b600081900361039d5760405162461bcd60e51b815260206004820152601760248201527613db9b1e481b9bdb8b5e995c9bc81a185cda081cd95959604a1b60448201526064015b60405180910390fd5b60405161078f60e21b815260048101859052602481018290526001600160a01b03841690611e3c90604401600060405180830381600087803b1580156103e257600080fd5b505af11580156103f6573d6000803e3d6000fd5b5050505050505050565b600061040b8361050f565b905061041784826105f7565b506001600160a01b03929092166000908152602081815260408083209383529290522080546001600160601b03191660a09290921c919091179055565b60405163a47d29cb60e01b8152600481018290526001600160a01b0383169063a47d29cb90602401602060405180830381865afa158015610499573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104bd919061074e565b6001600160a01b0316336001600160a01b03161461050b5760405162461bcd60e51b815260206004820152600b60248201526a13db9b1e48105c9d1a5cdd60aa1b6044820152606401610394565b5050565b600061051e620f42408361076b565b92915050565b6040516001600160601b0319606084901b166020820152603481018290526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906358fb597c90605401604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004016105ad91815260200190565b6020604051808303816000875af11580156105cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f0919061078d565b9392505050565b6001600160a01b03828116600090815260026020908152604080832085845290915290205416331461050b5760405162461bcd60e51b815260206004820152601e60248201527f4f6e6c79204861736820536565642053657474657220436f6e747261637400006044820152606401610394565b6001600160a01b038116811461068057600080fd5b50565b6000806040838503121561069657600080fd5b82356106a18161066b565b946020939093013593505050565b6000806000606084860312156106c457600080fd5b83356106cf8161066b565b92506020840135915060408401356106e68161066b565b809150509250925092565b60006020828403121561070357600080fd5b5035919050565b60008060006060848603121561071f57600080fd5b833561072a8161066b565b92506020840135915060408401356001600160a01b0319811681146106e657600080fd5b60006020828403121561076057600080fd5b81516105f08161066b565b60008261078857634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561079f57600080fd5b505191905056fea2646970667358221220ff7dcb586361ada8cbec0c58d78ec47205d64a2ff9ce40a5360c8c4d81d9624164736f6c63430008130033",
|
|
245
245
|
"linkReferences": {},
|
|
246
246
|
"deployedLinkReferences": {}
|
|
247
247
|
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
// SPDX-License-Identifier: LGPL-3.0-only
|
|
2
|
+
pragma solidity 0.8.22;
|
|
3
|
+
|
|
4
|
+
// Created By: Art Blocks Inc.
|
|
5
|
+
|
|
6
|
+
import {IBytecodeStorageReaderV2} from "../interfaces/v0.8.x/IBytecodeStorageReaderV2.sol";
|
|
7
|
+
|
|
8
|
+
import {BytecodeStorageReader} from "../libs/v0.8.x/BytecodeStorageV2.sol";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* @title Art Blocks Bytecode Storage Reader Contract V2
|
|
12
|
+
* @author Art Blocks Inc.
|
|
13
|
+
* @notice This contract is used to read the bytecode of a contract deployed by Art Blocks' BytecodeStorage library,
|
|
14
|
+
* for versions 0, 1, and 2 of the Art Blocks BytecodeStorage library.
|
|
15
|
+
* It is permissionless and can be used by anyone to read the bytecode of any contract deployed by Art Blocks.
|
|
16
|
+
* Future versions of BytecodeStorage will not be compatible with this reader.
|
|
17
|
+
* For a single location to read current and future versions of the Art Blocks BytecodeStorage library, see
|
|
18
|
+
* the UniversalBytecodeStorageReader contract, maintained by the Art Blocks team.
|
|
19
|
+
* Additional functionality is provided to read bytes data stored using the SSTORE2 library.
|
|
20
|
+
* This contract also provides an interface to read additional metadata stored by the Art Blocks BytecodeStorage
|
|
21
|
+
* library, such as the contract's version, deployer, and other metadata.
|
|
22
|
+
* @dev For simplicity and reduce code changes, this contract uses the BytecodeStorageReader external library to
|
|
23
|
+
* perform many operations. Future reader contract versions may choose to make the library internal to this contract to
|
|
24
|
+
* improve read operation performance.
|
|
25
|
+
*/
|
|
26
|
+
contract BytecodeStorageReaderContractV2 is IBytecodeStorageReaderV2 {
|
|
27
|
+
using BytecodeStorageReader for address;
|
|
28
|
+
|
|
29
|
+
string public constant VERSION = "BytecodeStorageReaderContractV2";
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* @notice Read a string from a data contract deployed via BytecodeStorage V2 or earlier.
|
|
33
|
+
* @param address_ address of contract deployed via BytecodeStorage to be read
|
|
34
|
+
* @return The string data stored at the specific address.
|
|
35
|
+
*/
|
|
36
|
+
function readFromBytecode(
|
|
37
|
+
address address_
|
|
38
|
+
) external view returns (string memory) {
|
|
39
|
+
return address_.readFromBytecode();
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* @notice Read a bytes array from the SSTORE2-formatted bytecode of a contract.
|
|
44
|
+
* Note that this function is only compatible with contracts that have been deployed using the popular SSTORE2
|
|
45
|
+
* library.
|
|
46
|
+
* @param address_ address of contract with SSTORE2-formatted bytecode to be read
|
|
47
|
+
* @return data The bytes data stored at the specific address.
|
|
48
|
+
*/
|
|
49
|
+
function readBytesFromSSTORE2Bytecode(
|
|
50
|
+
address address_
|
|
51
|
+
) external view returns (bytes memory) {
|
|
52
|
+
return address_.readBytesFromSSTORE2Bytecode();
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* @notice Read a bytes array from the a contract deployed via BytecodeStorage V2 or earlier.
|
|
57
|
+
* @param address_ address of contract with valid bytecode to be read
|
|
58
|
+
* @param offset offset to read from in contract bytecode, explicitly provided (not calculated)
|
|
59
|
+
* @return The bytes data stored at the specific address.
|
|
60
|
+
*/
|
|
61
|
+
function readBytesFromBytecode(
|
|
62
|
+
address address_,
|
|
63
|
+
uint256 offset
|
|
64
|
+
) external view returns (bytes memory) {
|
|
65
|
+
return address_.readBytesFromBytecode(offset);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
//------ Metadata Functions ------//
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* @notice Get address of deployer for given contract deployed via BytecodeStorage V2 or earlier.
|
|
72
|
+
* @param address_ address of deployed contract
|
|
73
|
+
* @return writerAddress address of deployer
|
|
74
|
+
*/
|
|
75
|
+
function getWriterAddressForBytecode(
|
|
76
|
+
address address_
|
|
77
|
+
) external view returns (address) {
|
|
78
|
+
return address_.getWriterAddressForBytecode();
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* @notice Get version for given contract deployed via BytecodeStorage V2 or earlier.
|
|
83
|
+
* @param address_ address of deployed contract
|
|
84
|
+
* @return version version of the contract
|
|
85
|
+
*/
|
|
86
|
+
function getLibraryVersionForBytecode(
|
|
87
|
+
address address_
|
|
88
|
+
) external view returns (bytes32) {
|
|
89
|
+
return address_.getLibraryVersionForBytecode();
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* @notice Get if data are stored in compressed format for given contract deployed via BytecodeStorage V2 or
|
|
94
|
+
* earlier.
|
|
95
|
+
* @param _address address of deployed contract
|
|
96
|
+
* @return isCompressed boolean indicating if the stored data are compressed
|
|
97
|
+
*/
|
|
98
|
+
function getIsCompressedForBytecode(
|
|
99
|
+
address _address
|
|
100
|
+
) external view returns (bool) {
|
|
101
|
+
return _address.getIsCompressedForBytecode();
|
|
102
|
+
}
|
|
103
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
// SPDX-License-Identifier: LGPL-3.0-only
|
|
2
|
+
pragma solidity 0.8.22;
|
|
3
|
+
|
|
4
|
+
// Created By: Art Blocks Inc.
|
|
5
|
+
|
|
6
|
+
import {IUniversalBytecodeStorageReader} from "../interfaces/v0.8.x/IUniversalBytecodeStorageReader.sol";
|
|
7
|
+
|
|
8
|
+
import {IBytecodeStorageReader_Base} from "../interfaces/v0.8.x/IBytecodeStorageReader_Base.sol";
|
|
9
|
+
|
|
10
|
+
import "@openzeppelin-5.0/contracts/access/Ownable.sol";
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* @title Art Blocks Universal Bytecode Storage Reader
|
|
14
|
+
* @author Art Blocks Inc.
|
|
15
|
+
* @notice This contract is used to read the bytecode of a contract deployed by Art Blocks' BytecodeStorage library.
|
|
16
|
+
* It is designed to be owned and configurable by a Art Blocks secure multisig wallet, providing a single location
|
|
17
|
+
* to read on-chain data stored by the Art Blocks BytecodeStorage libarary. This contract is intended to be updated
|
|
18
|
+
* as new versions of the Art Blocks BytecodeStorage library are released, such that the Art Blocks community can
|
|
19
|
+
* continue to read the bytecode of all existing and future Art Blocks contracts in a single location.
|
|
20
|
+
* The exposed interface is simplified to only include the read string function.
|
|
21
|
+
* Additional functionality, such as alternate read methods or determining a contract's version, deployer, and other
|
|
22
|
+
* metadata, may be available on the active BytecodeStorageReader contract.
|
|
23
|
+
*/
|
|
24
|
+
contract UniversalBytecodeStorageReader is
|
|
25
|
+
Ownable,
|
|
26
|
+
IUniversalBytecodeStorageReader
|
|
27
|
+
{
|
|
28
|
+
/**
|
|
29
|
+
* @notice The active bytecode storage reader contract being used by this universal reader.
|
|
30
|
+
* Updateable by the owner of this contract.
|
|
31
|
+
* This contract is intended to be updated as new versions of the Art Blocks BytecodeStorage library are released.
|
|
32
|
+
* @dev To prevent a single point of failure, contracts may point directly to BytecodeStorageReader contracts
|
|
33
|
+
* instead of this universal reader.
|
|
34
|
+
*/
|
|
35
|
+
IBytecodeStorageReader_Base public activeBytecodeStorageReaderContract;
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* @notice Construct a new UniversalBytecodeStorageReader contract, owned by input owner address.
|
|
39
|
+
* @param owner_ The address that will be set as the owner of this contract.
|
|
40
|
+
*/
|
|
41
|
+
constructor(address owner_) Ownable(owner_) {}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* @notice Update the active bytecode storage reader contract being used by this universal reader.
|
|
45
|
+
* @param newBytecodeStorageReaderContract The address of the new active bytecode storage reader contract.
|
|
46
|
+
*/
|
|
47
|
+
function updateBytecodeStorageReaderContract(
|
|
48
|
+
IBytecodeStorageReader_Base newBytecodeStorageReaderContract
|
|
49
|
+
) external onlyOwner {
|
|
50
|
+
activeBytecodeStorageReaderContract = newBytecodeStorageReaderContract;
|
|
51
|
+
emit ReaderUpdated({
|
|
52
|
+
activeReader: address(newBytecodeStorageReaderContract)
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* @notice Read a string from a data contract deployed via BytecodeStorage.
|
|
58
|
+
* @dev may also support reading additional stored data formats in the future.
|
|
59
|
+
* @param address_ address of contract deployed via BytecodeStorage to be read
|
|
60
|
+
* @return The string data stored at the specific address.
|
|
61
|
+
*/
|
|
62
|
+
function readFromBytecode(
|
|
63
|
+
address address_
|
|
64
|
+
) external view returns (string memory) {
|
|
65
|
+
return
|
|
66
|
+
activeBytecodeStorageReaderContract.readFromBytecode({
|
|
67
|
+
address_: address_
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
// SPDX-License-Identifier: LGPL-3.0-only
|
|
2
|
+
pragma solidity 0.8.22;
|
|
3
|
+
|
|
4
|
+
// Created By: Art Blocks Inc.
|
|
5
|
+
import "./libs/v0.8.x/BytecodeStorageV2.sol";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @title Art Blocks Storage Writer
|
|
9
|
+
* @author Art Blocks Inc.
|
|
10
|
+
* @notice A simple contract that with a single function that uses
|
|
11
|
+
* the BytecodeStorageV1 library to write a string to bytecode storage.
|
|
12
|
+
*/
|
|
13
|
+
contract BytecodeStorageV2Writer {
|
|
14
|
+
using BytecodeStorageWriter for bytes;
|
|
15
|
+
using BytecodeStorageReader for string;
|
|
16
|
+
|
|
17
|
+
event StorageContractCreated(address indexed storageContract);
|
|
18
|
+
|
|
19
|
+
function _onlyNonEmptyString(string memory _string) internal pure {
|
|
20
|
+
if (bytes(_string).length == 0) {
|
|
21
|
+
revert("String must be non-empty");
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* @notice Write a string to bytecode storage.
|
|
27
|
+
* @param _string The string to write to bytecode storage.
|
|
28
|
+
* @dev This function emits an event with the address of the newly created
|
|
29
|
+
* storage contract.
|
|
30
|
+
*/
|
|
31
|
+
function writeStringToBytecodeStorage(string memory _string) public {
|
|
32
|
+
address storageContract = BytecodeStorageWriter.writeToBytecode(
|
|
33
|
+
_string
|
|
34
|
+
);
|
|
35
|
+
emit StorageContractCreated(storageContract);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* @notice Write a pre-compressed string to bytecode storage. The string
|
|
40
|
+
* should be compressed using `getCompressed`. This function stores the string
|
|
41
|
+
* in a compressed format on-chain. For reads, the compressed string is
|
|
42
|
+
* decompressed on-chain, ensuring the original text is reconstructed without
|
|
43
|
+
* external dependencies.
|
|
44
|
+
* @param _compressedString Pre-compressed string to be stored.
|
|
45
|
+
* Required to be non-empty, but no further validation is performed.
|
|
46
|
+
* @dev This function emits an event with the address of the newly created
|
|
47
|
+
* storage contract.
|
|
48
|
+
*/
|
|
49
|
+
function writeCompressedStringToBytecodeStorage(
|
|
50
|
+
bytes memory _compressedString
|
|
51
|
+
) public {
|
|
52
|
+
address storageContract = BytecodeStorageWriter
|
|
53
|
+
.writeToBytecodeCompressed(_compressedString);
|
|
54
|
+
emit StorageContractCreated(storageContract);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* @notice Returns the compressed form of a string in bytes using solady LibZip's flz compress algorithm.
|
|
59
|
+
* The bytes output from this function are intended to be used as input to `writeCompressedStringToBytecodeStorage`.
|
|
60
|
+
* @param _string String to be compressed. Required to be a non-empty string, but no further validaton is performed.
|
|
61
|
+
* @return bytes compressed bytes
|
|
62
|
+
*/
|
|
63
|
+
function getCompressed(
|
|
64
|
+
string memory _string
|
|
65
|
+
) external pure returns (bytes memory) {
|
|
66
|
+
_onlyNonEmptyString(_string);
|
|
67
|
+
return BytecodeStorageReader.getCompressed(_string);
|
|
68
|
+
}
|
|
69
|
+
}
|