diff --git a/broadcast/CreatePlotEthPool.s.sol/8453/run-1774245499757.json b/broadcast/CreatePlotEthPool.s.sol/8453/run-1774245499757.json new file mode 100644 index 0000000..8bdaa9e --- /dev/null +++ b/broadcast/CreatePlotEthPool.s.sol/8453/run-1774245499757.json @@ -0,0 +1,301 @@ +{ + "transactions": [ + { + "hash": "0xf4287e02a5cbaed3b39fb3186abdcd43e6ceeffb488d66a61b11fd4fe849e099", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x498581ff718922c3f8e6a244956af099b2652b2b", + "function": "initialize((address,address,uint24,int24,address),uint160)", + "arguments": [ + "(0x0000000000000000000000000000000000000000, 0xF8A2C39111FCEB9C950aAf28A9E34EBaD99b85C1, 3000, 60, 0x0000000000000000000000000000000000000000)", + "79061913993278860732495193206006" + ], + "transaction": { + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": "0x498581ff718922c3f8e6a244956af099b2652b2b", + "gas": "0x116e6", + "value": "0x0", + "input": "0x6276cbbe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f8a2c39111fceb9c950aaf28a9e34ebad99b85c10000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e5e6d27252c090388968d86cf6", + "nonce": "0x1b5", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xab6bf4d54c206fe24484b76295d0f0e01b85f6849fc4f67b924b5f9650d09311", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0xf8a2c39111fceb9c950aaf28a9e34ebad99b85c1", + "function": "approve(address,uint256)", + "arguments": [ + "0x000000000022D473030F116dDEE9F6B43aC78BA3", + "115792089237316195423570985008687907853269984665640564039457584007913129639935" + ], + "transaction": { + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": "0xf8a2c39111fceb9c950aaf28a9e34ebad99b85c1", + "gas": "0x109bd", + "value": "0x0", + "input": "0x095ea7b3000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "nonce": "0x1b6", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xaf6715c9041ccc39e3e9e87c44ae8b61d78dd366f5be06a6f43e3bd442f18c1e", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x000000000022d473030f116ddee9f6b43ac78ba3", + "function": "approve(address,address,uint160,uint48)", + "arguments": [ + "0xF8A2C39111FCEB9C950aAf28A9E34EBaD99b85C1", + "0x7C5f5A4bBd8fD63184577525326123B519429bDc", + "1461501637330902918203684832716283019655932542975", + "281474976710655" + ], + "transaction": { + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": "0x000000000022d473030f116ddee9f6b43ac78ba3", + "gas": "0x1112d", + "value": "0x0", + "input": "0x87517c45000000000000000000000000f8a2c39111fceb9c950aaf28a9e34ebad99b85c10000000000000000000000007c5f5a4bbd8fd63184577525326123b519429bdc000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000ffffffffffff", + "nonce": "0x1b7", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x94f7a2c0292183d5468ea8ec50d3da6f27c56654a089071ba138efc1546c3bb6", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x7c5f5a4bbd8fd63184577525326123b519429bdc", + "function": "modifyLiquidities(bytes,uint256)", + "arguments": [ + "0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000003020d140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000220000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f8a2c39111fceb9c950aaf28a9e34ebad99b85c10000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000000000000000000000000000000000000000003c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002041800000000000000000000000000000000000000000000000000000000000232f8000000000000000000000000000000000000000000000000356f3e7fecaf6b1400000000000000000000000000000000000000000000000000038d7ea4c6800000000000000000000000000000000000000000000000003635c9adc5dea00000000000000000000000000000017596303ee2f3c1250aa67d2d33dbae1d1c4dbf0000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f8a2c39111fceb9c950aaf28a9e34ebad99b85c100000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017596303ee2f3c1250aa67d2d33dbae1d1c4dbf0000000000000000000000000000000000000000000000000000000000000000", + "1774245599" + ], + "transaction": { + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": "0x7c5f5a4bbd8fd63184577525326123b519429bdc", + "gas": "0x7d0c8", + "value": "0x38d7ea4c68000", + "input": "0xdd46508f00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000069c0d6df00000000000000000000000000000000000000000000000000000000000003a0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000003020d140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000220000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f8a2c39111fceb9c950aaf28a9e34ebad99b85c10000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000000000000000000000000000000000000000003c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002041800000000000000000000000000000000000000000000000000000000000232f8000000000000000000000000000000000000000000000000356f3e7fecaf6b1400000000000000000000000000000000000000000000000000038d7ea4c6800000000000000000000000000000000000000000000000003635c9adc5dea00000000000000000000000000000017596303ee2f3c1250aa67d2d33dbae1d1c4dbf0000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f8a2c39111fceb9c950aaf28a9e34ebad99b85c100000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017596303ee2f3c1250aa67d2d33dbae1d1c4dbf0000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x1b8", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0xac3298", + "logs": [ + { + "address": "0x498581ff718922c3f8e6a244956af099b2652b2b", + "topics": [ + "0xdd466e674ea557f56295e2d0218a125ea4b4f0f6f3307b95f85e6110838d6438", + "0x8ac0625a58745b0956142dae68f569e50df898facda78eca4ce47118e1c9ded3", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f8a2c39111fceb9c950aaf28a9e34ebad99b85c1" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e5e6d27252c090388968d86cf60000000000000000000000000000000000000000000000000000000000021b88", + "blockHash": "0x319d31bf1f90ec5b12885212cdb250e4181c69b749129cd1d8f5df1e19a602f9", + "blockNumber": "0x29b3cc8", + "blockTimestamp": "0x69c0d673", + "transactionHash": "0xf4287e02a5cbaed3b39fb3186abdcd43e6ceeffb488d66a61b11fd4fe849e099", + "transactionIndex": "0x29", + "logIndex": "0x16b", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000008000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022000000000000000000800000000000000000000000000000000000000000000004008000000000000000000000001000800000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000800000000000000000400000020000000000000000000000000000000000000000400000000000000000000000000", + "type": "0x2", + "transactionHash": "0xf4287e02a5cbaed3b39fb3186abdcd43e6ceeffb488d66a61b11fd4fe849e099", + "transactionIndex": "0x29", + "blockHash": "0x319d31bf1f90ec5b12885212cdb250e4181c69b749129cd1d8f5df1e19a602f9", + "blockNumber": "0x29b3cc8", + "gasUsed": "0xc9ec", + "effectiveGasPrice": "0x4c4b4a", + "blobGasUsed": "0x3878", + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": "0x498581ff718922c3f8e6a244956af099b2652b2b", + "contractAddress": null, + "daFootprintGasScalar": "0x8b", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x33835e", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x22fb1a34", + "l1GasPrice": "0x35b4b19", + "l1GasUsed": "0x68a" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x2822add", + "logs": [ + { + "address": "0xf8a2c39111fceb9c950aaf28a9e34ebad99b85c1", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "0x000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba3" + ], + "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "blockHash": "0x88e0b08e175d7015c30ee61111bb0a43496c7329cd592ff5e9d47b4df4e7cc68", + "blockNumber": "0x29b3cc9", + "blockTimestamp": "0x69c0d675", + "transactionHash": "0xab6bf4d54c206fe24484b76295d0f0e01b85f6849fc4f67b924b5f9650d09311", + "transactionIndex": "0x7f", + "logIndex": "0x31f", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000004000000000800000000000000000200000000000000000000000005000000000000000000000000800000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000200000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xab6bf4d54c206fe24484b76295d0f0e01b85f6849fc4f67b924b5f9650d09311", + "transactionIndex": "0x7f", + "blockHash": "0x88e0b08e175d7015c30ee61111bb0a43496c7329cd592ff5e9d47b4df4e7cc68", + "blockNumber": "0x29b3cc9", + "gasUsed": "0xc064", + "effectiveGasPrice": "0x4c4b4a", + "blobGasUsed": "0x364c", + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": "0xf8a2c39111fceb9c950aaf28a9e34ebad99b85c1", + "contractAddress": null, + "daFootprintGasScalar": "0x8b", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x33835e", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x216e243b", + "l1GasPrice": "0x35b4b19", + "l1GasUsed": "0x640" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xd304ba", + "logs": [ + { + "address": "0x000000000022d473030f116ddee9f6b43ac78ba3", + "topics": [ + "0xda9fa7c1b00402c17d0161b249b1ab8bbec047c5a52207b9c112deffd817036b", + "0x000000000000000000000000017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "0x000000000000000000000000f8a2c39111fceb9c950aaf28a9e34ebad99b85c1", + "0x0000000000000000000000007c5f5a4bbd8fd63184577525326123b519429bdc" + ], + "data": "0x000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000ffffffffffff", + "blockHash": "0xf947605ce9842ddf9616e7e1698c66546b3210715c828fddc07052d6ff03b862", + "blockNumber": "0x29b3ccb", + "blockTimestamp": "0x69c0d679", + "transactionHash": "0xaf6715c9041ccc39e3e9e87c44ae8b61d78dd366f5be06a6f43e3bd442f18c1e", + "transactionIndex": "0x39", + "logIndex": "0x1c1", + "removed": false + } + ], + "logsBloom": "0x00010000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000082000000000000000000000000000000000000000000000000000000000000000000200000000002000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000880000000200000000000080000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000002000000000000000000400", + "type": "0x2", + "transactionHash": "0xaf6715c9041ccc39e3e9e87c44ae8b61d78dd366f5be06a6f43e3bd442f18c1e", + "transactionIndex": "0x39", + "blockHash": "0xf947605ce9842ddf9616e7e1698c66546b3210715c828fddc07052d6ff03b862", + "blockNumber": "0x29b3ccb", + "gasUsed": "0xbaca", + "effectiveGasPrice": "0x4c4b4a", + "blobGasUsed": "0x3bba", + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": "0x000000000022d473030f116ddee9f6b43ac78ba3", + "contractAddress": null, + "daFootprintGasScalar": "0x8b", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x33835e", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x24f0396e", + "l1GasPrice": "0x35b4b19", + "l1GasUsed": "0x6e7" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x151c56a", + "logs": [ + { + "address": "0x7c5f5a4bbd8fd63184577525326123b519429bdc", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "0x00000000000000000000000000000000000000000000000000000000001fb95f" + ], + "data": "0x", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x29b3ccd", + "blockTimestamp": "0x69c0d67d", + "transactionHash": "0x94f7a2c0292183d5468ea8ec50d3da6f27c56654a089071ba138efc1546c3bb6", + "transactionIndex": "0x40", + "logIndex": "0x231", + "removed": false + }, + { + "address": "0x498581ff718922c3f8e6a244956af099b2652b2b", + "topics": [ + "0xf208f4912782fd25c7f114ca3723a2d5dd6f3bcc3ac8db5af63baa85f711d5ec", + "0x8ac0625a58745b0956142dae68f569e50df898facda78eca4ce47118e1c9ded3", + "0x0000000000000000000000007c5f5a4bbd8fd63184577525326123b519429bdc" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000002041800000000000000000000000000000000000000000000000000000000000232f8000000000000000000000000000000000000000000000000356f3e7fecaf6b1400000000000000000000000000000000000000000000000000000000001fb95f", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x29b3ccd", + "blockTimestamp": "0x69c0d67d", + "transactionHash": "0x94f7a2c0292183d5468ea8ec50d3da6f27c56654a089071ba138efc1546c3bb6", + "transactionIndex": "0x40", + "logIndex": "0x232", + "removed": false + }, + { + "address": "0xf8a2c39111fceb9c950aaf28a9e34ebad99b85c1", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "0x000000000000000000000000498581ff718922c3f8e6a244956af099b2652b2b" + ], + "data": "0x000000000000000000000000000000000000000000000035fb9ba37f2e1ef8a8", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x29b3ccd", + "blockTimestamp": "0x69c0d67d", + "transactionHash": "0x94f7a2c0292183d5468ea8ec50d3da6f27c56654a089071ba138efc1546c3bb6", + "transactionIndex": "0x40", + "logIndex": "0x233", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000040000000000000000000040000000028000000080000000000000000004000000000000000000000000000002000000000000000000000001008000000000000000000000000000000000000000200000000020000000000000000000800040000000000000000000010000000000000000001004000000000000000000000000000000000000000000400000000004004000000000008000000000000000000000000000000000000800000000200000002000801000000000000000000200800000000000000000400000020000000000000000000000000000000000004020400002000000000000000000000", + "type": "0x2", + "transactionHash": "0x94f7a2c0292183d5468ea8ec50d3da6f27c56654a089071ba138efc1546c3bb6", + "transactionIndex": "0x40", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x29b3ccd", + "gasUsed": "0x5a888", + "effectiveGasPrice": "0x4c4b4a", + "blobGasUsed": "0x847c", + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": "0x7c5f5a4bbd8fd63184577525326123b519429bdc", + "contractAddress": null, + "daFootprintGasScalar": "0x8b", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x33835e", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x216e243b", + "l1GasPrice": "0x35b4b19", + "l1GasUsed": "0xf45" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1774245499757, + "chain": 8453, + "commit": "be779c0" +} \ No newline at end of file diff --git a/broadcast/CreatePlotEthPool.s.sol/8453/run-latest.json b/broadcast/CreatePlotEthPool.s.sol/8453/run-latest.json new file mode 100644 index 0000000..8bdaa9e --- /dev/null +++ b/broadcast/CreatePlotEthPool.s.sol/8453/run-latest.json @@ -0,0 +1,301 @@ +{ + "transactions": [ + { + "hash": "0xf4287e02a5cbaed3b39fb3186abdcd43e6ceeffb488d66a61b11fd4fe849e099", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x498581ff718922c3f8e6a244956af099b2652b2b", + "function": "initialize((address,address,uint24,int24,address),uint160)", + "arguments": [ + "(0x0000000000000000000000000000000000000000, 0xF8A2C39111FCEB9C950aAf28A9E34EBaD99b85C1, 3000, 60, 0x0000000000000000000000000000000000000000)", + "79061913993278860732495193206006" + ], + "transaction": { + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": "0x498581ff718922c3f8e6a244956af099b2652b2b", + "gas": "0x116e6", + "value": "0x0", + "input": "0x6276cbbe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f8a2c39111fceb9c950aaf28a9e34ebad99b85c10000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e5e6d27252c090388968d86cf6", + "nonce": "0x1b5", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xab6bf4d54c206fe24484b76295d0f0e01b85f6849fc4f67b924b5f9650d09311", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0xf8a2c39111fceb9c950aaf28a9e34ebad99b85c1", + "function": "approve(address,uint256)", + "arguments": [ + "0x000000000022D473030F116dDEE9F6B43aC78BA3", + "115792089237316195423570985008687907853269984665640564039457584007913129639935" + ], + "transaction": { + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": "0xf8a2c39111fceb9c950aaf28a9e34ebad99b85c1", + "gas": "0x109bd", + "value": "0x0", + "input": "0x095ea7b3000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "nonce": "0x1b6", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xaf6715c9041ccc39e3e9e87c44ae8b61d78dd366f5be06a6f43e3bd442f18c1e", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x000000000022d473030f116ddee9f6b43ac78ba3", + "function": "approve(address,address,uint160,uint48)", + "arguments": [ + "0xF8A2C39111FCEB9C950aAf28A9E34EBaD99b85C1", + "0x7C5f5A4bBd8fD63184577525326123B519429bDc", + "1461501637330902918203684832716283019655932542975", + "281474976710655" + ], + "transaction": { + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": "0x000000000022d473030f116ddee9f6b43ac78ba3", + "gas": "0x1112d", + "value": "0x0", + "input": "0x87517c45000000000000000000000000f8a2c39111fceb9c950aaf28a9e34ebad99b85c10000000000000000000000007c5f5a4bbd8fd63184577525326123b519429bdc000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000ffffffffffff", + "nonce": "0x1b7", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x94f7a2c0292183d5468ea8ec50d3da6f27c56654a089071ba138efc1546c3bb6", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x7c5f5a4bbd8fd63184577525326123b519429bdc", + "function": "modifyLiquidities(bytes,uint256)", + "arguments": [ + "0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000003020d140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000220000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f8a2c39111fceb9c950aaf28a9e34ebad99b85c10000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000000000000000000000000000000000000000003c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002041800000000000000000000000000000000000000000000000000000000000232f8000000000000000000000000000000000000000000000000356f3e7fecaf6b1400000000000000000000000000000000000000000000000000038d7ea4c6800000000000000000000000000000000000000000000000003635c9adc5dea00000000000000000000000000000017596303ee2f3c1250aa67d2d33dbae1d1c4dbf0000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f8a2c39111fceb9c950aaf28a9e34ebad99b85c100000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017596303ee2f3c1250aa67d2d33dbae1d1c4dbf0000000000000000000000000000000000000000000000000000000000000000", + "1774245599" + ], + "transaction": { + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": "0x7c5f5a4bbd8fd63184577525326123b519429bdc", + "gas": "0x7d0c8", + "value": "0x38d7ea4c68000", + "input": "0xdd46508f00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000069c0d6df00000000000000000000000000000000000000000000000000000000000003a0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000003020d140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000220000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f8a2c39111fceb9c950aaf28a9e34ebad99b85c10000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000000000000000000000000000000000000000003c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002041800000000000000000000000000000000000000000000000000000000000232f8000000000000000000000000000000000000000000000000356f3e7fecaf6b1400000000000000000000000000000000000000000000000000038d7ea4c6800000000000000000000000000000000000000000000000003635c9adc5dea00000000000000000000000000000017596303ee2f3c1250aa67d2d33dbae1d1c4dbf0000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f8a2c39111fceb9c950aaf28a9e34ebad99b85c100000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017596303ee2f3c1250aa67d2d33dbae1d1c4dbf0000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x1b8", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0xac3298", + "logs": [ + { + "address": "0x498581ff718922c3f8e6a244956af099b2652b2b", + "topics": [ + "0xdd466e674ea557f56295e2d0218a125ea4b4f0f6f3307b95f85e6110838d6438", + "0x8ac0625a58745b0956142dae68f569e50df898facda78eca4ce47118e1c9ded3", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f8a2c39111fceb9c950aaf28a9e34ebad99b85c1" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e5e6d27252c090388968d86cf60000000000000000000000000000000000000000000000000000000000021b88", + "blockHash": "0x319d31bf1f90ec5b12885212cdb250e4181c69b749129cd1d8f5df1e19a602f9", + "blockNumber": "0x29b3cc8", + "blockTimestamp": "0x69c0d673", + "transactionHash": "0xf4287e02a5cbaed3b39fb3186abdcd43e6ceeffb488d66a61b11fd4fe849e099", + "transactionIndex": "0x29", + "logIndex": "0x16b", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000008000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022000000000000000000800000000000000000000000000000000000000000000004008000000000000000000000001000800000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000800000000000000000400000020000000000000000000000000000000000000000400000000000000000000000000", + "type": "0x2", + "transactionHash": "0xf4287e02a5cbaed3b39fb3186abdcd43e6ceeffb488d66a61b11fd4fe849e099", + "transactionIndex": "0x29", + "blockHash": "0x319d31bf1f90ec5b12885212cdb250e4181c69b749129cd1d8f5df1e19a602f9", + "blockNumber": "0x29b3cc8", + "gasUsed": "0xc9ec", + "effectiveGasPrice": "0x4c4b4a", + "blobGasUsed": "0x3878", + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": "0x498581ff718922c3f8e6a244956af099b2652b2b", + "contractAddress": null, + "daFootprintGasScalar": "0x8b", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x33835e", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x22fb1a34", + "l1GasPrice": "0x35b4b19", + "l1GasUsed": "0x68a" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x2822add", + "logs": [ + { + "address": "0xf8a2c39111fceb9c950aaf28a9e34ebad99b85c1", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "0x000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba3" + ], + "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "blockHash": "0x88e0b08e175d7015c30ee61111bb0a43496c7329cd592ff5e9d47b4df4e7cc68", + "blockNumber": "0x29b3cc9", + "blockTimestamp": "0x69c0d675", + "transactionHash": "0xab6bf4d54c206fe24484b76295d0f0e01b85f6849fc4f67b924b5f9650d09311", + "transactionIndex": "0x7f", + "logIndex": "0x31f", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000004000000000800000000000000000200000000000000000000000005000000000000000000000000800000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000200000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xab6bf4d54c206fe24484b76295d0f0e01b85f6849fc4f67b924b5f9650d09311", + "transactionIndex": "0x7f", + "blockHash": "0x88e0b08e175d7015c30ee61111bb0a43496c7329cd592ff5e9d47b4df4e7cc68", + "blockNumber": "0x29b3cc9", + "gasUsed": "0xc064", + "effectiveGasPrice": "0x4c4b4a", + "blobGasUsed": "0x364c", + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": "0xf8a2c39111fceb9c950aaf28a9e34ebad99b85c1", + "contractAddress": null, + "daFootprintGasScalar": "0x8b", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x33835e", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x216e243b", + "l1GasPrice": "0x35b4b19", + "l1GasUsed": "0x640" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xd304ba", + "logs": [ + { + "address": "0x000000000022d473030f116ddee9f6b43ac78ba3", + "topics": [ + "0xda9fa7c1b00402c17d0161b249b1ab8bbec047c5a52207b9c112deffd817036b", + "0x000000000000000000000000017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "0x000000000000000000000000f8a2c39111fceb9c950aaf28a9e34ebad99b85c1", + "0x0000000000000000000000007c5f5a4bbd8fd63184577525326123b519429bdc" + ], + "data": "0x000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000ffffffffffff", + "blockHash": "0xf947605ce9842ddf9616e7e1698c66546b3210715c828fddc07052d6ff03b862", + "blockNumber": "0x29b3ccb", + "blockTimestamp": "0x69c0d679", + "transactionHash": "0xaf6715c9041ccc39e3e9e87c44ae8b61d78dd366f5be06a6f43e3bd442f18c1e", + "transactionIndex": "0x39", + "logIndex": "0x1c1", + "removed": false + } + ], + "logsBloom": "0x00010000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000082000000000000000000000000000000000000000000000000000000000000000000200000000002000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000880000000200000000000080000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000002000000000000000000400", + "type": "0x2", + "transactionHash": "0xaf6715c9041ccc39e3e9e87c44ae8b61d78dd366f5be06a6f43e3bd442f18c1e", + "transactionIndex": "0x39", + "blockHash": "0xf947605ce9842ddf9616e7e1698c66546b3210715c828fddc07052d6ff03b862", + "blockNumber": "0x29b3ccb", + "gasUsed": "0xbaca", + "effectiveGasPrice": "0x4c4b4a", + "blobGasUsed": "0x3bba", + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": "0x000000000022d473030f116ddee9f6b43ac78ba3", + "contractAddress": null, + "daFootprintGasScalar": "0x8b", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x33835e", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x24f0396e", + "l1GasPrice": "0x35b4b19", + "l1GasUsed": "0x6e7" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x151c56a", + "logs": [ + { + "address": "0x7c5f5a4bbd8fd63184577525326123b519429bdc", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "0x00000000000000000000000000000000000000000000000000000000001fb95f" + ], + "data": "0x", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x29b3ccd", + "blockTimestamp": "0x69c0d67d", + "transactionHash": "0x94f7a2c0292183d5468ea8ec50d3da6f27c56654a089071ba138efc1546c3bb6", + "transactionIndex": "0x40", + "logIndex": "0x231", + "removed": false + }, + { + "address": "0x498581ff718922c3f8e6a244956af099b2652b2b", + "topics": [ + "0xf208f4912782fd25c7f114ca3723a2d5dd6f3bcc3ac8db5af63baa85f711d5ec", + "0x8ac0625a58745b0956142dae68f569e50df898facda78eca4ce47118e1c9ded3", + "0x0000000000000000000000007c5f5a4bbd8fd63184577525326123b519429bdc" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000002041800000000000000000000000000000000000000000000000000000000000232f8000000000000000000000000000000000000000000000000356f3e7fecaf6b1400000000000000000000000000000000000000000000000000000000001fb95f", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x29b3ccd", + "blockTimestamp": "0x69c0d67d", + "transactionHash": "0x94f7a2c0292183d5468ea8ec50d3da6f27c56654a089071ba138efc1546c3bb6", + "transactionIndex": "0x40", + "logIndex": "0x232", + "removed": false + }, + { + "address": "0xf8a2c39111fceb9c950aaf28a9e34ebad99b85c1", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "0x000000000000000000000000498581ff718922c3f8e6a244956af099b2652b2b" + ], + "data": "0x000000000000000000000000000000000000000000000035fb9ba37f2e1ef8a8", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x29b3ccd", + "blockTimestamp": "0x69c0d67d", + "transactionHash": "0x94f7a2c0292183d5468ea8ec50d3da6f27c56654a089071ba138efc1546c3bb6", + "transactionIndex": "0x40", + "logIndex": "0x233", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000040000000000000000000040000000028000000080000000000000000004000000000000000000000000000002000000000000000000000001008000000000000000000000000000000000000000200000000020000000000000000000800040000000000000000000010000000000000000001004000000000000000000000000000000000000000000400000000004004000000000008000000000000000000000000000000000000800000000200000002000801000000000000000000200800000000000000000400000020000000000000000000000000000000000004020400002000000000000000000000", + "type": "0x2", + "transactionHash": "0x94f7a2c0292183d5468ea8ec50d3da6f27c56654a089071ba138efc1546c3bb6", + "transactionIndex": "0x40", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x29b3ccd", + "gasUsed": "0x5a888", + "effectiveGasPrice": "0x4c4b4a", + "blobGasUsed": "0x847c", + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": "0x7c5f5a4bbd8fd63184577525326123b519429bdc", + "contractAddress": null, + "daFootprintGasScalar": "0x8b", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x33835e", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x216e243b", + "l1GasPrice": "0x35b4b19", + "l1GasUsed": "0xf45" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1774245499757, + "chain": 8453, + "commit": "be779c0" +} \ No newline at end of file diff --git a/broadcast/DeployZapPlotLinkV2.s.sol/8453/run-1774245408357.json b/broadcast/DeployZapPlotLinkV2.s.sol/8453/run-1774245408357.json new file mode 100644 index 0000000..89fe86a --- /dev/null +++ b/broadcast/DeployZapPlotLinkV2.s.sol/8453/run-1774245408357.json @@ -0,0 +1,154 @@ +{ + "transactions": [ + { + "hash": "0x58fdddf8446d2232f840fffef66290b5837a93842ca376293fb3a62cc7359893", + "transactionType": "CREATE", + "contractName": "ZapPlotLinkV2", + "contractAddress": "0x169ff7ca6db8e73c5af5423f2a5d3920d1133c3e", + "function": null, + "arguments": [ + "0xF8A2C39111FCEB9C950aAf28A9E34EBaD99b85C1" + ], + "transaction": { + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "gas": "0x60bb65", + "value": "0x0", + "input": "0x6080604052610bb85f5f6101000a81548162ffffff021916908362ffffff160217905550603c5f60036101000a81548162ffffff021916908360020b62ffffff1602179055506101f45f60066101000a81548162ffffff021916908362ffffff160217905550600a5f60096101000a81548162ffffff021916908360020b62ffffff160217905550348015610092575f5ffd5b50604051615a70380380615a7083398181016040528101906100b4919061065f565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610119576040517f644865b000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b335f600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b373c5a076cad94176c2996b32d8466be1ce757faa277fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016102089291906106b1565b6020604051808303815f875af1158015610224573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610248919061070d565b508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b373492c412369db76c9cdd9939e6c521579301473a37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016102b89291906106b1565b6020604051808303815f875af11580156102d4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102f8919061070d565b507337f0c2915cecc7e977183b8543fc0864d03e064c73ffffffffffffffffffffffffffffffffffffffff1663095ea7b373c5a076cad94176c2996b32d8466be1ce757faa277fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161037c9291906106b1565b6020604051808303815f875af1158015610398573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103bc919061070d565b507337f0c2915cecc7e977183b8543fc0864d03e064c73ffffffffffffffffffffffffffffffffffffffff1663095ea7b373492c412369db76c9cdd9939e6c521579301473a37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016104409291906106b1565b6020604051808303815f875af115801561045c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610480919061070d565b506104a473833589fcd6edb6e08f4c7c32d4f71b54bda029136104aa60201b60201c565b506107aa565b8073ffffffffffffffffffffffffffffffffffffffff1663095ea7b36e22d473030f116ddee9f6b43ac78ba37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016105149291906106b1565b6020604051808303815f875af1158015610530573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610554919061070d565b506e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff166387517c4582736ff5693b99212da76ad316178a184ab56d299b4373ffffffffffffffffffffffffffffffffffffffff65ffffffffffff6040518563ffffffff1660e01b81526004016105d19493929190610767565b5f604051808303815f87803b1580156105e8575f5ffd5b505af11580156105fa573d5f5f3e3d5ffd5b5050505050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61062e82610605565b9050919050565b61063e81610624565b8114610648575f5ffd5b50565b5f8151905061065981610635565b92915050565b5f6020828403121561067457610673610601565b5b5f6106818482850161064b565b91505092915050565b61069381610624565b82525050565b5f819050919050565b6106ab81610699565b82525050565b5f6040820190506106c45f83018561068a565b6106d160208301846106a2565b9392505050565b5f8115159050919050565b6106ec816106d8565b81146106f6575f5ffd5b50565b5f81519050610707816106e3565b92915050565b5f6020828403121561072257610721610601565b5b5f61072f848285016106f9565b91505092915050565b61074181610605565b82525050565b5f65ffffffffffff82169050919050565b61076181610747565b82525050565b5f60808201905061077a5f83018761068a565b610787602083018661068a565b6107946040830185610738565b6107a16060830184610758565b95945050505050565b6152b9806107b75f395ff3fe60806040526004361061014e575f3560e01c8063a734f06e116100b5578063cdad4fae1161006e578063cdad4fae14610464578063cea9d26f1461048e578063cefa8922146104b6578063d87e4bd1146104e0578063e8dd7fc31461051d578063f2fde38b1461054757610155565b8063a734f06e14610366578063b3f1c93d14610390578063b7d1abbc146103c0578063b9703ded146103e8578063c1c1d21814610412578063cb7588241461043c57610155565b80636afdd850116101075780636afdd850146102645780637164cf9b1461028e578063814ac84f146102b857806389a30271146102e85780638da5cb5b146103125780638dae88c21461033c57610155565b806301c2553a1461015957806304824e7014610196578063089fe6aa146101be578063161a226e146101e857806350ecabab14610212578063543b67101461023a57610155565b3661015557005b5f5ffd5b348015610164575f5ffd5b5061017f600480360381019061017a9190614209565b61056f565b60405161018d929190614268565b60405180910390f35b3480156101a1575f5ffd5b506101bc60048036038101906101b791906142ca565b6108ec565b005b3480156101c9575f5ffd5b506101d26109e7565b6040516101df9190614312565b60405180910390f35b3480156101f3575f5ffd5b506101fc6109fa565b604051610209919061433a565b60405180910390f35b34801561021d575f5ffd5b50610238600480360381019061023391906143b3565b610a1f565b005b348015610245575f5ffd5b5061024e610ae8565b60405161025b9190614400565b60405180910390f35b34801561026f575f5ffd5b50610278610afa565b604051610285919061433a565b60405180910390f35b348015610299575f5ffd5b506102a2610b0d565b6040516102af9190614400565b60405180910390f35b6102d260048036038101906102cd9190614419565b610b1f565b6040516102df919061447d565b60405180910390f35b3480156102f3575f5ffd5b506102fc610f2a565b604051610309919061433a565b60405180910390f35b34801561031d575f5ffd5b50610326610f42565b604051610333919061433a565b60405180910390f35b348015610347575f5ffd5b50610350610f67565b60405161035d91906144f1565b60405180910390f35b348015610371575f5ffd5b5061037a610f7f565b604051610387919061433a565b60405180910390f35b6103aa60048036038101906103a59190614419565b610f83565b6040516103b7919061447d565b60405180910390f35b3480156103cb575f5ffd5b506103e660048036038101906103e191906143b3565b61155f565b005b3480156103f3575f5ffd5b506103fc611627565b604051610409919061452a565b60405180910390f35b34801561041d575f5ffd5b5061042661163f565b6040516104339190614563565b60405180910390f35b348015610447575f5ffd5b50610462600480360381019061045d919061457c565b611657565b005b34801561046f575f5ffd5b50610478611a85565b6040516104859190614312565b60405180910390f35b348015610499575f5ffd5b506104b460048036038101906104af9190614209565b611a99565b005b3480156104c1575f5ffd5b506104ca611b4f565b6040516104d7919061433a565b60405180910390f35b3480156104eb575f5ffd5b5061050660048036038101906105019190614209565b611b67565b604051610514929190614268565b60405180910390f35b348015610528575f5ffd5b50610531611ee0565b60405161053e91906145c7565b60405180910390f35b348015610552575f5ffd5b5061056d6004803603810190610568919061457c565b611ef8565b005b5f5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036105cd57829050610850565b7337f0c2915cecc7e977183b8543fc0864d03e064c73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036106ce5773492c412369db76c9cdd9939e6c521579301473a373ffffffffffffffffffffffffffffffffffffffff1663fb55dbe160015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16855f6040518463ffffffff1660e01b8152600401610686939291906145fa565b6040805180830381865afa1580156106a0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106c49190614657565b508091505061084f565b73833589fcd6edb6e08f4c7c32d4f71b54bda0291373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036107b357730d5e0f971ed27fbff6c2837bf31316121532048d73ffffffffffffffffffffffffffffffffffffffff1663ca253dc961074e856120a6565b6040518263ffffffff1660e01b815260040161076a91906148f7565b60408051808303815f875af1158015610785573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107a99190614917565b508091505061084e565b730d5e0f971ed27fbff6c2837bf31316121532048d73ffffffffffffffffffffffffffffffffffffffff1663aa9d21cb6107ed87866122d0565b6040518263ffffffff1660e01b81526004016108099190614a2b565b60408051808303815f875af1158015610824573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108489190614917565b50809150505b5b5b73492c412369db76c9cdd9939e6c521579301473a373ffffffffffffffffffffffffffffffffffffffff1663fb55dbe185835f6040518463ffffffff1660e01b81526004016108a1939291906145fa565b6040805180830381865afa1580156108bb573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108df9190614657565b5080925050935093915050565b5f600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610972576040517f086a6b8600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8173ffffffffffffffffffffffffffffffffffffffff164760405161099790614a78565b5f6040518083038185875af1925050503d805f81146109d1576040519150601f19603f3d011682016040523d82523d5f602084013e6109d6565b606091505b50509050806109e3575f5ffd5b5050565b5f5f9054906101000a900462ffffff1681565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aa5576040517f086a6b8600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815f60066101000a81548162ffffff021916908362ffffff160217905550805f60096101000a81548162ffffff021916908360020b62ffffff1602179055505050565b5f60099054906101000a900460020b81565b6e22d473030f116ddee9f6b43ac78ba381565b5f60039054906101000a900460020b81565b5f5f8303610b59576040517ff4fb71d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603610c3d575f3414610be7576040517f6256698900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c3533308660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166123c5909392919063ffffffff16565b839050610dd1565b7337f0c2915cecc7e977183b8543fc0864d03e064c73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603610db9575f3414610cbd576040517f6256698900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610cfe3330867337f0c2915cecc7e977183b8543fc0864d03e064c73ffffffffffffffffffffffffffffffffffffffff166123c5909392919063ffffffff16565b73492c412369db76c9cdd9939e6c521579301473a373ffffffffffffffffffffffffffffffffffffffff16630144c5f360015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16865f306040518563ffffffff1660e01b8152600401610d729493929190614ac5565b6020604051808303815f875af1158015610d8e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610db29190614b08565b9050610dd0565b610dc3868561241a565b610dcd8685612574565b90505b5b73492c412369db76c9cdd9939e6c521579301473a373ffffffffffffffffffffffffffffffffffffffff16630144c5f3868386336040518563ffffffff1660e01b8152600401610e249493929190614b33565b6020604051808303815f875af1925050508015610e5f57506040513d601f19601f82011682018060405250810190610e5c9190614b08565b60015b610e95576040517f12c0f6d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80925050610ea161284b565b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f27830bca1834346b6287fed7ebd6791d80a5a6d4b190a1f8b01c09a07786a1a6858886604051610f1993929190614b76565b60405180910390a450949350505050565b73833589fcd6edb6e08f4c7c32d4f71b54bda0291381565b5f600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b730d5e0f971ed27fbff6c2837bf31316121532048d81565b5f81565b5f5f8303610fbd576040517ff4fb71d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73c5a076cad94176c2996b32d8466be1ce757faa2773ffffffffffffffffffffffffffffffffffffffff166376a9864b86866040518363ffffffff1660e01b815260040161100d929190614bab565b6040805180830381865afa158015611027573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061104b9190614917565b50905060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361116b575f34146110db576040517f6256698900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82811115611115576040517f12c0f6d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61116333308360015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166123c5909392919063ffffffff16565b809150611404565b7337f0c2915cecc7e977183b8543fc0864d03e064c73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036113d6575f34146111eb576040517f6256698900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73c5a076cad94176c2996b32d8466be1ce757faa2773ffffffffffffffffffffffffffffffffffffffff166376a9864b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b815260040161125c929190614bab565b6040805180830381865afa158015611276573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061129a9190614917565b509050838111156112d7576040517f12c0f6d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113183330837337f0c2915cecc7e977183b8543fc0864d03e064c73ffffffffffffffffffffffffffffffffffffffff166123c5909392919063ffffffff16565b73c5a076cad94176c2996b32d8466be1ce757faa2773ffffffffffffffffffffffffffffffffffffffff1663f74bfe8e60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168484306040518563ffffffff1660e01b815260040161138c9493929190614b33565b6020604051808303815f875af11580156113a8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113cc9190614b08565b5080925050611403565b6113e0868461241a565b6113eb86828561293f565b91506114028683856113fd9190614bff565b612c9b565b5b5b5f73c5a076cad94176c2996b32d8466be1ce757faa2773ffffffffffffffffffffffffffffffffffffffff1663f74bfe8e878785336040518563ffffffff1660e01b81526004016114589493929190614b33565b6020604051808303815f875af192505050801561149357506040513d601f19601f820116820180604052508101906114909190614b08565b60015b6114c9576040517f12c0f6d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b809150506114d561284b565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f3b90f0b1565b6e9dac462a873af5d46d5d6177d0096ddc2ddcf38de8ddb5d8fa88878660405161154d93929190614b76565b60405180910390a45050949350505050565b5f600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115e5576040517f086a6b8600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815f5f6101000a81548162ffffff021916908362ffffff160217905550805f60036101000a81548162ffffff021916908360020b62ffffff1602179055505050565b73492c412369db76c9cdd9939e6c521579301473a381565b73c5a076cad94176c2996b32d8466be1ce757faa2781565b5f600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116dd576040517f086a6b8600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611742576040517f644865b000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b373c5a076cad94176c2996b32d8466be1ce757faa275f6040518363ffffffff1660e01b81526004016117b6929190614c32565b6020604051808303815f875af11580156117d2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117f69190614c83565b508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b373492c412369db76c9cdd9939e6c521579301473a35f6040518363ffffffff1660e01b8152600401611846929190614c32565b6020604051808303815f875af1158015611862573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118869190614c83565b508160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff1663095ea7b373c5a076cad94176c2996b32d8466be1ce757faa277fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611936929190614bab565b6020604051808303815f875af1158015611952573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119769190614c83565b508173ffffffffffffffffffffffffffffffffffffffff1663095ea7b373492c412369db76c9cdd9939e6c521579301473a37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016119e6929190614bab565b6020604051808303815f875af1158015611a02573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a269190614c83565b508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f5a1a9bb5f826487cf43e61548d79ffa19cc00e1a554bd9962825f51fa9c767d160405160405180910390a35050565b5f60069054906101000a900462ffffff1681565b5f600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b1f576040517f086a6b8600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b4a82828573ffffffffffffffffffffffffffffffffffffffff16612db59092919063ffffffff16565b505050565b7337f0c2915cecc7e977183b8543fc0864d03e064c81565b5f5f73c5a076cad94176c2996b32d8466be1ce757faa2773ffffffffffffffffffffffffffffffffffffffff166376a9864b85856040518363ffffffff1660e01b8152600401611bb8929190614bab565b6040805180830381865afa158015611bd2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bf69190614917565b508091505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611c5757809150611ed8565b7337f0c2915cecc7e977183b8543fc0864d03e064c73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611d565773c5a076cad94176c2996b32d8466be1ce757faa2773ffffffffffffffffffffffffffffffffffffffff166376a9864b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611d0e929190614bab565b6040805180830381865afa158015611d28573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d4c9190614917565b5080925050611ed7565b73833589fcd6edb6e08f4c7c32d4f71b54bda0291373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611e3b57730d5e0f971ed27fbff6c2837bf31316121532048d73ffffffffffffffffffffffffffffffffffffffff1663147d2af9611dd683612e08565b6040518263ffffffff1660e01b8152600401611df291906148f7565b60408051808303815f875af1158015611e0d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e319190614917565b5080925050611ed6565b730d5e0f971ed27fbff6c2837bf31316121532048d73ffffffffffffffffffffffffffffffffffffffff166358733073611e7587846122d0565b6040518263ffffffff1660e01b8152600401611e919190614a2b565b60408051808303815f875af1158015611eac573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ed09190614917565b50809250505b5b5b935093915050565b736ff5693b99212da76ad316178a184ab56d299b4381565b5f600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f7e576040517f086a6b8600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611fe3576040517f644865b000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6120ae61401e565b5f600267ffffffffffffffff8111156120ca576120c9614cae565b5b60405190808252806020026020018201604052801561210357816020015b6120f0614065565b8152602001906001900390816120e85790505b5090506040518060a001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f60069054906101000a900462ffffff1662ffffff1681526020015f60099054906101000a900460020b60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052805f815250815250815f815181106121a05761219f614cdb565b5b60200260200101819052506040518060a0016040528060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020015f5f9054906101000a900462ffffff1662ffffff1681526020015f60039054906101000a900460020b60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052805f8152508152508160018151811061226657612265614cdb565b5b6020026020010181905250604051806060016040528073833589fcd6edb6e08f4c7c32d4f71b54bda0291373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001846fffffffffffffffffffffffffffffffff16815250915050919050565b6122d86140c4565b5f5f5f6122e486613032565b92509250925060405180608001604052806040518060a001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020015f5f9054906101000a900462ffffff1662ffffff1681526020015f60039054906101000a900460020b60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff1681525081526020018215158152602001866fffffffffffffffffffffffffffffffff16815260200160405180602001604052805f815250815250935050505092915050565b6123d3848484846001613150565b61241457836040517f5274afe700000000000000000000000000000000000000000000000000000000815260040161240b919061433a565b60405180910390fd5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361248b57803414612486576040517f6256698900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612570565b73833589fcd6edb6e08f4c7c32d4f71b54bda0291373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361253d575f341461250b576040517f6256698900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6125383330838573ffffffffffffffffffffffffffffffffffffffff166123c5909392919063ffffffff16565b61256f565b6040517f84e3aa1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5050565b5f5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016125d0919061433a565b602060405180830381865afa1580156125eb573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061260f9190614b08565b905073833589fcd6edb6e08f4c7c32d4f71b54bda0291373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361266657612661836131c1565b61279e565b5f5f5f61267287613032565b9250925092505f601060405160200161268b9190614d48565b60405160208183030381529060405290505f600167ffffffffffffffff8111156126b8576126b7614cae565b5b6040519080825280602002602001820160405280156126eb57816020015b60608152602001906001900390816126d65790505b5090506126fa8585858b61364c565b815f8151811061270d5761270c614cdb565b5b6020026020010181905250736ff5693b99212da76ad316178a184ab56d299b4373ffffffffffffffffffffffffffffffffffffffff16633593564c898484426040518563ffffffff1660e01b815260040161276a93929190614e65565b5f604051808303818588803b158015612781575f5ffd5b505af1158015612793573d5f5f3e3d5ffd5b505050505050505050505b8060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016127f9919061433a565b602060405180830381865afa158015612814573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128389190614b08565b6128429190614bff565b91505092915050565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016128a6919061433a565b602060405180830381865afa1580156128c1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128e59190614b08565b90505f81111561293c5761293b338260015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612db59092919063ffffffff16565b5b50565b5f5f5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146129f1578473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016129ad919061433a565b602060405180830381865afa1580156129c8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129ec9190614b08565b6129f3565b475b905073833589fcd6edb6e08f4c7c32d4f71b54bda0291373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612a4b57612a4684846138bd565b612bcf565b5f5f5f612a5788613032565b9250925092505f612a6b8484848b8b613d4a565b90505f60106004604051602001612a83929190614ea8565b60405160208183030381529060405290505f600267ffffffffffffffff811115612ab057612aaf614cae565b5b604051908082528060200260200182016040528015612ae357816020015b6060815260200190600190039081612ace5790505b50905082815f81518110612afa57612af9614cdb565b5b60200260200101819052505f305f604051602001612b1a93929190614f03565b60405160208183030381529060405281600181518110612b3d57612b3c614cdb565b5b6020026020010181905250736ff5693b99212da76ad316178a184ab56d299b4373ffffffffffffffffffffffffffffffffffffffff16633593564c8a8484426040518563ffffffff1660e01b8152600401612b9a93929190614e65565b5f604051808303818588803b158015612bb1575f5ffd5b505af1158015612bc3573d5f5f3e3d5ffd5b50505050505050505050505b5f5f73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614612c80578573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612c3c919061433a565b602060405180830381865afa158015612c57573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c7b9190614b08565b612c82565b475b90508082612c909190614bff565b925050509392505050565b5f810315612db1575f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d84575f3373ffffffffffffffffffffffffffffffffffffffff1682604051612cfb90614a78565b5f6040518083038185875af1925050503d805f8114612d35576040519150601f19603f3d011682016040523d82523d5f602084013e612d3a565b606091505b5050905080612d7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d7590614f92565b60405180910390fd5b50612db0565b612daf33828473ffffffffffffffffffffffffffffffffffffffff16612db59092919063ffffffff16565b5b5b5050565b612dc28383836001613fbc565b612e0357826040517f5274afe7000000000000000000000000000000000000000000000000000000008152600401612dfa919061433a565b60405180910390fd5b505050565b612e1061401e565b5f600267ffffffffffffffff811115612e2c57612e2b614cae565b5b604051908082528060200260200182016040528015612e6557816020015b612e52614065565b815260200190600190039081612e4a5790505b5090506040518060a001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f5f9054906101000a900462ffffff1662ffffff1681526020015f60039054906101000a900460020b60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052805f815250815250815f81518110612f0157612f00614cdb565b5b60200260200101819052506040518060a0016040528073833589fcd6edb6e08f4c7c32d4f71b54bda0291373ffffffffffffffffffffffffffffffffffffffff1681526020015f60069054906101000a900462ffffff1662ffffff1681526020015f60099054906101000a900460020b60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052805f81525081525081600181518110612fbb57612fba614cdb565b5b6020026020010181905250604051806060016040528060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001846fffffffffffffffffffffffffffffffff16815250915050919050565b5f5f5f5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603613098575f925060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915060019050613149565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16101561311d5783925060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915060019050613148565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1692508391505f90505b5b9193909250565b5f5f6323b872dd60e01b9050604051815f525f1960601c87166004525f1960601c86166024528460445260205f60645f5f8c5af1925060015f511483166131ae5783831516156131a2573d5f823e3d81fd5b5f883b113d1516831692505b806040525f606052505095945050505050565b5f5f600c600e6040516020016131d993929190614fb0565b60405160208183030381529060405290505f600367ffffffffffffffff81111561320657613205614cae565b5b60405190808252806020026020018201604052801561323957816020015b60608152602001906001900390816132245790505b5090505f600267ffffffffffffffff81111561325857613257614cae565b5b60405190808252806020026020018201604052801561329157816020015b61327e614065565b8152602001906001900390816132765790505b5090506040518060a001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f60069054906101000a900462ffffff1662ffffff1681526020015f60099054906101000a900460020b60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052805f815250815250815f8151811061332e5761332d614cdb565b5b60200260200101819052506040518060a0016040528060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020015f5f9054906101000a900462ffffff1662ffffff1681526020015f60039054906101000a900460020b60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052805f815250815250816001815181106133f4576133f3614cdb565b5b602002602001018190525073833589fcd6edb6e08f4c7c32d4f71b54bda0291381855f60405160200161342a949392919061507e565b604051602081830303815290604052825f8151811061344c5761344b614cdb565b5b602002602001018190525073833589fcd6edb6e08f4c7c32d4f71b54bda029138460405160200161347e9291906150c8565b604051602081830303815290604052826001815181106134a1576134a0614cdb565b5b602002602001018190525060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16305f6040516020016134e2939291906150ef565b6040516020818303038152906040528260028151811061350557613504614cdb565b5b60200260200101819052505f60106040516020016135239190614d48565b60405160208183030381529060405290505f600167ffffffffffffffff8111156135505761354f614cae565b5b60405190808252806020026020018201604052801561358357816020015b606081526020019060019003908161356e5790505b5090508484604051602001613599929190615124565b604051602081830303815290604052815f815181106135bb576135ba614cdb565b5b6020026020010181905250736ff5693b99212da76ad316178a184ab56d299b4373ffffffffffffffffffffffffffffffffffffffff16633593564c8383426040518463ffffffff1660e01b815260040161361793929190614e65565b5f604051808303815f87803b15801561362e575f5ffd5b505af1158015613640573d5f5f3e3d5ffd5b50505050505050505050565b60605f6006600c600e60405160200161366793929190614fb0565b60405160208183030381529060405290505f600367ffffffffffffffff81111561369457613693614cae565b5b6040519080825280602002602001820160405280156136c757816020015b60608152602001906001900390816136b25790505b5090505f6040518060a001604052808973ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1681526020015f5f9054906101000a900462ffffff1662ffffff1681526020015f60039054906101000a900460020b60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff1681525090505f5f8761376957888a61376c565b89895b915091506040518060a001604052808481526020018915158152602001886fffffffffffffffffffffffffffffffff1681526020015f6fffffffffffffffffffffffffffffffff16815260200160405180602001604052805f8152508152506040516020016137db91906151ce565b604051602081830303815290604052845f815181106137fd576137fc614cdb565b5b6020026020010181905250818760405160200161381b9291906150c8565b6040516020818303038152906040528460018151811061383e5761383d614cdb565b5b602002602001018190525080305f60405160200161385e939291906150ef565b6040516020818303038152906040528460028151811061388157613880614cdb565b5b6020026020010181905250848460405160200161389f929190615124565b60405160208183030381529060405295505050505050949350505050565b5f6001600c600e6040516020016138d693929190614fb0565b60405160208183030381529060405290505f600367ffffffffffffffff81111561390357613902614cae565b5b60405190808252806020026020018201604052801561393657816020015b60608152602001906001900390816139215790505b5090505f600267ffffffffffffffff81111561395557613954614cae565b5b60405190808252806020026020018201604052801561398e57816020015b61397b614065565b8152602001906001900390816139735790505b5090506040518060a001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f5f9054906101000a900462ffffff1662ffffff1681526020015f60039054906101000a900460020b60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052805f815250815250815f81518110613a2a57613a29614cdb565b5b60200260200101819052506040518060a0016040528073833589fcd6edb6e08f4c7c32d4f71b54bda0291373ffffffffffffffffffffffffffffffffffffffff1681526020015f60069054906101000a900462ffffff1662ffffff1681526020015f60099054906101000a900460020b60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052805f81525081525081600181518110613ae457613ae3614cdb565b5b602002602001018190525060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16818686604051602001613b27949392919061507e565b604051602081830303815290604052825f81518110613b4957613b48614cdb565b5b602002602001018190525073833589fcd6edb6e08f4c7c32d4f71b54bda0291384604051602001613b7b9291906150c8565b60405160208183030381529060405282600181518110613b9e57613b9d614cdb565b5b602002602001018190525060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16305f604051602001613bdf939291906150ef565b60405160208183030381529060405282600281518110613c0257613c01614cdb565b5b60200260200101819052505f6010604051602001613c209190614d48565b60405160208183030381529060405290505f600167ffffffffffffffff811115613c4d57613c4c614cae565b5b604051908082528060200260200182016040528015613c8057816020015b6060815260200190600190039081613c6b5790505b5090508484604051602001613c96929190615124565b604051602081830303815290604052815f81518110613cb857613cb7614cdb565b5b6020026020010181905250736ff5693b99212da76ad316178a184ab56d299b4373ffffffffffffffffffffffffffffffffffffffff16633593564c8383426040518463ffffffff1660e01b8152600401613d1493929190614e65565b5f604051808303815f87803b158015613d2b575f5ffd5b505af1158015613d3d573d5f5f3e3d5ffd5b5050505050505050505050565b60605f6008600c600e604051602001613d6593929190614fb0565b60405160208183030381529060405290505f600367ffffffffffffffff811115613d9257613d91614cae565b5b604051908082528060200260200182016040528015613dc557816020015b6060815260200190600190039081613db05790505b5090505f6040518060a001604052808a73ffffffffffffffffffffffffffffffffffffffff1681526020018973ffffffffffffffffffffffffffffffffffffffff1681526020015f5f9054906101000a900462ffffff1662ffffff1681526020015f60039054906101000a900460020b60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff1681525090505f5f88613e6757898b613e6a565b8a8a5b915091506040518060a001604052808481526020018a15158152602001896fffffffffffffffffffffffffffffffff168152602001886fffffffffffffffffffffffffffffffff16815260200160405180602001604052805f815250815250604051602001613ed99190615263565b604051602081830303815290604052845f81518110613efb57613efa614cdb565b5b60200260200101819052508187604051602001613f199291906150c8565b60405160208183030381529060405284600181518110613f3c57613f3b614cdb565b5b602002602001018190525080305f604051602001613f5c939291906150ef565b60405160208183030381529060405284600281518110613f7f57613f7e614cdb565b5b60200260200101819052508484604051602001613f9d929190615124565b6040516020818303038152906040529550505050505095945050505050565b5f5f63a9059cbb60e01b9050604051815f525f1960601c86166004528460245260205f60445f5f8b5af1925060015f51148316614010578383151615614004573d5f823e3d81fd5b5f873b113d1516831692505b806040525050949350505050565b60405180606001604052805f73ffffffffffffffffffffffffffffffffffffffff168152602001606081526020015f6fffffffffffffffffffffffffffffffff1681525090565b6040518060a001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f62ffffff1681526020015f60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b60405180608001604052806140d7614104565b81526020015f151581526020015f6fffffffffffffffffffffffffffffffff168152602001606081525090565b6040518060a001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f62ffffff1681526020015f60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff1681525090565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6141a58261417c565b9050919050565b6141b58161419b565b81146141bf575f5ffd5b50565b5f813590506141d0816141ac565b92915050565b5f819050919050565b6141e8816141d6565b81146141f2575f5ffd5b50565b5f81359050614203816141df565b92915050565b5f5f5f606084860312156142205761421f614178565b5b5f61422d868287016141c2565b935050602061423e868287016141c2565b925050604061424f868287016141f5565b9150509250925092565b614262816141d6565b82525050565b5f60408201905061427b5f830185614259565b6142886020830184614259565b9392505050565b5f6142998261417c565b9050919050565b6142a98161428f565b81146142b3575f5ffd5b50565b5f813590506142c4816142a0565b92915050565b5f602082840312156142df576142de614178565b5b5f6142ec848285016142b6565b91505092915050565b5f62ffffff82169050919050565b61430c816142f5565b82525050565b5f6020820190506143255f830184614303565b92915050565b6143348161419b565b82525050565b5f60208201905061434d5f83018461432b565b92915050565b61435c816142f5565b8114614366575f5ffd5b50565b5f8135905061437781614353565b92915050565b5f8160020b9050919050565b6143928161437d565b811461439c575f5ffd5b50565b5f813590506143ad81614389565b92915050565b5f5f604083850312156143c9576143c8614178565b5b5f6143d685828601614369565b92505060206143e78582860161439f565b9150509250929050565b6143fa8161437d565b82525050565b5f6020820190506144135f8301846143f1565b92915050565b5f5f5f5f6080858703121561443157614430614178565b5b5f61443e878288016141c2565b945050602061444f878288016141c2565b9350506040614460878288016141f5565b9250506060614471878288016141f5565b91505092959194509250565b5f6020820190506144905f830184614259565b92915050565b5f819050919050565b5f6144b96144b46144af8461417c565b614496565b61417c565b9050919050565b5f6144ca8261449f565b9050919050565b5f6144db826144c0565b9050919050565b6144eb816144d1565b82525050565b5f6020820190506145045f8301846144e2565b92915050565b5f614514826144c0565b9050919050565b6145248161450a565b82525050565b5f60208201905061453d5f83018461451b565b92915050565b5f61454d826144c0565b9050919050565b61455d81614543565b82525050565b5f6020820190506145765f830184614554565b92915050565b5f6020828403121561459157614590614178565b5b5f61459e848285016141c2565b91505092915050565b5f6145b1826144c0565b9050919050565b6145c1816145a7565b82525050565b5f6020820190506145da5f8301846145b8565b92915050565b5f8115159050919050565b6145f4816145e0565b82525050565b5f60608201905061460d5f83018661432b565b61461a6020830185614259565b61462760408301846145eb565b949350505050565b5f8151905061463d816141df565b92915050565b5f81519050614651816141ac565b92915050565b5f5f6040838503121561466d5761466c614178565b5b5f61467a8582860161462f565b925050602061468b85828601614643565b9150509250929050565b61469e8161419b565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6146d6816142f5565b82525050565b6146e58161437d565b82525050565b5f6146f5826144c0565b9050919050565b614705816146eb565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61474d8261470b565b6147578185614715565b9350614767818560208601614725565b61477081614733565b840191505092915050565b5f60a083015f8301516147905f860182614695565b5060208301516147a360208601826146cd565b5060408301516147b660408601826146dc565b5060608301516147c960608601826146fc565b50608083015184820360808601526147e18282614743565b9150508091505092915050565b5f6147f9838361477b565b905092915050565b5f602082019050919050565b5f614817826146a4565b61482181856146ae565b935083602082028501614833856146be565b805f5b8581101561486e578484038952815161484f85826147ee565b945061485a83614801565b925060208a01995050600181019050614836565b50829750879550505050505092915050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b6148a481614880565b82525050565b5f606083015f8301516148bf5f860182614695565b50602083015184820360208601526148d7828261480d565b91505060408301516148ec604086018261489b565b508091505092915050565b5f6020820190508181035f83015261490f81846148aa565b905092915050565b5f5f6040838503121561492d5761492c614178565b5b5f61493a8582860161462f565b925050602061494b8582860161462f565b9150509250929050565b60a082015f8201516149695f850182614695565b50602082015161497c6020850182614695565b50604082015161498f60408501826146cd565b5060608201516149a260608501826146dc565b5060808201516149b560808501826146fc565b50505050565b6149c4816145e0565b82525050565b5f61010083015f8301516149e05f860182614955565b5060208301516149f360a08601826149bb565b506040830151614a0660c086018261489b565b50606083015184820360e0860152614a1e8282614743565b9150508091505092915050565b5f6020820190508181035f830152614a4381846149ca565b905092915050565b5f81905092915050565b50565b5f614a635f83614a4b565b9150614a6e82614a55565b5f82019050919050565b5f614a8282614a58565b9150819050919050565b5f819050919050565b5f614aaf614aaa614aa584614a8c565b614496565b6141d6565b9050919050565b614abf81614a95565b82525050565b5f608082019050614ad85f83018761432b565b614ae56020830186614259565b614af26040830185614ab6565b614aff606083018461432b565b95945050505050565b5f60208284031215614b1d57614b1c614178565b5b5f614b2a8482850161462f565b91505092915050565b5f608082019050614b465f83018761432b565b614b536020830186614259565b614b606040830185614259565b614b6d606083018461432b565b95945050505050565b5f606082019050614b895f830186614259565b614b966020830185614259565b614ba36040830184614259565b949350505050565b5f604082019050614bbe5f83018561432b565b614bcb6020830184614259565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f614c09826141d6565b9150614c14836141d6565b9250828203905081811115614c2c57614c2b614bd2565b5b92915050565b5f604082019050614c455f83018561432b565b614c526020830184614ab6565b9392505050565b614c62816145e0565b8114614c6c575f5ffd5b50565b5f81519050614c7d81614c59565b92915050565b5f60208284031215614c9857614c97614178565b5b5f614ca584828501614c6f565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60ff82169050919050565b5f8160f81b9050919050565b5f614d2a82614d14565b9050919050565b614d42614d3d82614d08565b614d20565b82525050565b5f614d538284614d31565b60018201915081905092915050565b5f82825260208201905092915050565b5f614d7c8261470b565b614d868185614d62565b9350614d96818560208601614725565b614d9f81614733565b840191505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f614dde8383614743565b905092915050565b5f602082019050919050565b5f614dfc82614daa565b614e068185614db4565b935083602082028501614e1885614dc4565b805f5b85811015614e535784840389528151614e348582614dd3565b9450614e3f83614de6565b925060208a01995050600181019050614e1b565b50829750879550505050505092915050565b5f6060820190508181035f830152614e7d8186614d72565b90508181036020830152614e918185614df2565b9050614ea06040830184614259565b949350505050565b5f614eb38285614d31565b600182019150614ec38284614d31565b6001820191508190509392505050565b5f614eed614ee8614ee384614a8c565b614496565b614d08565b9050919050565b614efd81614ed3565b82525050565b5f606082019050614f165f83018661432b565b614f23602083018561432b565b614f306040830184614ef4565b949350505050565b5f82825260208201905092915050565b7f45544820726566756e64206661696c65640000000000000000000000000000005f82015250565b5f614f7c601183614f38565b9150614f8782614f48565b602082019050919050565b5f6020820190508181035f830152614fa981614f70565b9050919050565b5f614fbb8286614d31565b600182019150614fcb8285614d31565b600182019150614fdb8284614d31565b600182019150819050949350505050565b5f82825260208201905092915050565b5f615006826146a4565b6150108185614fec565b935083602082028501615022856146be565b805f5b8581101561505d578484038952815161503e85826147ee565b945061504983614801565b925060208a01995050600181019050615025565b50829750879550505050505092915050565b61507881614880565b82525050565b5f6080820190506150915f83018761432b565b81810360208301526150a38186614ffc565b90506150b2604083018561506f565b6150bf606083018461506f565b95945050505050565b5f6040820190506150db5f83018561432b565b6150e8602083018461506f565b9392505050565b5f6060820190506151025f83018661432b565b61510f602083018561432b565b61511c6040830184614259565b949350505050565b5f6040820190508181035f83015261513c8185614d72565b905081810360208301526151508184614df2565b90509392505050565b5f61012083015f83015161516f5f860182614955565b50602083015161518260a08601826149bb565b50604083015161519560c086018261489b565b5060608301516151a860e086018261489b565b5060808301518482036101008601526151c18282614743565b9150508091505092915050565b5f6020820190508181035f8301526151e68184615159565b905092915050565b5f61012083015f8301516152045f860182614955565b50602083015161521760a08601826149bb565b50604083015161522a60c086018261489b565b50606083015161523d60e086018261489b565b5060808301518482036101008601526152568282614743565b9150508091505092915050565b5f6020820190508181035f83015261527b81846151ee565b90509291505056fea2646970667358221220685ae35db040c15f8d3551eccdec32e8b87a99c7081196dadd0914b0fbedc79664736f6c634300081c0033000000000000000000000000f8a2c39111fceb9c950aaf28a9e34ebad99b85c1", + "nonce": "0x1b4", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x2725cb6", + "logs": [ + { + "address": "0xf8a2c39111fceb9c950aaf28a9e34ebad99b85c1", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000169ff7ca6db8e73c5af5423f2a5d3920d1133c3e", + "0x000000000000000000000000c5a076cad94176c2996b32d8466be1ce757faa27" + ], + "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x29b3c97", + "blockTimestamp": "0x69c0d611", + "transactionHash": "0x58fdddf8446d2232f840fffef66290b5837a93842ca376293fb3a62cc7359893", + "transactionIndex": "0x94", + "logIndex": "0x2a2", + "removed": false + }, + { + "address": "0xf8a2c39111fceb9c950aaf28a9e34ebad99b85c1", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000169ff7ca6db8e73c5af5423f2a5d3920d1133c3e", + "0x000000000000000000000000492c412369db76c9cdd9939e6c521579301473a3" + ], + "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x29b3c97", + "blockTimestamp": "0x69c0d611", + "transactionHash": "0x58fdddf8446d2232f840fffef66290b5837a93842ca376293fb3a62cc7359893", + "transactionIndex": "0x94", + "logIndex": "0x2a3", + "removed": false + }, + { + "address": "0x37f0c2915cecc7e977183b8543fc0864d03e064c", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000169ff7ca6db8e73c5af5423f2a5d3920d1133c3e", + "0x000000000000000000000000c5a076cad94176c2996b32d8466be1ce757faa27" + ], + "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x29b3c97", + "blockTimestamp": "0x69c0d611", + "transactionHash": "0x58fdddf8446d2232f840fffef66290b5837a93842ca376293fb3a62cc7359893", + "transactionIndex": "0x94", + "logIndex": "0x2a4", + "removed": false + }, + { + "address": "0x37f0c2915cecc7e977183b8543fc0864d03e064c", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000169ff7ca6db8e73c5af5423f2a5d3920d1133c3e", + "0x000000000000000000000000492c412369db76c9cdd9939e6c521579301473a3" + ], + "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x29b3c97", + "blockTimestamp": "0x69c0d611", + "transactionHash": "0x58fdddf8446d2232f840fffef66290b5837a93842ca376293fb3a62cc7359893", + "transactionIndex": "0x94", + "logIndex": "0x2a5", + "removed": false + }, + { + "address": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000169ff7ca6db8e73c5af5423f2a5d3920d1133c3e", + "0x000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba3" + ], + "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x29b3c97", + "blockTimestamp": "0x69c0d611", + "transactionHash": "0x58fdddf8446d2232f840fffef66290b5837a93842ca376293fb3a62cc7359893", + "transactionIndex": "0x94", + "logIndex": "0x2a6", + "removed": false + }, + { + "address": "0x000000000022d473030f116ddee9f6b43ac78ba3", + "topics": [ + "0xda9fa7c1b00402c17d0161b249b1ab8bbec047c5a52207b9c112deffd817036b", + "0x000000000000000000000000169ff7ca6db8e73c5af5423f2a5d3920d1133c3e", + "0x000000000000000000000000833589fcd6edb6e08f4c7c32d4f71b54bda02913", + "0x0000000000000000000000006ff5693b99212da76ad316178a184ab56d299b43" + ], + "data": "0x000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000ffffffffffff", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x29b3c97", + "blockTimestamp": "0x69c0d611", + "transactionHash": "0x58fdddf8446d2232f840fffef66290b5837a93842ca376293fb3a62cc7359893", + "transactionIndex": "0x94", + "logIndex": "0x2a7", + "removed": false + } + ], + "logsBloom": "0x00010000000000020000000000000000000000000000000000000000000000000000000000000000000000000000104000000000800000000000100000280000000000000000040000005000000000000000000000080800000000000000000000800000000000000080000000000000010000800000000000000000000040000020000000000000400000000000000000000000000000000000000000000000020000000000000000000000800000081000000000100000000000080000000000000000000000000000000000000000200000000000000040020000040000000010000000000000000000000000040000000000000000000280000001000400", + "type": "0x2", + "transactionHash": "0x58fdddf8446d2232f840fffef66290b5837a93842ca376293fb3a62cc7359893", + "transactionIndex": "0x94", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x29b3c97", + "gasUsed": "0x4a68c4", + "effectiveGasPrice": "0x4c55c2", + "blobGasUsed": "0xfcc93", + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": null, + "contractAddress": "0x169ff7ca6db8e73c5af5423f2a5d3920d1133c3e", + "daFootprintGasScalar": "0x8b", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x2c3106", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x229d8f3d", + "l1GasPrice": "0x33bfc4c", + "l1GasUsed": "0x1d19f" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1774245408357, + "chain": 8453, + "commit": "4d761ad" +} \ No newline at end of file diff --git a/broadcast/DeployZapPlotLinkV2.s.sol/8453/run-1774245808150.json b/broadcast/DeployZapPlotLinkV2.s.sol/8453/run-1774245808150.json new file mode 100644 index 0000000..a72ff4c --- /dev/null +++ b/broadcast/DeployZapPlotLinkV2.s.sol/8453/run-1774245808150.json @@ -0,0 +1,154 @@ +{ + "transactions": [ + { + "hash": "0x8b5c3ade52dbceb3473a4a532c09a442f0dc63c10b95960f060fe8f4e09a1129", + "transactionType": "CREATE", + "contractName": "ZapPlotLinkV2", + "contractAddress": "0x7bc192848003ab1ba286c66afd0dd8a1729c6b02", + "function": null, + "arguments": [ + "0xF8A2C39111FCEB9C950aAf28A9E34EBaD99b85C1" + ], + "transaction": { + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "gas": "0x60bb74", + "value": "0x0", + "input": "0x6080604052610bb85f5f6101000a81548162ffffff021916908362ffffff160217905550603c5f60036101000a81548162ffffff021916908360020b62ffffff1602179055506101f45f60066101000a81548162ffffff021916908362ffffff160217905550600a5f60096101000a81548162ffffff021916908360020b62ffffff160217905550348015610092575f5ffd5b50604051615a70380380615a7083398181016040528101906100b4919061065f565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610119576040517f644865b000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b335f600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b373c5a076cad94176c2996b32d8466be1ce757faa277fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016102089291906106b1565b6020604051808303815f875af1158015610224573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610248919061070d565b508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b373492c412369db76c9cdd9939e6c521579301473a37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016102b89291906106b1565b6020604051808303815f875af11580156102d4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102f8919061070d565b507337f0c2915cecc7e977183b8543fc0864d03e064c73ffffffffffffffffffffffffffffffffffffffff1663095ea7b373c5a076cad94176c2996b32d8466be1ce757faa277fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161037c9291906106b1565b6020604051808303815f875af1158015610398573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103bc919061070d565b507337f0c2915cecc7e977183b8543fc0864d03e064c73ffffffffffffffffffffffffffffffffffffffff1663095ea7b373492c412369db76c9cdd9939e6c521579301473a37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016104409291906106b1565b6020604051808303815f875af115801561045c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610480919061070d565b506104a473833589fcd6edb6e08f4c7c32d4f71b54bda029136104aa60201b60201c565b506107aa565b8073ffffffffffffffffffffffffffffffffffffffff1663095ea7b36e22d473030f116ddee9f6b43ac78ba37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016105149291906106b1565b6020604051808303815f875af1158015610530573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610554919061070d565b506e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff166387517c4582736ff5693b99212da76ad316178a184ab56d299b4373ffffffffffffffffffffffffffffffffffffffff65ffffffffffff6040518563ffffffff1660e01b81526004016105d19493929190610767565b5f604051808303815f87803b1580156105e8575f5ffd5b505af11580156105fa573d5f5f3e3d5ffd5b5050505050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61062e82610605565b9050919050565b61063e81610624565b8114610648575f5ffd5b50565b5f8151905061065981610635565b92915050565b5f6020828403121561067457610673610601565b5b5f6106818482850161064b565b91505092915050565b61069381610624565b82525050565b5f819050919050565b6106ab81610699565b82525050565b5f6040820190506106c45f83018561068a565b6106d160208301846106a2565b9392505050565b5f8115159050919050565b6106ec816106d8565b81146106f6575f5ffd5b50565b5f81519050610707816106e3565b92915050565b5f6020828403121561072257610721610601565b5b5f61072f848285016106f9565b91505092915050565b61074181610605565b82525050565b5f65ffffffffffff82169050919050565b61076181610747565b82525050565b5f60808201905061077a5f83018761068a565b610787602083018661068a565b6107946040830185610738565b6107a16060830184610758565b95945050505050565b6152b9806107b75f395ff3fe60806040526004361061014e575f3560e01c8063a734f06e116100b5578063cdad4fae1161006e578063cdad4fae14610464578063cea9d26f1461048e578063cefa8922146104b6578063d87e4bd1146104e0578063e8dd7fc31461051d578063f2fde38b1461054757610155565b8063a734f06e14610366578063b3f1c93d14610390578063b7d1abbc146103c0578063b9703ded146103e8578063c1c1d21814610412578063cb7588241461043c57610155565b80636afdd850116101075780636afdd850146102645780637164cf9b1461028e578063814ac84f146102b857806389a30271146102e85780638da5cb5b146103125780638dae88c21461033c57610155565b806301c2553a1461015957806304824e7014610196578063089fe6aa146101be578063161a226e146101e857806350ecabab14610212578063543b67101461023a57610155565b3661015557005b5f5ffd5b348015610164575f5ffd5b5061017f600480360381019061017a9190614209565b61056f565b60405161018d929190614268565b60405180910390f35b3480156101a1575f5ffd5b506101bc60048036038101906101b791906142ca565b6108ec565b005b3480156101c9575f5ffd5b506101d26109e7565b6040516101df9190614312565b60405180910390f35b3480156101f3575f5ffd5b506101fc6109fa565b604051610209919061433a565b60405180910390f35b34801561021d575f5ffd5b50610238600480360381019061023391906143b3565b610a1f565b005b348015610245575f5ffd5b5061024e610ae8565b60405161025b9190614400565b60405180910390f35b34801561026f575f5ffd5b50610278610afa565b604051610285919061433a565b60405180910390f35b348015610299575f5ffd5b506102a2610b0d565b6040516102af9190614400565b60405180910390f35b6102d260048036038101906102cd9190614419565b610b1f565b6040516102df919061447d565b60405180910390f35b3480156102f3575f5ffd5b506102fc610f2a565b604051610309919061433a565b60405180910390f35b34801561031d575f5ffd5b50610326610f42565b604051610333919061433a565b60405180910390f35b348015610347575f5ffd5b50610350610f67565b60405161035d91906144f1565b60405180910390f35b348015610371575f5ffd5b5061037a610f7f565b604051610387919061433a565b60405180910390f35b6103aa60048036038101906103a59190614419565b610f83565b6040516103b7919061447d565b60405180910390f35b3480156103cb575f5ffd5b506103e660048036038101906103e191906143b3565b61155f565b005b3480156103f3575f5ffd5b506103fc611627565b604051610409919061452a565b60405180910390f35b34801561041d575f5ffd5b5061042661163f565b6040516104339190614563565b60405180910390f35b348015610447575f5ffd5b50610462600480360381019061045d919061457c565b611657565b005b34801561046f575f5ffd5b50610478611a85565b6040516104859190614312565b60405180910390f35b348015610499575f5ffd5b506104b460048036038101906104af9190614209565b611a99565b005b3480156104c1575f5ffd5b506104ca611b4f565b6040516104d7919061433a565b60405180910390f35b3480156104eb575f5ffd5b5061050660048036038101906105019190614209565b611b67565b604051610514929190614268565b60405180910390f35b348015610528575f5ffd5b50610531611ee0565b60405161053e91906145c7565b60405180910390f35b348015610552575f5ffd5b5061056d6004803603810190610568919061457c565b611ef8565b005b5f5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036105cd57829050610850565b7337f0c2915cecc7e977183b8543fc0864d03e064c73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036106ce5773492c412369db76c9cdd9939e6c521579301473a373ffffffffffffffffffffffffffffffffffffffff1663fb55dbe160015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16855f6040518463ffffffff1660e01b8152600401610686939291906145fa565b6040805180830381865afa1580156106a0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106c49190614657565b508091505061084f565b73833589fcd6edb6e08f4c7c32d4f71b54bda0291373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036107b357730d5e0f971ed27fbff6c2837bf31316121532048d73ffffffffffffffffffffffffffffffffffffffff1663ca253dc961074e856120a6565b6040518263ffffffff1660e01b815260040161076a91906148f7565b60408051808303815f875af1158015610785573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107a99190614917565b508091505061084e565b730d5e0f971ed27fbff6c2837bf31316121532048d73ffffffffffffffffffffffffffffffffffffffff1663aa9d21cb6107ed87866122d0565b6040518263ffffffff1660e01b81526004016108099190614a2b565b60408051808303815f875af1158015610824573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108489190614917565b50809150505b5b5b73492c412369db76c9cdd9939e6c521579301473a373ffffffffffffffffffffffffffffffffffffffff1663fb55dbe185835f6040518463ffffffff1660e01b81526004016108a1939291906145fa565b6040805180830381865afa1580156108bb573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108df9190614657565b5080925050935093915050565b5f600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610972576040517f086a6b8600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8173ffffffffffffffffffffffffffffffffffffffff164760405161099790614a78565b5f6040518083038185875af1925050503d805f81146109d1576040519150601f19603f3d011682016040523d82523d5f602084013e6109d6565b606091505b50509050806109e3575f5ffd5b5050565b5f5f9054906101000a900462ffffff1681565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aa5576040517f086a6b8600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815f60066101000a81548162ffffff021916908362ffffff160217905550805f60096101000a81548162ffffff021916908360020b62ffffff1602179055505050565b5f60099054906101000a900460020b81565b6e22d473030f116ddee9f6b43ac78ba381565b5f60039054906101000a900460020b81565b5f5f8303610b59576040517ff4fb71d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603610c3d575f3414610be7576040517f6256698900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c3533308660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166123c5909392919063ffffffff16565b839050610dd1565b7337f0c2915cecc7e977183b8543fc0864d03e064c73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603610db9575f3414610cbd576040517f6256698900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610cfe3330867337f0c2915cecc7e977183b8543fc0864d03e064c73ffffffffffffffffffffffffffffffffffffffff166123c5909392919063ffffffff16565b73492c412369db76c9cdd9939e6c521579301473a373ffffffffffffffffffffffffffffffffffffffff16630144c5f360015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16865f306040518563ffffffff1660e01b8152600401610d729493929190614ac5565b6020604051808303815f875af1158015610d8e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610db29190614b08565b9050610dd0565b610dc3868561241a565b610dcd8685612574565b90505b5b73492c412369db76c9cdd9939e6c521579301473a373ffffffffffffffffffffffffffffffffffffffff16630144c5f3868386336040518563ffffffff1660e01b8152600401610e249493929190614b33565b6020604051808303815f875af1925050508015610e5f57506040513d601f19601f82011682018060405250810190610e5c9190614b08565b60015b610e95576040517f12c0f6d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80925050610ea161284b565b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f27830bca1834346b6287fed7ebd6791d80a5a6d4b190a1f8b01c09a07786a1a6858886604051610f1993929190614b76565b60405180910390a450949350505050565b73833589fcd6edb6e08f4c7c32d4f71b54bda0291381565b5f600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b730d5e0f971ed27fbff6c2837bf31316121532048d81565b5f81565b5f5f8303610fbd576040517ff4fb71d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73c5a076cad94176c2996b32d8466be1ce757faa2773ffffffffffffffffffffffffffffffffffffffff166376a9864b86866040518363ffffffff1660e01b815260040161100d929190614bab565b6040805180830381865afa158015611027573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061104b9190614917565b50905060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361116b575f34146110db576040517f6256698900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82811115611115576040517f12c0f6d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61116333308360015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166123c5909392919063ffffffff16565b809150611404565b7337f0c2915cecc7e977183b8543fc0864d03e064c73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036113d6575f34146111eb576040517f6256698900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73c5a076cad94176c2996b32d8466be1ce757faa2773ffffffffffffffffffffffffffffffffffffffff166376a9864b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b815260040161125c929190614bab565b6040805180830381865afa158015611276573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061129a9190614917565b509050838111156112d7576040517f12c0f6d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113183330837337f0c2915cecc7e977183b8543fc0864d03e064c73ffffffffffffffffffffffffffffffffffffffff166123c5909392919063ffffffff16565b73c5a076cad94176c2996b32d8466be1ce757faa2773ffffffffffffffffffffffffffffffffffffffff1663f74bfe8e60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168484306040518563ffffffff1660e01b815260040161138c9493929190614b33565b6020604051808303815f875af11580156113a8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113cc9190614b08565b5080925050611403565b6113e0868461241a565b6113eb86828561293f565b91506114028683856113fd9190614bff565b612c9b565b5b5b5f73c5a076cad94176c2996b32d8466be1ce757faa2773ffffffffffffffffffffffffffffffffffffffff1663f74bfe8e878785336040518563ffffffff1660e01b81526004016114589493929190614b33565b6020604051808303815f875af192505050801561149357506040513d601f19601f820116820180604052508101906114909190614b08565b60015b6114c9576040517f12c0f6d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b809150506114d561284b565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f3b90f0b1565b6e9dac462a873af5d46d5d6177d0096ddc2ddcf38de8ddb5d8fa88878660405161154d93929190614b76565b60405180910390a45050949350505050565b5f600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115e5576040517f086a6b8600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815f5f6101000a81548162ffffff021916908362ffffff160217905550805f60036101000a81548162ffffff021916908360020b62ffffff1602179055505050565b73492c412369db76c9cdd9939e6c521579301473a381565b73c5a076cad94176c2996b32d8466be1ce757faa2781565b5f600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116dd576040517f086a6b8600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611742576040517f644865b000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b373c5a076cad94176c2996b32d8466be1ce757faa275f6040518363ffffffff1660e01b81526004016117b6929190614c32565b6020604051808303815f875af11580156117d2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117f69190614c83565b508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b373492c412369db76c9cdd9939e6c521579301473a35f6040518363ffffffff1660e01b8152600401611846929190614c32565b6020604051808303815f875af1158015611862573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118869190614c83565b508160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff1663095ea7b373c5a076cad94176c2996b32d8466be1ce757faa277fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611936929190614bab565b6020604051808303815f875af1158015611952573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119769190614c83565b508173ffffffffffffffffffffffffffffffffffffffff1663095ea7b373492c412369db76c9cdd9939e6c521579301473a37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016119e6929190614bab565b6020604051808303815f875af1158015611a02573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a269190614c83565b508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f5a1a9bb5f826487cf43e61548d79ffa19cc00e1a554bd9962825f51fa9c767d160405160405180910390a35050565b5f60069054906101000a900462ffffff1681565b5f600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b1f576040517f086a6b8600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b4a82828573ffffffffffffffffffffffffffffffffffffffff16612db59092919063ffffffff16565b505050565b7337f0c2915cecc7e977183b8543fc0864d03e064c81565b5f5f73c5a076cad94176c2996b32d8466be1ce757faa2773ffffffffffffffffffffffffffffffffffffffff166376a9864b85856040518363ffffffff1660e01b8152600401611bb8929190614bab565b6040805180830381865afa158015611bd2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bf69190614917565b508091505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611c5757809150611ed8565b7337f0c2915cecc7e977183b8543fc0864d03e064c73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611d565773c5a076cad94176c2996b32d8466be1ce757faa2773ffffffffffffffffffffffffffffffffffffffff166376a9864b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611d0e929190614bab565b6040805180830381865afa158015611d28573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d4c9190614917565b5080925050611ed7565b73833589fcd6edb6e08f4c7c32d4f71b54bda0291373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611e3b57730d5e0f971ed27fbff6c2837bf31316121532048d73ffffffffffffffffffffffffffffffffffffffff1663147d2af9611dd683612e08565b6040518263ffffffff1660e01b8152600401611df291906148f7565b60408051808303815f875af1158015611e0d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e319190614917565b5080925050611ed6565b730d5e0f971ed27fbff6c2837bf31316121532048d73ffffffffffffffffffffffffffffffffffffffff166358733073611e7587846122d0565b6040518263ffffffff1660e01b8152600401611e919190614a2b565b60408051808303815f875af1158015611eac573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ed09190614917565b50809250505b5b5b935093915050565b736ff5693b99212da76ad316178a184ab56d299b4381565b5f600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f7e576040517f086a6b8600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611fe3576040517f644865b000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6120ae61401e565b5f600267ffffffffffffffff8111156120ca576120c9614cae565b5b60405190808252806020026020018201604052801561210357816020015b6120f0614065565b8152602001906001900390816120e85790505b5090506040518060a001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f60069054906101000a900462ffffff1662ffffff1681526020015f60099054906101000a900460020b60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052805f815250815250815f815181106121a05761219f614cdb565b5b60200260200101819052506040518060a0016040528060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020015f5f9054906101000a900462ffffff1662ffffff1681526020015f60039054906101000a900460020b60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052805f8152508152508160018151811061226657612265614cdb565b5b6020026020010181905250604051806060016040528073833589fcd6edb6e08f4c7c32d4f71b54bda0291373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001846fffffffffffffffffffffffffffffffff16815250915050919050565b6122d86140c4565b5f5f5f6122e486613032565b92509250925060405180608001604052806040518060a001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020015f5f9054906101000a900462ffffff1662ffffff1681526020015f60039054906101000a900460020b60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff1681525081526020018215158152602001866fffffffffffffffffffffffffffffffff16815260200160405180602001604052805f815250815250935050505092915050565b6123d3848484846001613150565b61241457836040517f5274afe700000000000000000000000000000000000000000000000000000000815260040161240b919061433a565b60405180910390fd5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361248b57803414612486576040517f6256698900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612570565b73833589fcd6edb6e08f4c7c32d4f71b54bda0291373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361253d575f341461250b576040517f6256698900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6125383330838573ffffffffffffffffffffffffffffffffffffffff166123c5909392919063ffffffff16565b61256f565b6040517f84e3aa1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5050565b5f5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016125d0919061433a565b602060405180830381865afa1580156125eb573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061260f9190614b08565b905073833589fcd6edb6e08f4c7c32d4f71b54bda0291373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361266657612661836131c1565b61279e565b5f5f5f61267287613032565b9250925092505f601060405160200161268b9190614d48565b60405160208183030381529060405290505f600167ffffffffffffffff8111156126b8576126b7614cae565b5b6040519080825280602002602001820160405280156126eb57816020015b60608152602001906001900390816126d65790505b5090506126fa8585858b61364c565b815f8151811061270d5761270c614cdb565b5b6020026020010181905250736ff5693b99212da76ad316178a184ab56d299b4373ffffffffffffffffffffffffffffffffffffffff16633593564c898484426040518563ffffffff1660e01b815260040161276a93929190614e65565b5f604051808303818588803b158015612781575f5ffd5b505af1158015612793573d5f5f3e3d5ffd5b505050505050505050505b8060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016127f9919061433a565b602060405180830381865afa158015612814573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128389190614b08565b6128429190614bff565b91505092915050565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016128a6919061433a565b602060405180830381865afa1580156128c1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128e59190614b08565b90505f81111561293c5761293b338260015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612db59092919063ffffffff16565b5b50565b5f5f5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146129f1578473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016129ad919061433a565b602060405180830381865afa1580156129c8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129ec9190614b08565b6129f3565b475b905073833589fcd6edb6e08f4c7c32d4f71b54bda0291373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612a4b57612a4684846138bd565b612bcf565b5f5f5f612a5788613032565b9250925092505f612a6b8484848b8b613d4a565b90505f60106004604051602001612a83929190614ea8565b60405160208183030381529060405290505f600267ffffffffffffffff811115612ab057612aaf614cae565b5b604051908082528060200260200182016040528015612ae357816020015b6060815260200190600190039081612ace5790505b50905082815f81518110612afa57612af9614cdb565b5b60200260200101819052505f305f604051602001612b1a93929190614f03565b60405160208183030381529060405281600181518110612b3d57612b3c614cdb565b5b6020026020010181905250736ff5693b99212da76ad316178a184ab56d299b4373ffffffffffffffffffffffffffffffffffffffff16633593564c8a8484426040518563ffffffff1660e01b8152600401612b9a93929190614e65565b5f604051808303818588803b158015612bb1575f5ffd5b505af1158015612bc3573d5f5f3e3d5ffd5b50505050505050505050505b5f5f73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614612c80578573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612c3c919061433a565b602060405180830381865afa158015612c57573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c7b9190614b08565b612c82565b475b90508082612c909190614bff565b925050509392505050565b5f810315612db1575f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d84575f3373ffffffffffffffffffffffffffffffffffffffff1682604051612cfb90614a78565b5f6040518083038185875af1925050503d805f8114612d35576040519150601f19603f3d011682016040523d82523d5f602084013e612d3a565b606091505b5050905080612d7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d7590614f92565b60405180910390fd5b50612db0565b612daf33828473ffffffffffffffffffffffffffffffffffffffff16612db59092919063ffffffff16565b5b5b5050565b612dc28383836001613fbc565b612e0357826040517f5274afe7000000000000000000000000000000000000000000000000000000008152600401612dfa919061433a565b60405180910390fd5b505050565b612e1061401e565b5f600267ffffffffffffffff811115612e2c57612e2b614cae565b5b604051908082528060200260200182016040528015612e6557816020015b612e52614065565b815260200190600190039081612e4a5790505b5090506040518060a0016040528073833589fcd6edb6e08f4c7c32d4f71b54bda0291373ffffffffffffffffffffffffffffffffffffffff1681526020015f60069054906101000a900462ffffff1662ffffff1681526020015f60099054906101000a900460020b60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052805f815250815250815f81518110612f1657612f15614cdb565b5b60200260200101819052506040518060a001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f5f9054906101000a900462ffffff1662ffffff1681526020015f60039054906101000a900460020b60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052805f81525081525081600181518110612fbb57612fba614cdb565b5b6020026020010181905250604051806060016040528060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001846fffffffffffffffffffffffffffffffff16815250915050919050565b5f5f5f5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603613098575f925060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915060019050613149565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16101561311d5783925060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915060019050613148565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1692508391505f90505b5b9193909250565b5f5f6323b872dd60e01b9050604051815f525f1960601c87166004525f1960601c86166024528460445260205f60645f5f8c5af1925060015f511483166131ae5783831516156131a2573d5f823e3d81fd5b5f883b113d1516831692505b806040525f606052505095945050505050565b5f5f600c600e6040516020016131d993929190614fb0565b60405160208183030381529060405290505f600367ffffffffffffffff81111561320657613205614cae565b5b60405190808252806020026020018201604052801561323957816020015b60608152602001906001900390816132245790505b5090505f600267ffffffffffffffff81111561325857613257614cae565b5b60405190808252806020026020018201604052801561329157816020015b61327e614065565b8152602001906001900390816132765790505b5090506040518060a001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f60069054906101000a900462ffffff1662ffffff1681526020015f60099054906101000a900460020b60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052805f815250815250815f8151811061332e5761332d614cdb565b5b60200260200101819052506040518060a0016040528060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020015f5f9054906101000a900462ffffff1662ffffff1681526020015f60039054906101000a900460020b60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052805f815250815250816001815181106133f4576133f3614cdb565b5b602002602001018190525073833589fcd6edb6e08f4c7c32d4f71b54bda0291381855f60405160200161342a949392919061507e565b604051602081830303815290604052825f8151811061344c5761344b614cdb565b5b602002602001018190525073833589fcd6edb6e08f4c7c32d4f71b54bda029138460405160200161347e9291906150c8565b604051602081830303815290604052826001815181106134a1576134a0614cdb565b5b602002602001018190525060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16305f6040516020016134e2939291906150ef565b6040516020818303038152906040528260028151811061350557613504614cdb565b5b60200260200101819052505f60106040516020016135239190614d48565b60405160208183030381529060405290505f600167ffffffffffffffff8111156135505761354f614cae565b5b60405190808252806020026020018201604052801561358357816020015b606081526020019060019003908161356e5790505b5090508484604051602001613599929190615124565b604051602081830303815290604052815f815181106135bb576135ba614cdb565b5b6020026020010181905250736ff5693b99212da76ad316178a184ab56d299b4373ffffffffffffffffffffffffffffffffffffffff16633593564c8383426040518463ffffffff1660e01b815260040161361793929190614e65565b5f604051808303815f87803b15801561362e575f5ffd5b505af1158015613640573d5f5f3e3d5ffd5b50505050505050505050565b60605f6006600c600e60405160200161366793929190614fb0565b60405160208183030381529060405290505f600367ffffffffffffffff81111561369457613693614cae565b5b6040519080825280602002602001820160405280156136c757816020015b60608152602001906001900390816136b25790505b5090505f6040518060a001604052808973ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1681526020015f5f9054906101000a900462ffffff1662ffffff1681526020015f60039054906101000a900460020b60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff1681525090505f5f8761376957888a61376c565b89895b915091506040518060a001604052808481526020018915158152602001886fffffffffffffffffffffffffffffffff1681526020015f6fffffffffffffffffffffffffffffffff16815260200160405180602001604052805f8152508152506040516020016137db91906151ce565b604051602081830303815290604052845f815181106137fd576137fc614cdb565b5b6020026020010181905250818760405160200161381b9291906150c8565b6040516020818303038152906040528460018151811061383e5761383d614cdb565b5b602002602001018190525080305f60405160200161385e939291906150ef565b6040516020818303038152906040528460028151811061388157613880614cdb565b5b6020026020010181905250848460405160200161389f929190615124565b60405160208183030381529060405295505050505050949350505050565b5f6001600c600e6040516020016138d693929190614fb0565b60405160208183030381529060405290505f600367ffffffffffffffff81111561390357613902614cae565b5b60405190808252806020026020018201604052801561393657816020015b60608152602001906001900390816139215790505b5090505f600267ffffffffffffffff81111561395557613954614cae565b5b60405190808252806020026020018201604052801561398e57816020015b61397b614065565b8152602001906001900390816139735790505b5090506040518060a0016040528073833589fcd6edb6e08f4c7c32d4f71b54bda0291373ffffffffffffffffffffffffffffffffffffffff1681526020015f60069054906101000a900462ffffff1662ffffff1681526020015f60099054906101000a900460020b60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052805f815250815250815f81518110613a3f57613a3e614cdb565b5b60200260200101819052506040518060a001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f5f9054906101000a900462ffffff1662ffffff1681526020015f60039054906101000a900460020b60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052805f81525081525081600181518110613ae457613ae3614cdb565b5b602002602001018190525060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16818686604051602001613b27949392919061507e565b604051602081830303815290604052825f81518110613b4957613b48614cdb565b5b602002602001018190525073833589fcd6edb6e08f4c7c32d4f71b54bda0291384604051602001613b7b9291906150c8565b60405160208183030381529060405282600181518110613b9e57613b9d614cdb565b5b602002602001018190525060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16305f604051602001613bdf939291906150ef565b60405160208183030381529060405282600281518110613c0257613c01614cdb565b5b60200260200101819052505f6010604051602001613c209190614d48565b60405160208183030381529060405290505f600167ffffffffffffffff811115613c4d57613c4c614cae565b5b604051908082528060200260200182016040528015613c8057816020015b6060815260200190600190039081613c6b5790505b5090508484604051602001613c96929190615124565b604051602081830303815290604052815f81518110613cb857613cb7614cdb565b5b6020026020010181905250736ff5693b99212da76ad316178a184ab56d299b4373ffffffffffffffffffffffffffffffffffffffff16633593564c8383426040518463ffffffff1660e01b8152600401613d1493929190614e65565b5f604051808303815f87803b158015613d2b575f5ffd5b505af1158015613d3d573d5f5f3e3d5ffd5b5050505050505050505050565b60605f6008600c600e604051602001613d6593929190614fb0565b60405160208183030381529060405290505f600367ffffffffffffffff811115613d9257613d91614cae565b5b604051908082528060200260200182016040528015613dc557816020015b6060815260200190600190039081613db05790505b5090505f6040518060a001604052808a73ffffffffffffffffffffffffffffffffffffffff1681526020018973ffffffffffffffffffffffffffffffffffffffff1681526020015f5f9054906101000a900462ffffff1662ffffff1681526020015f60039054906101000a900460020b60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff1681525090505f5f88613e6757898b613e6a565b8a8a5b915091506040518060a001604052808481526020018a15158152602001896fffffffffffffffffffffffffffffffff168152602001886fffffffffffffffffffffffffffffffff16815260200160405180602001604052805f815250815250604051602001613ed99190615263565b604051602081830303815290604052845f81518110613efb57613efa614cdb565b5b60200260200101819052508187604051602001613f199291906150c8565b60405160208183030381529060405284600181518110613f3c57613f3b614cdb565b5b602002602001018190525080305f604051602001613f5c939291906150ef565b60405160208183030381529060405284600281518110613f7f57613f7e614cdb565b5b60200260200101819052508484604051602001613f9d929190615124565b6040516020818303038152906040529550505050505095945050505050565b5f5f63a9059cbb60e01b9050604051815f525f1960601c86166004528460245260205f60445f5f8b5af1925060015f51148316614010578383151615614004573d5f823e3d81fd5b5f873b113d1516831692505b806040525050949350505050565b60405180606001604052805f73ffffffffffffffffffffffffffffffffffffffff168152602001606081526020015f6fffffffffffffffffffffffffffffffff1681525090565b6040518060a001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f62ffffff1681526020015f60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b60405180608001604052806140d7614104565b81526020015f151581526020015f6fffffffffffffffffffffffffffffffff168152602001606081525090565b6040518060a001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f62ffffff1681526020015f60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff1681525090565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6141a58261417c565b9050919050565b6141b58161419b565b81146141bf575f5ffd5b50565b5f813590506141d0816141ac565b92915050565b5f819050919050565b6141e8816141d6565b81146141f2575f5ffd5b50565b5f81359050614203816141df565b92915050565b5f5f5f606084860312156142205761421f614178565b5b5f61422d868287016141c2565b935050602061423e868287016141c2565b925050604061424f868287016141f5565b9150509250925092565b614262816141d6565b82525050565b5f60408201905061427b5f830185614259565b6142886020830184614259565b9392505050565b5f6142998261417c565b9050919050565b6142a98161428f565b81146142b3575f5ffd5b50565b5f813590506142c4816142a0565b92915050565b5f602082840312156142df576142de614178565b5b5f6142ec848285016142b6565b91505092915050565b5f62ffffff82169050919050565b61430c816142f5565b82525050565b5f6020820190506143255f830184614303565b92915050565b6143348161419b565b82525050565b5f60208201905061434d5f83018461432b565b92915050565b61435c816142f5565b8114614366575f5ffd5b50565b5f8135905061437781614353565b92915050565b5f8160020b9050919050565b6143928161437d565b811461439c575f5ffd5b50565b5f813590506143ad81614389565b92915050565b5f5f604083850312156143c9576143c8614178565b5b5f6143d685828601614369565b92505060206143e78582860161439f565b9150509250929050565b6143fa8161437d565b82525050565b5f6020820190506144135f8301846143f1565b92915050565b5f5f5f5f6080858703121561443157614430614178565b5b5f61443e878288016141c2565b945050602061444f878288016141c2565b9350506040614460878288016141f5565b9250506060614471878288016141f5565b91505092959194509250565b5f6020820190506144905f830184614259565b92915050565b5f819050919050565b5f6144b96144b46144af8461417c565b614496565b61417c565b9050919050565b5f6144ca8261449f565b9050919050565b5f6144db826144c0565b9050919050565b6144eb816144d1565b82525050565b5f6020820190506145045f8301846144e2565b92915050565b5f614514826144c0565b9050919050565b6145248161450a565b82525050565b5f60208201905061453d5f83018461451b565b92915050565b5f61454d826144c0565b9050919050565b61455d81614543565b82525050565b5f6020820190506145765f830184614554565b92915050565b5f6020828403121561459157614590614178565b5b5f61459e848285016141c2565b91505092915050565b5f6145b1826144c0565b9050919050565b6145c1816145a7565b82525050565b5f6020820190506145da5f8301846145b8565b92915050565b5f8115159050919050565b6145f4816145e0565b82525050565b5f60608201905061460d5f83018661432b565b61461a6020830185614259565b61462760408301846145eb565b949350505050565b5f8151905061463d816141df565b92915050565b5f81519050614651816141ac565b92915050565b5f5f6040838503121561466d5761466c614178565b5b5f61467a8582860161462f565b925050602061468b85828601614643565b9150509250929050565b61469e8161419b565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6146d6816142f5565b82525050565b6146e58161437d565b82525050565b5f6146f5826144c0565b9050919050565b614705816146eb565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61474d8261470b565b6147578185614715565b9350614767818560208601614725565b61477081614733565b840191505092915050565b5f60a083015f8301516147905f860182614695565b5060208301516147a360208601826146cd565b5060408301516147b660408601826146dc565b5060608301516147c960608601826146fc565b50608083015184820360808601526147e18282614743565b9150508091505092915050565b5f6147f9838361477b565b905092915050565b5f602082019050919050565b5f614817826146a4565b61482181856146ae565b935083602082028501614833856146be565b805f5b8581101561486e578484038952815161484f85826147ee565b945061485a83614801565b925060208a01995050600181019050614836565b50829750879550505050505092915050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b6148a481614880565b82525050565b5f606083015f8301516148bf5f860182614695565b50602083015184820360208601526148d7828261480d565b91505060408301516148ec604086018261489b565b508091505092915050565b5f6020820190508181035f83015261490f81846148aa565b905092915050565b5f5f6040838503121561492d5761492c614178565b5b5f61493a8582860161462f565b925050602061494b8582860161462f565b9150509250929050565b60a082015f8201516149695f850182614695565b50602082015161497c6020850182614695565b50604082015161498f60408501826146cd565b5060608201516149a260608501826146dc565b5060808201516149b560808501826146fc565b50505050565b6149c4816145e0565b82525050565b5f61010083015f8301516149e05f860182614955565b5060208301516149f360a08601826149bb565b506040830151614a0660c086018261489b565b50606083015184820360e0860152614a1e8282614743565b9150508091505092915050565b5f6020820190508181035f830152614a4381846149ca565b905092915050565b5f81905092915050565b50565b5f614a635f83614a4b565b9150614a6e82614a55565b5f82019050919050565b5f614a8282614a58565b9150819050919050565b5f819050919050565b5f614aaf614aaa614aa584614a8c565b614496565b6141d6565b9050919050565b614abf81614a95565b82525050565b5f608082019050614ad85f83018761432b565b614ae56020830186614259565b614af26040830185614ab6565b614aff606083018461432b565b95945050505050565b5f60208284031215614b1d57614b1c614178565b5b5f614b2a8482850161462f565b91505092915050565b5f608082019050614b465f83018761432b565b614b536020830186614259565b614b606040830185614259565b614b6d606083018461432b565b95945050505050565b5f606082019050614b895f830186614259565b614b966020830185614259565b614ba36040830184614259565b949350505050565b5f604082019050614bbe5f83018561432b565b614bcb6020830184614259565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f614c09826141d6565b9150614c14836141d6565b9250828203905081811115614c2c57614c2b614bd2565b5b92915050565b5f604082019050614c455f83018561432b565b614c526020830184614ab6565b9392505050565b614c62816145e0565b8114614c6c575f5ffd5b50565b5f81519050614c7d81614c59565b92915050565b5f60208284031215614c9857614c97614178565b5b5f614ca584828501614c6f565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60ff82169050919050565b5f8160f81b9050919050565b5f614d2a82614d14565b9050919050565b614d42614d3d82614d08565b614d20565b82525050565b5f614d538284614d31565b60018201915081905092915050565b5f82825260208201905092915050565b5f614d7c8261470b565b614d868185614d62565b9350614d96818560208601614725565b614d9f81614733565b840191505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f614dde8383614743565b905092915050565b5f602082019050919050565b5f614dfc82614daa565b614e068185614db4565b935083602082028501614e1885614dc4565b805f5b85811015614e535784840389528151614e348582614dd3565b9450614e3f83614de6565b925060208a01995050600181019050614e1b565b50829750879550505050505092915050565b5f6060820190508181035f830152614e7d8186614d72565b90508181036020830152614e918185614df2565b9050614ea06040830184614259565b949350505050565b5f614eb38285614d31565b600182019150614ec38284614d31565b6001820191508190509392505050565b5f614eed614ee8614ee384614a8c565b614496565b614d08565b9050919050565b614efd81614ed3565b82525050565b5f606082019050614f165f83018661432b565b614f23602083018561432b565b614f306040830184614ef4565b949350505050565b5f82825260208201905092915050565b7f45544820726566756e64206661696c65640000000000000000000000000000005f82015250565b5f614f7c601183614f38565b9150614f8782614f48565b602082019050919050565b5f6020820190508181035f830152614fa981614f70565b9050919050565b5f614fbb8286614d31565b600182019150614fcb8285614d31565b600182019150614fdb8284614d31565b600182019150819050949350505050565b5f82825260208201905092915050565b5f615006826146a4565b6150108185614fec565b935083602082028501615022856146be565b805f5b8581101561505d578484038952815161503e85826147ee565b945061504983614801565b925060208a01995050600181019050615025565b50829750879550505050505092915050565b61507881614880565b82525050565b5f6080820190506150915f83018761432b565b81810360208301526150a38186614ffc565b90506150b2604083018561506f565b6150bf606083018461506f565b95945050505050565b5f6040820190506150db5f83018561432b565b6150e8602083018461506f565b9392505050565b5f6060820190506151025f83018661432b565b61510f602083018561432b565b61511c6040830184614259565b949350505050565b5f6040820190508181035f83015261513c8185614d72565b905081810360208301526151508184614df2565b90509392505050565b5f61012083015f83015161516f5f860182614955565b50602083015161518260a08601826149bb565b50604083015161519560c086018261489b565b5060608301516151a860e086018261489b565b5060808301518482036101008601526151c18282614743565b9150508091505092915050565b5f6020820190508181035f8301526151e68184615159565b905092915050565b5f61012083015f8301516152045f860182614955565b50602083015161521760a08601826149bb565b50604083015161522a60c086018261489b565b50606083015161523d60e086018261489b565b5060808301518482036101008601526152568282614743565b9150508091505092915050565b5f6020820190508181035f83015261527b81846151ee565b90509291505056fea2646970667358221220536036461df98c6d1ffdb49504479bfc19786bef8a782301b667977e7aec90e664736f6c634300081c0033000000000000000000000000f8a2c39111fceb9c950aaf28a9e34ebad99b85c1", + "nonce": "0x1b9", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0xf92761", + "logs": [ + { + "address": "0xf8a2c39111fceb9c950aaf28a9e34ebad99b85c1", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x0000000000000000000000007bc192848003ab1ba286c66afd0dd8a1729c6b02", + "0x000000000000000000000000c5a076cad94176c2996b32d8466be1ce757faa27" + ], + "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x29b3d5f", + "blockTimestamp": "0x69c0d7a1", + "transactionHash": "0x8b5c3ade52dbceb3473a4a532c09a442f0dc63c10b95960f060fe8f4e09a1129", + "transactionIndex": "0x36", + "logIndex": "0x166", + "removed": false + }, + { + "address": "0xf8a2c39111fceb9c950aaf28a9e34ebad99b85c1", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x0000000000000000000000007bc192848003ab1ba286c66afd0dd8a1729c6b02", + "0x000000000000000000000000492c412369db76c9cdd9939e6c521579301473a3" + ], + "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x29b3d5f", + "blockTimestamp": "0x69c0d7a1", + "transactionHash": "0x8b5c3ade52dbceb3473a4a532c09a442f0dc63c10b95960f060fe8f4e09a1129", + "transactionIndex": "0x36", + "logIndex": "0x167", + "removed": false + }, + { + "address": "0x37f0c2915cecc7e977183b8543fc0864d03e064c", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x0000000000000000000000007bc192848003ab1ba286c66afd0dd8a1729c6b02", + "0x000000000000000000000000c5a076cad94176c2996b32d8466be1ce757faa27" + ], + "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x29b3d5f", + "blockTimestamp": "0x69c0d7a1", + "transactionHash": "0x8b5c3ade52dbceb3473a4a532c09a442f0dc63c10b95960f060fe8f4e09a1129", + "transactionIndex": "0x36", + "logIndex": "0x168", + "removed": false + }, + { + "address": "0x37f0c2915cecc7e977183b8543fc0864d03e064c", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x0000000000000000000000007bc192848003ab1ba286c66afd0dd8a1729c6b02", + "0x000000000000000000000000492c412369db76c9cdd9939e6c521579301473a3" + ], + "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x29b3d5f", + "blockTimestamp": "0x69c0d7a1", + "transactionHash": "0x8b5c3ade52dbceb3473a4a532c09a442f0dc63c10b95960f060fe8f4e09a1129", + "transactionIndex": "0x36", + "logIndex": "0x169", + "removed": false + }, + { + "address": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x0000000000000000000000007bc192848003ab1ba286c66afd0dd8a1729c6b02", + "0x000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba3" + ], + "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x29b3d5f", + "blockTimestamp": "0x69c0d7a1", + "transactionHash": "0x8b5c3ade52dbceb3473a4a532c09a442f0dc63c10b95960f060fe8f4e09a1129", + "transactionIndex": "0x36", + "logIndex": "0x16a", + "removed": false + }, + { + "address": "0x000000000022d473030f116ddee9f6b43ac78ba3", + "topics": [ + "0xda9fa7c1b00402c17d0161b249b1ab8bbec047c5a52207b9c112deffd817036b", + "0x0000000000000000000000007bc192848003ab1ba286c66afd0dd8a1729c6b02", + "0x000000000000000000000000833589fcd6edb6e08f4c7c32d4f71b54bda02913", + "0x0000000000000000000000006ff5693b99212da76ad316178a184ab56d299b43" + ], + "data": "0x000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000ffffffffffff", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x29b3d5f", + "blockTimestamp": "0x69c0d7a1", + "transactionHash": "0x8b5c3ade52dbceb3473a4a532c09a442f0dc63c10b95960f060fe8f4e09a1129", + "transactionIndex": "0x36", + "logIndex": "0x16b", + "removed": false + } + ], + "logsBloom": "0x00010000000000020000000000000000000000000000000000000000000000000000000000000000000000000002104000000000800000000000100000280000000000000000040000005000000000000000000000080800000000000000000000800000000000000080000000000000010000000000000000000000000040000020000000000000400000000000000000000000000000000000000000000000020000000000000000000000800000081000000000100000000000080000800000000000000000000000001000000000200000000000000040000000040000000010000000000000000000000000040000000000000000000200000001000400", + "type": "0x2", + "transactionHash": "0x8b5c3ade52dbceb3473a4a532c09a442f0dc63c10b95960f060fe8f4e09a1129", + "transactionIndex": "0x36", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x29b3d5f", + "gasUsed": "0x4a68d0", + "effectiveGasPrice": "0x4c56a8", + "blobGasUsed": "0xfc358", + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": null, + "contractAddress": "0x7bc192848003ab1ba286c66afd0dd8a1729c6b02", + "daFootprintGasScalar": "0x8b", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x328f1b", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x2106893f", + "l1GasPrice": "0x35a80b5", + "l1GasUsed": "0x1d086" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1774245808150, + "chain": 8453, + "commit": "be779c0" +} \ No newline at end of file diff --git a/broadcast/DeployZapPlotLinkV2.s.sol/8453/run-latest.json b/broadcast/DeployZapPlotLinkV2.s.sol/8453/run-latest.json index d406dd1..a72ff4c 100644 --- a/broadcast/DeployZapPlotLinkV2.s.sol/8453/run-latest.json +++ b/broadcast/DeployZapPlotLinkV2.s.sol/8453/run-latest.json @@ -1,20 +1,20 @@ { "transactions": [ { - "hash": "0xca9f0cf3999e192d1f851453b8e2c07b6f481059813b82f709016377a1944ea8", + "hash": "0x8b5c3ade52dbceb3473a4a532c09a442f0dc63c10b95960f060fe8f4e09a1129", "transactionType": "CREATE", "contractName": "ZapPlotLinkV2", - "contractAddress": "0xef6a8640c836b16eb8ccd8016ead4c8517ac3033", + "contractAddress": "0x7bc192848003ab1ba286c66afd0dd8a1729c6b02", "function": null, "arguments": [ "0xF8A2C39111FCEB9C950aAf28A9E34EBaD99b85C1" ], "transaction": { "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", - "gas": "0x45e016", + "gas": "0x60bb74", "value": "0x0", - "input": "0x6080604052610bb85f5f6101000a81548162ffffff021916908362ffffff160217905550603c5f60036101000a81548162ffffff021916908360020b62ffffff160217905550348015610050575f5ffd5b5060405161406c38038061406c833981810160405281019061007291906104b8565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100d7576040517f644865b000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b335f60066101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b373c5a076cad94176c2996b32d8466be1ce757faa277fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016101c692919061050a565b6020604051808303815f875af11580156101e2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102069190610566565b508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b373492c412369db76c9cdd9939e6c521579301473a37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161027692919061050a565b6020604051808303815f875af1158015610292573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102b69190610566565b506102da73833589fcd6edb6e08f4c7c32d4f71b54bda0291361030360201b60201c565b6102fd7337f0c2915cecc7e977183b8543fc0864d03e064c61030360201b60201c565b50610603565b8073ffffffffffffffffffffffffffffffffffffffff1663095ea7b36e22d473030f116ddee9f6b43ac78ba37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161036d92919061050a565b6020604051808303815f875af1158015610389573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103ad9190610566565b506e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff166387517c4582736ff5693b99212da76ad316178a184ab56d299b4373ffffffffffffffffffffffffffffffffffffffff65ffffffffffff6040518563ffffffff1660e01b815260040161042a94939291906105c0565b5f604051808303815f87803b158015610441575f5ffd5b505af1158015610453573d5f5f3e3d5ffd5b5050505050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6104878261045e565b9050919050565b6104978161047d565b81146104a1575f5ffd5b50565b5f815190506104b28161048e565b92915050565b5f602082840312156104cd576104cc61045a565b5b5f6104da848285016104a4565b91505092915050565b6104ec8161047d565b82525050565b5f819050919050565b610504816104f2565b82525050565b5f60408201905061051d5f8301856104e3565b61052a60208301846104fb565b9392505050565b5f8115159050919050565b61054581610531565b811461054f575f5ffd5b50565b5f815190506105608161053c565b92915050565b5f6020828403121561057b5761057a61045a565b5b5f61058884828501610552565b91505092915050565b61059a8161045e565b82525050565b5f65ffffffffffff82169050919050565b6105ba816105a0565b82525050565b5f6080820190506105d35f8301876104e3565b6105e060208301866104e3565b6105ed6040830185610591565b6105fa60608301846105b1565b95945050505050565b613a5c806106105f395ff3fe60806040526004361061012d575f3560e01c8063a734f06e116100aa578063cb7588241161006e578063cb758824146103c9578063cea9d26f146103f1578063cefa892214610419578063d87e4bd114610443578063e8dd7fc314610480578063f2fde38b146104aa57610134565b8063a734f06e146102f3578063b3f1c93d1461031d578063b7d1abbc1461034d578063b9703ded14610375578063c1c1d2181461039f57610134565b80637164cf9b116100f15780637164cf9b1461021b578063814ac84f1461024557806389a30271146102755780638da5cb5b1461029f5780638dae88c2146102c957610134565b806301c2553a1461013857806304824e7014610175578063089fe6aa1461019d578063161a226e146101c75780636afdd850146101f157610134565b3661013457005b5f5ffd5b348015610143575f5ffd5b5061015e60048036038101906101599190612c57565b6104d2565b60405161016c929190612cb6565b60405180910390f35b348015610180575f5ffd5b5061019b60048036038101906101969190612d18565b610667565b005b3480156101a8575f5ffd5b506101b1610762565b6040516101be9190612d60565b60405180910390f35b3480156101d2575f5ffd5b506101db610775565b6040516101e89190612d88565b60405180910390f35b3480156101fc575f5ffd5b5061020561079a565b6040516102129190612d88565b60405180910390f35b348015610226575f5ffd5b5061022f6107ad565b60405161023c9190612dbc565b60405180910390f35b61025f600480360381019061025a9190612dd5565b6107bf565b60405161026c9190612e39565b60405180910390f35b348015610280575f5ffd5b50610289610a4d565b6040516102969190612d88565b60405180910390f35b3480156102aa575f5ffd5b506102b3610a65565b6040516102c09190612d88565b60405180910390f35b3480156102d4575f5ffd5b506102dd610a8a565b6040516102ea9190612ead565b60405180910390f35b3480156102fe575f5ffd5b50610307610aa2565b6040516103149190612d88565b60405180910390f35b61033760048036038101906103329190612dd5565b610aa6565b6040516103449190612e39565b60405180910390f35b348015610358575f5ffd5b50610373600480360381019061036e9190612f1a565b610e16565b005b348015610380575f5ffd5b50610389610ede565b6040516103969190612f78565b60405180910390f35b3480156103aa575f5ffd5b506103b3610ef6565b6040516103c09190612fb1565b60405180910390f35b3480156103d4575f5ffd5b506103ef60048036038101906103ea9190612fca565b610f0e565b005b3480156103fc575f5ffd5b5061041760048036038101906104129190612c57565b61133c565b005b348015610424575f5ffd5b5061042d6113f2565b60405161043a9190612d88565b60405180910390f35b34801561044e575f5ffd5b5061046960048036038101906104649190612c57565b61140a565b604051610477929190612cb6565b60405180910390f35b34801561048b575f5ffd5b5061049461159d565b6040516104a19190613015565b60405180910390f35b3480156104b5575f5ffd5b506104d060048036038101906104cb9190612fca565b6115b5565b005b5f5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603610530578290506105cb565b730d5e0f971ed27fbff6c2837bf31316121532048d73ffffffffffffffffffffffffffffffffffffffff1663aa9d21cb61056a8786611763565b6040518263ffffffff1660e01b815260040161058691906131f6565b60408051808303815f875af11580156105a1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105c5919061322a565b50809150505b73492c412369db76c9cdd9939e6c521579301473a373ffffffffffffffffffffffffffffffffffffffff1663fb55dbe185835f6040518463ffffffff1660e01b815260040161061c93929190613277565b6040805180830381865afa158015610636573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061065a91906132c0565b5080925050935093915050565b5f60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106ed576040517f086a6b8600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8173ffffffffffffffffffffffffffffffffffffffff16476040516107129061332b565b5f6040518083038185875af1925050503d805f811461074c576040519150601f19603f3d011682016040523d82523d5f602084013e610751565b606091505b505090508061075e575f5ffd5b5050565b5f5f9054906101000a900462ffffff1681565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6e22d473030f116ddee9f6b43ac78ba381565b5f60039054906101000a900460020b81565b5f5f83036107f9576040517ff4fb71d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036108dd575f3414610887576040517f6256698900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108d533308660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611858909392919063ffffffff16565b8390506108f4565b6108e786856118ad565b6108f18685611a52565b90505b73492c412369db76c9cdd9939e6c521579301473a373ffffffffffffffffffffffffffffffffffffffff16630144c5f3868386336040518563ffffffff1660e01b8152600401610947949392919061333f565b6020604051808303815f875af192505050801561098257506040513d601f19601f8201168201806040525081019061097f9190613382565b60015b6109b8576040517f12c0f6d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b809250506109c4611d8a565b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f27830bca1834346b6287fed7ebd6791d80a5a6d4b190a1f8b01c09a07786a1a6858886604051610a3c939291906133ad565b60405180910390a450949350505050565b73833589fcd6edb6e08f4c7c32d4f71b54bda0291381565b5f60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b730d5e0f971ed27fbff6c2837bf31316121532048d81565b5f81565b5f5f8303610ae0576040517ff4fb71d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73c5a076cad94176c2996b32d8466be1ce757faa2773ffffffffffffffffffffffffffffffffffffffff166376a9864b86866040518363ffffffff1660e01b8152600401610b309291906133e2565b6040805180830381865afa158015610b4a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b6e919061322a565b50905060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603610c8e575f3414610bfe576040517f6256698900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82811115610c38576040517f12c0f6d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c8633308360015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611858909392919063ffffffff16565b809150610cbb565b610c9886846118ad565b610ca3868285611e7e565b9150610cba868385610cb59190613436565b6122d1565b5b5f73c5a076cad94176c2996b32d8466be1ce757faa2773ffffffffffffffffffffffffffffffffffffffff1663f74bfe8e878785336040518563ffffffff1660e01b8152600401610d0f949392919061333f565b6020604051808303815f875af1925050508015610d4a57506040513d601f19601f82011682018060405250810190610d479190613382565b60015b610d80576040517f12c0f6d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80915050610d8c611d8a565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f3b90f0b1565b6e9dac462a873af5d46d5d6177d0096ddc2ddcf38de8ddb5d8fa888786604051610e04939291906133ad565b60405180910390a45050949350505050565b5f60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e9c576040517f086a6b8600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815f5f6101000a81548162ffffff021916908362ffffff160217905550805f60036101000a81548162ffffff021916908360020b62ffffff1602179055505050565b73492c412369db76c9cdd9939e6c521579301473a381565b73c5a076cad94176c2996b32d8466be1ce757faa2781565b5f60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f94576040517f086a6b8600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ff9576040517f644865b000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b373c5a076cad94176c2996b32d8466be1ce757faa275f6040518363ffffffff1660e01b815260040161106d9291906134a2565b6020604051808303815f875af1158015611089573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110ad91906134f3565b508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b373492c412369db76c9cdd9939e6c521579301473a35f6040518363ffffffff1660e01b81526004016110fd9291906134a2565b6020604051808303815f875af1158015611119573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061113d91906134f3565b508160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff1663095ea7b373c5a076cad94176c2996b32d8466be1ce757faa277fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016111ed9291906133e2565b6020604051808303815f875af1158015611209573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061122d91906134f3565b508173ffffffffffffffffffffffffffffffffffffffff1663095ea7b373492c412369db76c9cdd9939e6c521579301473a37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161129d9291906133e2565b6020604051808303815f875af11580156112b9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112dd91906134f3565b508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f5a1a9bb5f826487cf43e61548d79ffa19cc00e1a554bd9962825f51fa9c767d160405160405180910390a35050565b5f60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113c2576040517f086a6b8600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ed82828573ffffffffffffffffffffffffffffffffffffffff166123eb9092919063ffffffff16565b505050565b7337f0c2915cecc7e977183b8543fc0864d03e064c81565b5f5f73c5a076cad94176c2996b32d8466be1ce757faa2773ffffffffffffffffffffffffffffffffffffffff166376a9864b85856040518363ffffffff1660e01b815260040161145b9291906133e2565b6040805180830381865afa158015611475573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611499919061322a565b508091505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036114fa57809150611595565b730d5e0f971ed27fbff6c2837bf31316121532048d73ffffffffffffffffffffffffffffffffffffffff1663587330736115348784611763565b6040518263ffffffff1660e01b815260040161155091906131f6565b60408051808303815f875af115801561156b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061158f919061322a565b50809250505b935093915050565b736ff5693b99212da76ad316178a184ab56d299b4381565b5f60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461163b576040517f086a6b8600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036116a0576040517f644865b000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f60066101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61176b612b12565b5f5f5f6117778661243e565b92509250925060405180608001604052806040518060a001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020015f5f9054906101000a900462ffffff1662ffffff1681526020015f60039054906101000a900460020b60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff1681525081526020018215158152602001866fffffffffffffffffffffffffffffffff16815260200160405180602001604052805f815250815250935050505092915050565b61186684848484600161255c565b6118a757836040517f5274afe700000000000000000000000000000000000000000000000000000000815260040161189e9190612d88565b60405180910390fd5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361191e57803414611919576040517f6256698900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611a4e565b73833589fcd6edb6e08f4c7c32d4f71b54bda0291373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806119ab57507337f0c2915cecc7e977183b8543fc0864d03e064c73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611a1b575f34146119e9576040517f6256698900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611a163330838573ffffffffffffffffffffffffffffffffffffffff16611858909392919063ffffffff16565b611a4d565b6040517f84e3aa1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5050565b5f5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611aae9190612d88565b602060405180830381865afa158015611ac9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611aed9190613382565b90505f5f5f611afb8761243e565b9250925092505f6010604051602001611b14919061355e565b60405160208183030381529060405290505f600167ffffffffffffffff811115611b4157611b40613578565b5b604051908082528060200260200182016040528015611b7457816020015b6060815260200190600190039081611b5f5790505b509050611b838585858b6125cd565b815f81518110611b9657611b956135a5565b5b60200260200101819052505f73ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1603611c5957736ff5693b99212da76ad316178a184ab56d299b4373ffffffffffffffffffffffffffffffffffffffff16633593564c898484426040518563ffffffff1660e01b8152600401611c26939291906136d5565b5f604051808303818588803b158015611c3d575f5ffd5b505af1158015611c4f573d5f5f3e3d5ffd5b5050505050611cd8565b736ff5693b99212da76ad316178a184ab56d299b4373ffffffffffffffffffffffffffffffffffffffff16633593564c8383426040518463ffffffff1660e01b8152600401611caa939291906136d5565b5f604051808303815f87803b158015611cc1575f5ffd5b505af1158015611cd3573d5f5f3e3d5ffd5b505050505b8560015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611d339190612d88565b602060405180830381865afa158015611d4e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d729190613382565b611d7c9190613436565b965050505050505092915050565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611de59190612d88565b602060405180830381865afa158015611e00573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e249190613382565b90505f811115611e7b57611e7a338260015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166123eb9092919063ffffffff16565b5b50565b5f5f5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614611f30578473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611eec9190612d88565b602060405180830381865afa158015611f07573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f2b9190613382565b611f32565b475b90505f5f5f611f408861243e565b9250925092505f611f548484848b8b61283e565b90505f73ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16036120eb575f60106004604051602001611f9f929190613718565b60405160208183030381529060405290505f600267ffffffffffffffff811115611fcc57611fcb613578565b5b604051908082528060200260200182016040528015611fff57816020015b6060815260200190600190039081611fea5790505b50905082815f81518110612016576120156135a5565b5b60200260200101819052505f305f60405160200161203693929190613773565b60405160208183030381529060405281600181518110612059576120586135a5565b5b6020026020010181905250736ff5693b99212da76ad316178a184ab56d299b4373ffffffffffffffffffffffffffffffffffffffff16633593564c8a8484426040518563ffffffff1660e01b81526004016120b6939291906136d5565b5f604051808303818588803b1580156120cd575f5ffd5b505af11580156120df573d5f5f3e3d5ffd5b50505050505050612201565b5f60106040516020016120fe919061355e565b60405160208183030381529060405290505f600167ffffffffffffffff81111561212b5761212a613578565b5b60405190808252806020026020018201604052801561215e57816020015b60608152602001906001900390816121495790505b50905082815f81518110612175576121746135a5565b5b6020026020010181905250736ff5693b99212da76ad316178a184ab56d299b4373ffffffffffffffffffffffffffffffffffffffff16633593564c8383426040518463ffffffff1660e01b81526004016121d1939291906136d5565b5f604051808303815f87803b1580156121e8575f5ffd5b505af11580156121fa573d5f5f3e3d5ffd5b5050505050505b5f5f73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff16146122b2578973ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161226e9190612d88565b602060405180830381865afa158015612289573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122ad9190613382565b6122b4565b475b905080866122c29190613436565b96505050505050509392505050565b5f8103156123e7575f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123ba575f3373ffffffffffffffffffffffffffffffffffffffff16826040516123319061332b565b5f6040518083038185875af1925050503d805f811461236b576040519150601f19603f3d011682016040523d82523d5f602084013e612370565b606091505b50509050806123b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ab90613802565b60405180910390fd5b506123e6565b6123e533828473ffffffffffffffffffffffffffffffffffffffff166123eb9092919063ffffffff16565b5b5b5050565b6123f88383836001612ab0565b61243957826040517f5274afe70000000000000000000000000000000000000000000000000000000081526004016124309190612d88565b60405180910390fd5b505050565b5f5f5f5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036124a4575f925060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915060019050612555565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610156125295783925060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915060019050612554565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1692508391505f90505b5b9193909250565b5f5f6323b872dd60e01b9050604051815f525f1960601c87166004525f1960601c86166024528460445260205f60645f5f8c5af1925060015f511483166125ba5783831516156125ae573d5f823e3d81fd5b5f883b113d1516831692505b806040525f606052505095945050505050565b60605f6006600c600e6040516020016125e893929190613820565b60405160208183030381529060405290505f600367ffffffffffffffff81111561261557612614613578565b5b60405190808252806020026020018201604052801561264857816020015b60608152602001906001900390816126335790505b5090505f6040518060a001604052808973ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1681526020015f5f9054906101000a900462ffffff1662ffffff1681526020015f60039054906101000a900460020b60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff1681525090505f5f876126ea57888a6126ed565b89895b915091506040518060a001604052808481526020018915158152602001886fffffffffffffffffffffffffffffffff1681526020015f6fffffffffffffffffffffffffffffffff16815260200160405180602001604052805f81525081525060405160200161275c91906138d1565b604051602081830303815290604052845f8151811061277e5761277d6135a5565b5b6020026020010181905250818760405160200161279c929190613900565b604051602081830303815290604052846001815181106127bf576127be6135a5565b5b602002602001018190525080305f6040516020016127df93929190613927565b60405160208183030381529060405284600281518110612802576128016135a5565b5b6020026020010181905250848460405160200161282092919061395c565b60405160208183030381529060405295505050505050949350505050565b60605f6008600c600e60405160200161285993929190613820565b60405160208183030381529060405290505f600367ffffffffffffffff81111561288657612885613578565b5b6040519080825280602002602001820160405280156128b957816020015b60608152602001906001900390816128a45790505b5090505f6040518060a001604052808a73ffffffffffffffffffffffffffffffffffffffff1681526020018973ffffffffffffffffffffffffffffffffffffffff1681526020015f5f9054906101000a900462ffffff1662ffffff1681526020015f60039054906101000a900460020b60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff1681525090505f5f8861295b57898b61295e565b8a8a5b915091506040518060a001604052808481526020018a15158152602001896fffffffffffffffffffffffffffffffff168152602001886fffffffffffffffffffffffffffffffff16815260200160405180602001604052805f8152508152506040516020016129cd9190613a06565b604051602081830303815290604052845f815181106129ef576129ee6135a5565b5b60200260200101819052508187604051602001612a0d929190613900565b60405160208183030381529060405284600181518110612a3057612a2f6135a5565b5b602002602001018190525080305f604051602001612a5093929190613927565b60405160208183030381529060405284600281518110612a7357612a726135a5565b5b60200260200101819052508484604051602001612a9192919061395c565b6040516020818303038152906040529550505050505095945050505050565b5f5f63a9059cbb60e01b9050604051815f525f1960601c86166004528460245260205f60445f5f8b5af1925060015f51148316612b04578383151615612af8573d5f823e3d81fd5b5f873b113d1516831692505b806040525050949350505050565b6040518060800160405280612b25612b52565b81526020015f151581526020015f6fffffffffffffffffffffffffffffffff168152602001606081525090565b6040518060a001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f62ffffff1681526020015f60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff1681525090565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612bf382612bca565b9050919050565b612c0381612be9565b8114612c0d575f5ffd5b50565b5f81359050612c1e81612bfa565b92915050565b5f819050919050565b612c3681612c24565b8114612c40575f5ffd5b50565b5f81359050612c5181612c2d565b92915050565b5f5f5f60608486031215612c6e57612c6d612bc6565b5b5f612c7b86828701612c10565b9350506020612c8c86828701612c10565b9250506040612c9d86828701612c43565b9150509250925092565b612cb081612c24565b82525050565b5f604082019050612cc95f830185612ca7565b612cd66020830184612ca7565b9392505050565b5f612ce782612bca565b9050919050565b612cf781612cdd565b8114612d01575f5ffd5b50565b5f81359050612d1281612cee565b92915050565b5f60208284031215612d2d57612d2c612bc6565b5b5f612d3a84828501612d04565b91505092915050565b5f62ffffff82169050919050565b612d5a81612d43565b82525050565b5f602082019050612d735f830184612d51565b92915050565b612d8281612be9565b82525050565b5f602082019050612d9b5f830184612d79565b92915050565b5f8160020b9050919050565b612db681612da1565b82525050565b5f602082019050612dcf5f830184612dad565b92915050565b5f5f5f5f60808587031215612ded57612dec612bc6565b5b5f612dfa87828801612c10565b9450506020612e0b87828801612c10565b9350506040612e1c87828801612c43565b9250506060612e2d87828801612c43565b91505092959194509250565b5f602082019050612e4c5f830184612ca7565b92915050565b5f819050919050565b5f612e75612e70612e6b84612bca565b612e52565b612bca565b9050919050565b5f612e8682612e5b565b9050919050565b5f612e9782612e7c565b9050919050565b612ea781612e8d565b82525050565b5f602082019050612ec05f830184612e9e565b92915050565b612ecf81612d43565b8114612ed9575f5ffd5b50565b5f81359050612eea81612ec6565b92915050565b612ef981612da1565b8114612f03575f5ffd5b50565b5f81359050612f1481612ef0565b92915050565b5f5f60408385031215612f3057612f2f612bc6565b5b5f612f3d85828601612edc565b9250506020612f4e85828601612f06565b9150509250929050565b5f612f6282612e7c565b9050919050565b612f7281612f58565b82525050565b5f602082019050612f8b5f830184612f69565b92915050565b5f612f9b82612e7c565b9050919050565b612fab81612f91565b82525050565b5f602082019050612fc45f830184612fa2565b92915050565b5f60208284031215612fdf57612fde612bc6565b5b5f612fec84828501612c10565b91505092915050565b5f612fff82612e7c565b9050919050565b61300f81612ff5565b82525050565b5f6020820190506130285f830184613006565b92915050565b61303781612be9565b82525050565b61304681612d43565b82525050565b61305581612da1565b82525050565b5f61306582612e7c565b9050919050565b6130758161305b565b82525050565b60a082015f82015161308f5f85018261302e565b5060208201516130a2602085018261302e565b5060408201516130b5604085018261303d565b5060608201516130c8606085018261304c565b5060808201516130db608085018261306c565b50505050565b5f8115159050919050565b6130f5816130e1565b82525050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b61311f816130fb565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61316782613125565b613171818561312f565b935061318181856020860161313f565b61318a8161314d565b840191505092915050565b5f61010083015f8301516131ab5f86018261307b565b5060208301516131be60a08601826130ec565b5060408301516131d160c0860182613116565b50606083015184820360e08601526131e9828261315d565b9150508091505092915050565b5f6020820190508181035f83015261320e8184613195565b905092915050565b5f8151905061322481612c2d565b92915050565b5f5f604083850312156132405761323f612bc6565b5b5f61324d85828601613216565b925050602061325e85828601613216565b9150509250929050565b613271816130e1565b82525050565b5f60608201905061328a5f830186612d79565b6132976020830185612ca7565b6132a46040830184613268565b949350505050565b5f815190506132ba81612bfa565b92915050565b5f5f604083850312156132d6576132d5612bc6565b5b5f6132e385828601613216565b92505060206132f4858286016132ac565b9150509250929050565b5f81905092915050565b50565b5f6133165f836132fe565b915061332182613308565b5f82019050919050565b5f6133358261330b565b9150819050919050565b5f6080820190506133525f830187612d79565b61335f6020830186612ca7565b61336c6040830185612ca7565b6133796060830184612d79565b95945050505050565b5f6020828403121561339757613396612bc6565b5b5f6133a484828501613216565b91505092915050565b5f6060820190506133c05f830186612ca7565b6133cd6020830185612ca7565b6133da6040830184612ca7565b949350505050565b5f6040820190506133f55f830185612d79565b6134026020830184612ca7565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61344082612c24565b915061344b83612c24565b925082820390508181111561346357613462613409565b5b92915050565b5f819050919050565b5f61348c61348761348284613469565b612e52565b612c24565b9050919050565b61349c81613472565b82525050565b5f6040820190506134b55f830185612d79565b6134c26020830184613493565b9392505050565b6134d2816130e1565b81146134dc575f5ffd5b50565b5f815190506134ed816134c9565b92915050565b5f6020828403121561350857613507612bc6565b5b5f613515848285016134df565b91505092915050565b5f60ff82169050919050565b5f8160f81b9050919050565b5f6135408261352a565b9050919050565b6135586135538261351e565b613536565b82525050565b5f6135698284613547565b60018201915081905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82825260208201905092915050565b5f6135ec82613125565b6135f681856135d2565b935061360681856020860161313f565b61360f8161314d565b840191505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f61364e838361315d565b905092915050565b5f602082019050919050565b5f61366c8261361a565b6136768185613624565b93508360208202850161368885613634565b805f5b858110156136c357848403895281516136a48582613643565b94506136af83613656565b925060208a0199505060018101905061368b565b50829750879550505050505092915050565b5f6060820190508181035f8301526136ed81866135e2565b905081810360208301526137018185613662565b90506137106040830184612ca7565b949350505050565b5f6137238285613547565b6001820191506137338284613547565b6001820191508190509392505050565b5f61375d61375861375384613469565b612e52565b61351e565b9050919050565b61376d81613743565b82525050565b5f6060820190506137865f830186612d79565b6137936020830185612d79565b6137a06040830184613764565b949350505050565b5f82825260208201905092915050565b7f45544820726566756e64206661696c65640000000000000000000000000000005f82015250565b5f6137ec6011836137a8565b91506137f7826137b8565b602082019050919050565b5f6020820190508181035f830152613819816137e0565b9050919050565b5f61382b8286613547565b60018201915061383b8285613547565b60018201915061384b8284613547565b600182019150819050949350505050565b5f61012083015f8301516138725f86018261307b565b50602083015161388560a08601826130ec565b50604083015161389860c0860182613116565b5060608301516138ab60e0860182613116565b5060808301518482036101008601526138c4828261315d565b9150508091505092915050565b5f6020820190508181035f8301526138e9818461385c565b905092915050565b6138fa816130fb565b82525050565b5f6040820190506139135f830185612d79565b61392060208301846138f1565b9392505050565b5f60608201905061393a5f830186612d79565b6139476020830185612d79565b6139546040830184612ca7565b949350505050565b5f6040820190508181035f83015261397481856135e2565b905081810360208301526139888184613662565b90509392505050565b5f61012083015f8301516139a75f86018261307b565b5060208301516139ba60a08601826130ec565b5060408301516139cd60c0860182613116565b5060608301516139e060e0860182613116565b5060808301518482036101008601526139f9828261315d565b9150508091505092915050565b5f6020820190508181035f830152613a1e8184613991565b90509291505056fea26469706673582212204ca2d84f730e0788530214fefc2fa01fd173a7ae3c2c677078322e641cf50d0264736f6c634300081c0033000000000000000000000000f8a2c39111fceb9c950aaf28a9e34ebad99b85c1", - "nonce": "0x1b3", + "input": "0x6080604052610bb85f5f6101000a81548162ffffff021916908362ffffff160217905550603c5f60036101000a81548162ffffff021916908360020b62ffffff1602179055506101f45f60066101000a81548162ffffff021916908362ffffff160217905550600a5f60096101000a81548162ffffff021916908360020b62ffffff160217905550348015610092575f5ffd5b50604051615a70380380615a7083398181016040528101906100b4919061065f565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610119576040517f644865b000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b335f600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b373c5a076cad94176c2996b32d8466be1ce757faa277fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016102089291906106b1565b6020604051808303815f875af1158015610224573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610248919061070d565b508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b373492c412369db76c9cdd9939e6c521579301473a37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016102b89291906106b1565b6020604051808303815f875af11580156102d4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102f8919061070d565b507337f0c2915cecc7e977183b8543fc0864d03e064c73ffffffffffffffffffffffffffffffffffffffff1663095ea7b373c5a076cad94176c2996b32d8466be1ce757faa277fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161037c9291906106b1565b6020604051808303815f875af1158015610398573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103bc919061070d565b507337f0c2915cecc7e977183b8543fc0864d03e064c73ffffffffffffffffffffffffffffffffffffffff1663095ea7b373492c412369db76c9cdd9939e6c521579301473a37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016104409291906106b1565b6020604051808303815f875af115801561045c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610480919061070d565b506104a473833589fcd6edb6e08f4c7c32d4f71b54bda029136104aa60201b60201c565b506107aa565b8073ffffffffffffffffffffffffffffffffffffffff1663095ea7b36e22d473030f116ddee9f6b43ac78ba37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016105149291906106b1565b6020604051808303815f875af1158015610530573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610554919061070d565b506e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff166387517c4582736ff5693b99212da76ad316178a184ab56d299b4373ffffffffffffffffffffffffffffffffffffffff65ffffffffffff6040518563ffffffff1660e01b81526004016105d19493929190610767565b5f604051808303815f87803b1580156105e8575f5ffd5b505af11580156105fa573d5f5f3e3d5ffd5b5050505050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61062e82610605565b9050919050565b61063e81610624565b8114610648575f5ffd5b50565b5f8151905061065981610635565b92915050565b5f6020828403121561067457610673610601565b5b5f6106818482850161064b565b91505092915050565b61069381610624565b82525050565b5f819050919050565b6106ab81610699565b82525050565b5f6040820190506106c45f83018561068a565b6106d160208301846106a2565b9392505050565b5f8115159050919050565b6106ec816106d8565b81146106f6575f5ffd5b50565b5f81519050610707816106e3565b92915050565b5f6020828403121561072257610721610601565b5b5f61072f848285016106f9565b91505092915050565b61074181610605565b82525050565b5f65ffffffffffff82169050919050565b61076181610747565b82525050565b5f60808201905061077a5f83018761068a565b610787602083018661068a565b6107946040830185610738565b6107a16060830184610758565b95945050505050565b6152b9806107b75f395ff3fe60806040526004361061014e575f3560e01c8063a734f06e116100b5578063cdad4fae1161006e578063cdad4fae14610464578063cea9d26f1461048e578063cefa8922146104b6578063d87e4bd1146104e0578063e8dd7fc31461051d578063f2fde38b1461054757610155565b8063a734f06e14610366578063b3f1c93d14610390578063b7d1abbc146103c0578063b9703ded146103e8578063c1c1d21814610412578063cb7588241461043c57610155565b80636afdd850116101075780636afdd850146102645780637164cf9b1461028e578063814ac84f146102b857806389a30271146102e85780638da5cb5b146103125780638dae88c21461033c57610155565b806301c2553a1461015957806304824e7014610196578063089fe6aa146101be578063161a226e146101e857806350ecabab14610212578063543b67101461023a57610155565b3661015557005b5f5ffd5b348015610164575f5ffd5b5061017f600480360381019061017a9190614209565b61056f565b60405161018d929190614268565b60405180910390f35b3480156101a1575f5ffd5b506101bc60048036038101906101b791906142ca565b6108ec565b005b3480156101c9575f5ffd5b506101d26109e7565b6040516101df9190614312565b60405180910390f35b3480156101f3575f5ffd5b506101fc6109fa565b604051610209919061433a565b60405180910390f35b34801561021d575f5ffd5b50610238600480360381019061023391906143b3565b610a1f565b005b348015610245575f5ffd5b5061024e610ae8565b60405161025b9190614400565b60405180910390f35b34801561026f575f5ffd5b50610278610afa565b604051610285919061433a565b60405180910390f35b348015610299575f5ffd5b506102a2610b0d565b6040516102af9190614400565b60405180910390f35b6102d260048036038101906102cd9190614419565b610b1f565b6040516102df919061447d565b60405180910390f35b3480156102f3575f5ffd5b506102fc610f2a565b604051610309919061433a565b60405180910390f35b34801561031d575f5ffd5b50610326610f42565b604051610333919061433a565b60405180910390f35b348015610347575f5ffd5b50610350610f67565b60405161035d91906144f1565b60405180910390f35b348015610371575f5ffd5b5061037a610f7f565b604051610387919061433a565b60405180910390f35b6103aa60048036038101906103a59190614419565b610f83565b6040516103b7919061447d565b60405180910390f35b3480156103cb575f5ffd5b506103e660048036038101906103e191906143b3565b61155f565b005b3480156103f3575f5ffd5b506103fc611627565b604051610409919061452a565b60405180910390f35b34801561041d575f5ffd5b5061042661163f565b6040516104339190614563565b60405180910390f35b348015610447575f5ffd5b50610462600480360381019061045d919061457c565b611657565b005b34801561046f575f5ffd5b50610478611a85565b6040516104859190614312565b60405180910390f35b348015610499575f5ffd5b506104b460048036038101906104af9190614209565b611a99565b005b3480156104c1575f5ffd5b506104ca611b4f565b6040516104d7919061433a565b60405180910390f35b3480156104eb575f5ffd5b5061050660048036038101906105019190614209565b611b67565b604051610514929190614268565b60405180910390f35b348015610528575f5ffd5b50610531611ee0565b60405161053e91906145c7565b60405180910390f35b348015610552575f5ffd5b5061056d6004803603810190610568919061457c565b611ef8565b005b5f5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036105cd57829050610850565b7337f0c2915cecc7e977183b8543fc0864d03e064c73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036106ce5773492c412369db76c9cdd9939e6c521579301473a373ffffffffffffffffffffffffffffffffffffffff1663fb55dbe160015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16855f6040518463ffffffff1660e01b8152600401610686939291906145fa565b6040805180830381865afa1580156106a0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106c49190614657565b508091505061084f565b73833589fcd6edb6e08f4c7c32d4f71b54bda0291373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036107b357730d5e0f971ed27fbff6c2837bf31316121532048d73ffffffffffffffffffffffffffffffffffffffff1663ca253dc961074e856120a6565b6040518263ffffffff1660e01b815260040161076a91906148f7565b60408051808303815f875af1158015610785573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107a99190614917565b508091505061084e565b730d5e0f971ed27fbff6c2837bf31316121532048d73ffffffffffffffffffffffffffffffffffffffff1663aa9d21cb6107ed87866122d0565b6040518263ffffffff1660e01b81526004016108099190614a2b565b60408051808303815f875af1158015610824573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108489190614917565b50809150505b5b5b73492c412369db76c9cdd9939e6c521579301473a373ffffffffffffffffffffffffffffffffffffffff1663fb55dbe185835f6040518463ffffffff1660e01b81526004016108a1939291906145fa565b6040805180830381865afa1580156108bb573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108df9190614657565b5080925050935093915050565b5f600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610972576040517f086a6b8600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8173ffffffffffffffffffffffffffffffffffffffff164760405161099790614a78565b5f6040518083038185875af1925050503d805f81146109d1576040519150601f19603f3d011682016040523d82523d5f602084013e6109d6565b606091505b50509050806109e3575f5ffd5b5050565b5f5f9054906101000a900462ffffff1681565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aa5576040517f086a6b8600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815f60066101000a81548162ffffff021916908362ffffff160217905550805f60096101000a81548162ffffff021916908360020b62ffffff1602179055505050565b5f60099054906101000a900460020b81565b6e22d473030f116ddee9f6b43ac78ba381565b5f60039054906101000a900460020b81565b5f5f8303610b59576040517ff4fb71d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603610c3d575f3414610be7576040517f6256698900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c3533308660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166123c5909392919063ffffffff16565b839050610dd1565b7337f0c2915cecc7e977183b8543fc0864d03e064c73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603610db9575f3414610cbd576040517f6256698900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610cfe3330867337f0c2915cecc7e977183b8543fc0864d03e064c73ffffffffffffffffffffffffffffffffffffffff166123c5909392919063ffffffff16565b73492c412369db76c9cdd9939e6c521579301473a373ffffffffffffffffffffffffffffffffffffffff16630144c5f360015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16865f306040518563ffffffff1660e01b8152600401610d729493929190614ac5565b6020604051808303815f875af1158015610d8e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610db29190614b08565b9050610dd0565b610dc3868561241a565b610dcd8685612574565b90505b5b73492c412369db76c9cdd9939e6c521579301473a373ffffffffffffffffffffffffffffffffffffffff16630144c5f3868386336040518563ffffffff1660e01b8152600401610e249493929190614b33565b6020604051808303815f875af1925050508015610e5f57506040513d601f19601f82011682018060405250810190610e5c9190614b08565b60015b610e95576040517f12c0f6d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80925050610ea161284b565b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f27830bca1834346b6287fed7ebd6791d80a5a6d4b190a1f8b01c09a07786a1a6858886604051610f1993929190614b76565b60405180910390a450949350505050565b73833589fcd6edb6e08f4c7c32d4f71b54bda0291381565b5f600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b730d5e0f971ed27fbff6c2837bf31316121532048d81565b5f81565b5f5f8303610fbd576040517ff4fb71d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73c5a076cad94176c2996b32d8466be1ce757faa2773ffffffffffffffffffffffffffffffffffffffff166376a9864b86866040518363ffffffff1660e01b815260040161100d929190614bab565b6040805180830381865afa158015611027573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061104b9190614917565b50905060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361116b575f34146110db576040517f6256698900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82811115611115576040517f12c0f6d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61116333308360015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166123c5909392919063ffffffff16565b809150611404565b7337f0c2915cecc7e977183b8543fc0864d03e064c73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036113d6575f34146111eb576040517f6256698900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73c5a076cad94176c2996b32d8466be1ce757faa2773ffffffffffffffffffffffffffffffffffffffff166376a9864b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b815260040161125c929190614bab565b6040805180830381865afa158015611276573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061129a9190614917565b509050838111156112d7576040517f12c0f6d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113183330837337f0c2915cecc7e977183b8543fc0864d03e064c73ffffffffffffffffffffffffffffffffffffffff166123c5909392919063ffffffff16565b73c5a076cad94176c2996b32d8466be1ce757faa2773ffffffffffffffffffffffffffffffffffffffff1663f74bfe8e60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168484306040518563ffffffff1660e01b815260040161138c9493929190614b33565b6020604051808303815f875af11580156113a8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113cc9190614b08565b5080925050611403565b6113e0868461241a565b6113eb86828561293f565b91506114028683856113fd9190614bff565b612c9b565b5b5b5f73c5a076cad94176c2996b32d8466be1ce757faa2773ffffffffffffffffffffffffffffffffffffffff1663f74bfe8e878785336040518563ffffffff1660e01b81526004016114589493929190614b33565b6020604051808303815f875af192505050801561149357506040513d601f19601f820116820180604052508101906114909190614b08565b60015b6114c9576040517f12c0f6d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b809150506114d561284b565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f3b90f0b1565b6e9dac462a873af5d46d5d6177d0096ddc2ddcf38de8ddb5d8fa88878660405161154d93929190614b76565b60405180910390a45050949350505050565b5f600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115e5576040517f086a6b8600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815f5f6101000a81548162ffffff021916908362ffffff160217905550805f60036101000a81548162ffffff021916908360020b62ffffff1602179055505050565b73492c412369db76c9cdd9939e6c521579301473a381565b73c5a076cad94176c2996b32d8466be1ce757faa2781565b5f600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116dd576040517f086a6b8600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611742576040517f644865b000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b373c5a076cad94176c2996b32d8466be1ce757faa275f6040518363ffffffff1660e01b81526004016117b6929190614c32565b6020604051808303815f875af11580156117d2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117f69190614c83565b508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b373492c412369db76c9cdd9939e6c521579301473a35f6040518363ffffffff1660e01b8152600401611846929190614c32565b6020604051808303815f875af1158015611862573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118869190614c83565b508160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff1663095ea7b373c5a076cad94176c2996b32d8466be1ce757faa277fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611936929190614bab565b6020604051808303815f875af1158015611952573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119769190614c83565b508173ffffffffffffffffffffffffffffffffffffffff1663095ea7b373492c412369db76c9cdd9939e6c521579301473a37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016119e6929190614bab565b6020604051808303815f875af1158015611a02573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a269190614c83565b508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f5a1a9bb5f826487cf43e61548d79ffa19cc00e1a554bd9962825f51fa9c767d160405160405180910390a35050565b5f60069054906101000a900462ffffff1681565b5f600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b1f576040517f086a6b8600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b4a82828573ffffffffffffffffffffffffffffffffffffffff16612db59092919063ffffffff16565b505050565b7337f0c2915cecc7e977183b8543fc0864d03e064c81565b5f5f73c5a076cad94176c2996b32d8466be1ce757faa2773ffffffffffffffffffffffffffffffffffffffff166376a9864b85856040518363ffffffff1660e01b8152600401611bb8929190614bab565b6040805180830381865afa158015611bd2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bf69190614917565b508091505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611c5757809150611ed8565b7337f0c2915cecc7e977183b8543fc0864d03e064c73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611d565773c5a076cad94176c2996b32d8466be1ce757faa2773ffffffffffffffffffffffffffffffffffffffff166376a9864b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611d0e929190614bab565b6040805180830381865afa158015611d28573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d4c9190614917565b5080925050611ed7565b73833589fcd6edb6e08f4c7c32d4f71b54bda0291373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611e3b57730d5e0f971ed27fbff6c2837bf31316121532048d73ffffffffffffffffffffffffffffffffffffffff1663147d2af9611dd683612e08565b6040518263ffffffff1660e01b8152600401611df291906148f7565b60408051808303815f875af1158015611e0d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e319190614917565b5080925050611ed6565b730d5e0f971ed27fbff6c2837bf31316121532048d73ffffffffffffffffffffffffffffffffffffffff166358733073611e7587846122d0565b6040518263ffffffff1660e01b8152600401611e919190614a2b565b60408051808303815f875af1158015611eac573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ed09190614917565b50809250505b5b5b935093915050565b736ff5693b99212da76ad316178a184ab56d299b4381565b5f600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f7e576040517f086a6b8600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611fe3576040517f644865b000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6120ae61401e565b5f600267ffffffffffffffff8111156120ca576120c9614cae565b5b60405190808252806020026020018201604052801561210357816020015b6120f0614065565b8152602001906001900390816120e85790505b5090506040518060a001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f60069054906101000a900462ffffff1662ffffff1681526020015f60099054906101000a900460020b60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052805f815250815250815f815181106121a05761219f614cdb565b5b60200260200101819052506040518060a0016040528060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020015f5f9054906101000a900462ffffff1662ffffff1681526020015f60039054906101000a900460020b60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052805f8152508152508160018151811061226657612265614cdb565b5b6020026020010181905250604051806060016040528073833589fcd6edb6e08f4c7c32d4f71b54bda0291373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001846fffffffffffffffffffffffffffffffff16815250915050919050565b6122d86140c4565b5f5f5f6122e486613032565b92509250925060405180608001604052806040518060a001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020015f5f9054906101000a900462ffffff1662ffffff1681526020015f60039054906101000a900460020b60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff1681525081526020018215158152602001866fffffffffffffffffffffffffffffffff16815260200160405180602001604052805f815250815250935050505092915050565b6123d3848484846001613150565b61241457836040517f5274afe700000000000000000000000000000000000000000000000000000000815260040161240b919061433a565b60405180910390fd5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361248b57803414612486576040517f6256698900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612570565b73833589fcd6edb6e08f4c7c32d4f71b54bda0291373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361253d575f341461250b576040517f6256698900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6125383330838573ffffffffffffffffffffffffffffffffffffffff166123c5909392919063ffffffff16565b61256f565b6040517f84e3aa1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5050565b5f5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016125d0919061433a565b602060405180830381865afa1580156125eb573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061260f9190614b08565b905073833589fcd6edb6e08f4c7c32d4f71b54bda0291373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361266657612661836131c1565b61279e565b5f5f5f61267287613032565b9250925092505f601060405160200161268b9190614d48565b60405160208183030381529060405290505f600167ffffffffffffffff8111156126b8576126b7614cae565b5b6040519080825280602002602001820160405280156126eb57816020015b60608152602001906001900390816126d65790505b5090506126fa8585858b61364c565b815f8151811061270d5761270c614cdb565b5b6020026020010181905250736ff5693b99212da76ad316178a184ab56d299b4373ffffffffffffffffffffffffffffffffffffffff16633593564c898484426040518563ffffffff1660e01b815260040161276a93929190614e65565b5f604051808303818588803b158015612781575f5ffd5b505af1158015612793573d5f5f3e3d5ffd5b505050505050505050505b8060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016127f9919061433a565b602060405180830381865afa158015612814573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128389190614b08565b6128429190614bff565b91505092915050565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016128a6919061433a565b602060405180830381865afa1580156128c1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128e59190614b08565b90505f81111561293c5761293b338260015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612db59092919063ffffffff16565b5b50565b5f5f5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146129f1578473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016129ad919061433a565b602060405180830381865afa1580156129c8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129ec9190614b08565b6129f3565b475b905073833589fcd6edb6e08f4c7c32d4f71b54bda0291373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612a4b57612a4684846138bd565b612bcf565b5f5f5f612a5788613032565b9250925092505f612a6b8484848b8b613d4a565b90505f60106004604051602001612a83929190614ea8565b60405160208183030381529060405290505f600267ffffffffffffffff811115612ab057612aaf614cae565b5b604051908082528060200260200182016040528015612ae357816020015b6060815260200190600190039081612ace5790505b50905082815f81518110612afa57612af9614cdb565b5b60200260200101819052505f305f604051602001612b1a93929190614f03565b60405160208183030381529060405281600181518110612b3d57612b3c614cdb565b5b6020026020010181905250736ff5693b99212da76ad316178a184ab56d299b4373ffffffffffffffffffffffffffffffffffffffff16633593564c8a8484426040518563ffffffff1660e01b8152600401612b9a93929190614e65565b5f604051808303818588803b158015612bb1575f5ffd5b505af1158015612bc3573d5f5f3e3d5ffd5b50505050505050505050505b5f5f73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614612c80578573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612c3c919061433a565b602060405180830381865afa158015612c57573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c7b9190614b08565b612c82565b475b90508082612c909190614bff565b925050509392505050565b5f810315612db1575f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d84575f3373ffffffffffffffffffffffffffffffffffffffff1682604051612cfb90614a78565b5f6040518083038185875af1925050503d805f8114612d35576040519150601f19603f3d011682016040523d82523d5f602084013e612d3a565b606091505b5050905080612d7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d7590614f92565b60405180910390fd5b50612db0565b612daf33828473ffffffffffffffffffffffffffffffffffffffff16612db59092919063ffffffff16565b5b5b5050565b612dc28383836001613fbc565b612e0357826040517f5274afe7000000000000000000000000000000000000000000000000000000008152600401612dfa919061433a565b60405180910390fd5b505050565b612e1061401e565b5f600267ffffffffffffffff811115612e2c57612e2b614cae565b5b604051908082528060200260200182016040528015612e6557816020015b612e52614065565b815260200190600190039081612e4a5790505b5090506040518060a0016040528073833589fcd6edb6e08f4c7c32d4f71b54bda0291373ffffffffffffffffffffffffffffffffffffffff1681526020015f60069054906101000a900462ffffff1662ffffff1681526020015f60099054906101000a900460020b60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052805f815250815250815f81518110612f1657612f15614cdb565b5b60200260200101819052506040518060a001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f5f9054906101000a900462ffffff1662ffffff1681526020015f60039054906101000a900460020b60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052805f81525081525081600181518110612fbb57612fba614cdb565b5b6020026020010181905250604051806060016040528060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001846fffffffffffffffffffffffffffffffff16815250915050919050565b5f5f5f5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603613098575f925060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915060019050613149565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16101561311d5783925060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915060019050613148565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1692508391505f90505b5b9193909250565b5f5f6323b872dd60e01b9050604051815f525f1960601c87166004525f1960601c86166024528460445260205f60645f5f8c5af1925060015f511483166131ae5783831516156131a2573d5f823e3d81fd5b5f883b113d1516831692505b806040525f606052505095945050505050565b5f5f600c600e6040516020016131d993929190614fb0565b60405160208183030381529060405290505f600367ffffffffffffffff81111561320657613205614cae565b5b60405190808252806020026020018201604052801561323957816020015b60608152602001906001900390816132245790505b5090505f600267ffffffffffffffff81111561325857613257614cae565b5b60405190808252806020026020018201604052801561329157816020015b61327e614065565b8152602001906001900390816132765790505b5090506040518060a001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f60069054906101000a900462ffffff1662ffffff1681526020015f60099054906101000a900460020b60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052805f815250815250815f8151811061332e5761332d614cdb565b5b60200260200101819052506040518060a0016040528060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020015f5f9054906101000a900462ffffff1662ffffff1681526020015f60039054906101000a900460020b60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052805f815250815250816001815181106133f4576133f3614cdb565b5b602002602001018190525073833589fcd6edb6e08f4c7c32d4f71b54bda0291381855f60405160200161342a949392919061507e565b604051602081830303815290604052825f8151811061344c5761344b614cdb565b5b602002602001018190525073833589fcd6edb6e08f4c7c32d4f71b54bda029138460405160200161347e9291906150c8565b604051602081830303815290604052826001815181106134a1576134a0614cdb565b5b602002602001018190525060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16305f6040516020016134e2939291906150ef565b6040516020818303038152906040528260028151811061350557613504614cdb565b5b60200260200101819052505f60106040516020016135239190614d48565b60405160208183030381529060405290505f600167ffffffffffffffff8111156135505761354f614cae565b5b60405190808252806020026020018201604052801561358357816020015b606081526020019060019003908161356e5790505b5090508484604051602001613599929190615124565b604051602081830303815290604052815f815181106135bb576135ba614cdb565b5b6020026020010181905250736ff5693b99212da76ad316178a184ab56d299b4373ffffffffffffffffffffffffffffffffffffffff16633593564c8383426040518463ffffffff1660e01b815260040161361793929190614e65565b5f604051808303815f87803b15801561362e575f5ffd5b505af1158015613640573d5f5f3e3d5ffd5b50505050505050505050565b60605f6006600c600e60405160200161366793929190614fb0565b60405160208183030381529060405290505f600367ffffffffffffffff81111561369457613693614cae565b5b6040519080825280602002602001820160405280156136c757816020015b60608152602001906001900390816136b25790505b5090505f6040518060a001604052808973ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1681526020015f5f9054906101000a900462ffffff1662ffffff1681526020015f60039054906101000a900460020b60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff1681525090505f5f8761376957888a61376c565b89895b915091506040518060a001604052808481526020018915158152602001886fffffffffffffffffffffffffffffffff1681526020015f6fffffffffffffffffffffffffffffffff16815260200160405180602001604052805f8152508152506040516020016137db91906151ce565b604051602081830303815290604052845f815181106137fd576137fc614cdb565b5b6020026020010181905250818760405160200161381b9291906150c8565b6040516020818303038152906040528460018151811061383e5761383d614cdb565b5b602002602001018190525080305f60405160200161385e939291906150ef565b6040516020818303038152906040528460028151811061388157613880614cdb565b5b6020026020010181905250848460405160200161389f929190615124565b60405160208183030381529060405295505050505050949350505050565b5f6001600c600e6040516020016138d693929190614fb0565b60405160208183030381529060405290505f600367ffffffffffffffff81111561390357613902614cae565b5b60405190808252806020026020018201604052801561393657816020015b60608152602001906001900390816139215790505b5090505f600267ffffffffffffffff81111561395557613954614cae565b5b60405190808252806020026020018201604052801561398e57816020015b61397b614065565b8152602001906001900390816139735790505b5090506040518060a0016040528073833589fcd6edb6e08f4c7c32d4f71b54bda0291373ffffffffffffffffffffffffffffffffffffffff1681526020015f60069054906101000a900462ffffff1662ffffff1681526020015f60099054906101000a900460020b60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052805f815250815250815f81518110613a3f57613a3e614cdb565b5b60200260200101819052506040518060a001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f5f9054906101000a900462ffffff1662ffffff1681526020015f60039054906101000a900460020b60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052805f81525081525081600181518110613ae457613ae3614cdb565b5b602002602001018190525060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16818686604051602001613b27949392919061507e565b604051602081830303815290604052825f81518110613b4957613b48614cdb565b5b602002602001018190525073833589fcd6edb6e08f4c7c32d4f71b54bda0291384604051602001613b7b9291906150c8565b60405160208183030381529060405282600181518110613b9e57613b9d614cdb565b5b602002602001018190525060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16305f604051602001613bdf939291906150ef565b60405160208183030381529060405282600281518110613c0257613c01614cdb565b5b60200260200101819052505f6010604051602001613c209190614d48565b60405160208183030381529060405290505f600167ffffffffffffffff811115613c4d57613c4c614cae565b5b604051908082528060200260200182016040528015613c8057816020015b6060815260200190600190039081613c6b5790505b5090508484604051602001613c96929190615124565b604051602081830303815290604052815f81518110613cb857613cb7614cdb565b5b6020026020010181905250736ff5693b99212da76ad316178a184ab56d299b4373ffffffffffffffffffffffffffffffffffffffff16633593564c8383426040518463ffffffff1660e01b8152600401613d1493929190614e65565b5f604051808303815f87803b158015613d2b575f5ffd5b505af1158015613d3d573d5f5f3e3d5ffd5b5050505050505050505050565b60605f6008600c600e604051602001613d6593929190614fb0565b60405160208183030381529060405290505f600367ffffffffffffffff811115613d9257613d91614cae565b5b604051908082528060200260200182016040528015613dc557816020015b6060815260200190600190039081613db05790505b5090505f6040518060a001604052808a73ffffffffffffffffffffffffffffffffffffffff1681526020018973ffffffffffffffffffffffffffffffffffffffff1681526020015f5f9054906101000a900462ffffff1662ffffff1681526020015f60039054906101000a900460020b60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff1681525090505f5f88613e6757898b613e6a565b8a8a5b915091506040518060a001604052808481526020018a15158152602001896fffffffffffffffffffffffffffffffff168152602001886fffffffffffffffffffffffffffffffff16815260200160405180602001604052805f815250815250604051602001613ed99190615263565b604051602081830303815290604052845f81518110613efb57613efa614cdb565b5b60200260200101819052508187604051602001613f199291906150c8565b60405160208183030381529060405284600181518110613f3c57613f3b614cdb565b5b602002602001018190525080305f604051602001613f5c939291906150ef565b60405160208183030381529060405284600281518110613f7f57613f7e614cdb565b5b60200260200101819052508484604051602001613f9d929190615124565b6040516020818303038152906040529550505050505095945050505050565b5f5f63a9059cbb60e01b9050604051815f525f1960601c86166004528460245260205f60445f5f8b5af1925060015f51148316614010578383151615614004573d5f823e3d81fd5b5f873b113d1516831692505b806040525050949350505050565b60405180606001604052805f73ffffffffffffffffffffffffffffffffffffffff168152602001606081526020015f6fffffffffffffffffffffffffffffffff1681525090565b6040518060a001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f62ffffff1681526020015f60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b60405180608001604052806140d7614104565b81526020015f151581526020015f6fffffffffffffffffffffffffffffffff168152602001606081525090565b6040518060a001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f62ffffff1681526020015f60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff1681525090565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6141a58261417c565b9050919050565b6141b58161419b565b81146141bf575f5ffd5b50565b5f813590506141d0816141ac565b92915050565b5f819050919050565b6141e8816141d6565b81146141f2575f5ffd5b50565b5f81359050614203816141df565b92915050565b5f5f5f606084860312156142205761421f614178565b5b5f61422d868287016141c2565b935050602061423e868287016141c2565b925050604061424f868287016141f5565b9150509250925092565b614262816141d6565b82525050565b5f60408201905061427b5f830185614259565b6142886020830184614259565b9392505050565b5f6142998261417c565b9050919050565b6142a98161428f565b81146142b3575f5ffd5b50565b5f813590506142c4816142a0565b92915050565b5f602082840312156142df576142de614178565b5b5f6142ec848285016142b6565b91505092915050565b5f62ffffff82169050919050565b61430c816142f5565b82525050565b5f6020820190506143255f830184614303565b92915050565b6143348161419b565b82525050565b5f60208201905061434d5f83018461432b565b92915050565b61435c816142f5565b8114614366575f5ffd5b50565b5f8135905061437781614353565b92915050565b5f8160020b9050919050565b6143928161437d565b811461439c575f5ffd5b50565b5f813590506143ad81614389565b92915050565b5f5f604083850312156143c9576143c8614178565b5b5f6143d685828601614369565b92505060206143e78582860161439f565b9150509250929050565b6143fa8161437d565b82525050565b5f6020820190506144135f8301846143f1565b92915050565b5f5f5f5f6080858703121561443157614430614178565b5b5f61443e878288016141c2565b945050602061444f878288016141c2565b9350506040614460878288016141f5565b9250506060614471878288016141f5565b91505092959194509250565b5f6020820190506144905f830184614259565b92915050565b5f819050919050565b5f6144b96144b46144af8461417c565b614496565b61417c565b9050919050565b5f6144ca8261449f565b9050919050565b5f6144db826144c0565b9050919050565b6144eb816144d1565b82525050565b5f6020820190506145045f8301846144e2565b92915050565b5f614514826144c0565b9050919050565b6145248161450a565b82525050565b5f60208201905061453d5f83018461451b565b92915050565b5f61454d826144c0565b9050919050565b61455d81614543565b82525050565b5f6020820190506145765f830184614554565b92915050565b5f6020828403121561459157614590614178565b5b5f61459e848285016141c2565b91505092915050565b5f6145b1826144c0565b9050919050565b6145c1816145a7565b82525050565b5f6020820190506145da5f8301846145b8565b92915050565b5f8115159050919050565b6145f4816145e0565b82525050565b5f60608201905061460d5f83018661432b565b61461a6020830185614259565b61462760408301846145eb565b949350505050565b5f8151905061463d816141df565b92915050565b5f81519050614651816141ac565b92915050565b5f5f6040838503121561466d5761466c614178565b5b5f61467a8582860161462f565b925050602061468b85828601614643565b9150509250929050565b61469e8161419b565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6146d6816142f5565b82525050565b6146e58161437d565b82525050565b5f6146f5826144c0565b9050919050565b614705816146eb565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61474d8261470b565b6147578185614715565b9350614767818560208601614725565b61477081614733565b840191505092915050565b5f60a083015f8301516147905f860182614695565b5060208301516147a360208601826146cd565b5060408301516147b660408601826146dc565b5060608301516147c960608601826146fc565b50608083015184820360808601526147e18282614743565b9150508091505092915050565b5f6147f9838361477b565b905092915050565b5f602082019050919050565b5f614817826146a4565b61482181856146ae565b935083602082028501614833856146be565b805f5b8581101561486e578484038952815161484f85826147ee565b945061485a83614801565b925060208a01995050600181019050614836565b50829750879550505050505092915050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b6148a481614880565b82525050565b5f606083015f8301516148bf5f860182614695565b50602083015184820360208601526148d7828261480d565b91505060408301516148ec604086018261489b565b508091505092915050565b5f6020820190508181035f83015261490f81846148aa565b905092915050565b5f5f6040838503121561492d5761492c614178565b5b5f61493a8582860161462f565b925050602061494b8582860161462f565b9150509250929050565b60a082015f8201516149695f850182614695565b50602082015161497c6020850182614695565b50604082015161498f60408501826146cd565b5060608201516149a260608501826146dc565b5060808201516149b560808501826146fc565b50505050565b6149c4816145e0565b82525050565b5f61010083015f8301516149e05f860182614955565b5060208301516149f360a08601826149bb565b506040830151614a0660c086018261489b565b50606083015184820360e0860152614a1e8282614743565b9150508091505092915050565b5f6020820190508181035f830152614a4381846149ca565b905092915050565b5f81905092915050565b50565b5f614a635f83614a4b565b9150614a6e82614a55565b5f82019050919050565b5f614a8282614a58565b9150819050919050565b5f819050919050565b5f614aaf614aaa614aa584614a8c565b614496565b6141d6565b9050919050565b614abf81614a95565b82525050565b5f608082019050614ad85f83018761432b565b614ae56020830186614259565b614af26040830185614ab6565b614aff606083018461432b565b95945050505050565b5f60208284031215614b1d57614b1c614178565b5b5f614b2a8482850161462f565b91505092915050565b5f608082019050614b465f83018761432b565b614b536020830186614259565b614b606040830185614259565b614b6d606083018461432b565b95945050505050565b5f606082019050614b895f830186614259565b614b966020830185614259565b614ba36040830184614259565b949350505050565b5f604082019050614bbe5f83018561432b565b614bcb6020830184614259565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f614c09826141d6565b9150614c14836141d6565b9250828203905081811115614c2c57614c2b614bd2565b5b92915050565b5f604082019050614c455f83018561432b565b614c526020830184614ab6565b9392505050565b614c62816145e0565b8114614c6c575f5ffd5b50565b5f81519050614c7d81614c59565b92915050565b5f60208284031215614c9857614c97614178565b5b5f614ca584828501614c6f565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60ff82169050919050565b5f8160f81b9050919050565b5f614d2a82614d14565b9050919050565b614d42614d3d82614d08565b614d20565b82525050565b5f614d538284614d31565b60018201915081905092915050565b5f82825260208201905092915050565b5f614d7c8261470b565b614d868185614d62565b9350614d96818560208601614725565b614d9f81614733565b840191505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f614dde8383614743565b905092915050565b5f602082019050919050565b5f614dfc82614daa565b614e068185614db4565b935083602082028501614e1885614dc4565b805f5b85811015614e535784840389528151614e348582614dd3565b9450614e3f83614de6565b925060208a01995050600181019050614e1b565b50829750879550505050505092915050565b5f6060820190508181035f830152614e7d8186614d72565b90508181036020830152614e918185614df2565b9050614ea06040830184614259565b949350505050565b5f614eb38285614d31565b600182019150614ec38284614d31565b6001820191508190509392505050565b5f614eed614ee8614ee384614a8c565b614496565b614d08565b9050919050565b614efd81614ed3565b82525050565b5f606082019050614f165f83018661432b565b614f23602083018561432b565b614f306040830184614ef4565b949350505050565b5f82825260208201905092915050565b7f45544820726566756e64206661696c65640000000000000000000000000000005f82015250565b5f614f7c601183614f38565b9150614f8782614f48565b602082019050919050565b5f6020820190508181035f830152614fa981614f70565b9050919050565b5f614fbb8286614d31565b600182019150614fcb8285614d31565b600182019150614fdb8284614d31565b600182019150819050949350505050565b5f82825260208201905092915050565b5f615006826146a4565b6150108185614fec565b935083602082028501615022856146be565b805f5b8581101561505d578484038952815161503e85826147ee565b945061504983614801565b925060208a01995050600181019050615025565b50829750879550505050505092915050565b61507881614880565b82525050565b5f6080820190506150915f83018761432b565b81810360208301526150a38186614ffc565b90506150b2604083018561506f565b6150bf606083018461506f565b95945050505050565b5f6040820190506150db5f83018561432b565b6150e8602083018461506f565b9392505050565b5f6060820190506151025f83018661432b565b61510f602083018561432b565b61511c6040830184614259565b949350505050565b5f6040820190508181035f83015261513c8185614d72565b905081810360208301526151508184614df2565b90509392505050565b5f61012083015f83015161516f5f860182614955565b50602083015161518260a08601826149bb565b50604083015161519560c086018261489b565b5060608301516151a860e086018261489b565b5060808301518482036101008601526151c18282614743565b9150508091505092915050565b5f6020820190508181035f8301526151e68184615159565b905092915050565b5f61012083015f8301516152045f860182614955565b50602083015161521760a08601826149bb565b50604083015161522a60c086018261489b565b50606083015161523d60e086018261489b565b5060808301518482036101008601526152568282614743565b9150508091505092915050565b5f6020820190508181035f83015261527b81846151ee565b90509291505056fea2646970667358221220536036461df98c6d1ffdb49504479bfc19786bef8a782301b667977e7aec90e664736f6c634300081c0033000000000000000000000000f8a2c39111fceb9c950aaf28a9e34ebad99b85c1", + "nonce": "0x1b9", "chainId": "0x2105" }, "additionalContracts": [], @@ -24,132 +24,131 @@ "receipts": [ { "status": "0x1", - "cumulativeGasUsed": "0x158a862", + "cumulativeGasUsed": "0xf92761", "logs": [ { "address": "0xf8a2c39111fceb9c950aaf28a9e34ebad99b85c1", "topics": [ "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", - "0x000000000000000000000000ef6a8640c836b16eb8ccd8016ead4c8517ac3033", + "0x0000000000000000000000007bc192848003ab1ba286c66afd0dd8a1729c6b02", "0x000000000000000000000000c5a076cad94176c2996b32d8466be1ce757faa27" ], "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "blockNumber": "0x29ab294", - "blockTimestamp": "0x69bfc20b", - "transactionHash": "0xca9f0cf3999e192d1f851453b8e2c07b6f481059813b82f709016377a1944ea8", - "transactionIndex": "0x5e", - "logIndex": "0x258", + "blockNumber": "0x29b3d5f", + "blockTimestamp": "0x69c0d7a1", + "transactionHash": "0x8b5c3ade52dbceb3473a4a532c09a442f0dc63c10b95960f060fe8f4e09a1129", + "transactionIndex": "0x36", + "logIndex": "0x166", "removed": false }, { "address": "0xf8a2c39111fceb9c950aaf28a9e34ebad99b85c1", "topics": [ "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", - "0x000000000000000000000000ef6a8640c836b16eb8ccd8016ead4c8517ac3033", + "0x0000000000000000000000007bc192848003ab1ba286c66afd0dd8a1729c6b02", "0x000000000000000000000000492c412369db76c9cdd9939e6c521579301473a3" ], "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "blockNumber": "0x29ab294", - "blockTimestamp": "0x69bfc20b", - "transactionHash": "0xca9f0cf3999e192d1f851453b8e2c07b6f481059813b82f709016377a1944ea8", - "transactionIndex": "0x5e", - "logIndex": "0x259", + "blockNumber": "0x29b3d5f", + "blockTimestamp": "0x69c0d7a1", + "transactionHash": "0x8b5c3ade52dbceb3473a4a532c09a442f0dc63c10b95960f060fe8f4e09a1129", + "transactionIndex": "0x36", + "logIndex": "0x167", "removed": false }, { - "address": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913", + "address": "0x37f0c2915cecc7e977183b8543fc0864d03e064c", "topics": [ "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", - "0x000000000000000000000000ef6a8640c836b16eb8ccd8016ead4c8517ac3033", - "0x000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba3" + "0x0000000000000000000000007bc192848003ab1ba286c66afd0dd8a1729c6b02", + "0x000000000000000000000000c5a076cad94176c2996b32d8466be1ce757faa27" ], "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "blockNumber": "0x29ab294", - "blockTimestamp": "0x69bfc20b", - "transactionHash": "0xca9f0cf3999e192d1f851453b8e2c07b6f481059813b82f709016377a1944ea8", - "transactionIndex": "0x5e", - "logIndex": "0x25a", + "blockNumber": "0x29b3d5f", + "blockTimestamp": "0x69c0d7a1", + "transactionHash": "0x8b5c3ade52dbceb3473a4a532c09a442f0dc63c10b95960f060fe8f4e09a1129", + "transactionIndex": "0x36", + "logIndex": "0x168", "removed": false }, { - "address": "0x000000000022d473030f116ddee9f6b43ac78ba3", + "address": "0x37f0c2915cecc7e977183b8543fc0864d03e064c", "topics": [ - "0xda9fa7c1b00402c17d0161b249b1ab8bbec047c5a52207b9c112deffd817036b", - "0x000000000000000000000000ef6a8640c836b16eb8ccd8016ead4c8517ac3033", - "0x000000000000000000000000833589fcd6edb6e08f4c7c32d4f71b54bda02913", - "0x0000000000000000000000006ff5693b99212da76ad316178a184ab56d299b43" + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x0000000000000000000000007bc192848003ab1ba286c66afd0dd8a1729c6b02", + "0x000000000000000000000000492c412369db76c9cdd9939e6c521579301473a3" ], - "data": "0x000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000ffffffffffff", + "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "blockNumber": "0x29ab294", - "blockTimestamp": "0x69bfc20b", - "transactionHash": "0xca9f0cf3999e192d1f851453b8e2c07b6f481059813b82f709016377a1944ea8", - "transactionIndex": "0x5e", - "logIndex": "0x25b", + "blockNumber": "0x29b3d5f", + "blockTimestamp": "0x69c0d7a1", + "transactionHash": "0x8b5c3ade52dbceb3473a4a532c09a442f0dc63c10b95960f060fe8f4e09a1129", + "transactionIndex": "0x36", + "logIndex": "0x169", "removed": false }, { - "address": "0x37f0c2915cecc7e977183b8543fc0864d03e064c", + "address": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913", "topics": [ "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", - "0x000000000000000000000000ef6a8640c836b16eb8ccd8016ead4c8517ac3033", + "0x0000000000000000000000007bc192848003ab1ba286c66afd0dd8a1729c6b02", "0x000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba3" ], "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "blockNumber": "0x29ab294", - "blockTimestamp": "0x69bfc20b", - "transactionHash": "0xca9f0cf3999e192d1f851453b8e2c07b6f481059813b82f709016377a1944ea8", - "transactionIndex": "0x5e", - "logIndex": "0x25c", + "blockNumber": "0x29b3d5f", + "blockTimestamp": "0x69c0d7a1", + "transactionHash": "0x8b5c3ade52dbceb3473a4a532c09a442f0dc63c10b95960f060fe8f4e09a1129", + "transactionIndex": "0x36", + "logIndex": "0x16a", "removed": false }, { "address": "0x000000000022d473030f116ddee9f6b43ac78ba3", "topics": [ "0xda9fa7c1b00402c17d0161b249b1ab8bbec047c5a52207b9c112deffd817036b", - "0x000000000000000000000000ef6a8640c836b16eb8ccd8016ead4c8517ac3033", - "0x00000000000000000000000037f0c2915cecc7e977183b8543fc0864d03e064c", + "0x0000000000000000000000007bc192848003ab1ba286c66afd0dd8a1729c6b02", + "0x000000000000000000000000833589fcd6edb6e08f4c7c32d4f71b54bda02913", "0x0000000000000000000000006ff5693b99212da76ad316178a184ab56d299b43" ], "data": "0x000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000ffffffffffff", "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "blockNumber": "0x29ab294", - "blockTimestamp": "0x69bfc20b", - "transactionHash": "0xca9f0cf3999e192d1f851453b8e2c07b6f481059813b82f709016377a1944ea8", - "transactionIndex": "0x5e", - "logIndex": "0x25d", + "blockNumber": "0x29b3d5f", + "blockTimestamp": "0x69c0d7a1", + "transactionHash": "0x8b5c3ade52dbceb3473a4a532c09a442f0dc63c10b95960f060fe8f4e09a1129", + "transactionIndex": "0x36", + "logIndex": "0x16b", "removed": false } ], - "logsBloom": "0x00010000000000020000000000000000000000000000000000000000000000000000000000000000000000000000104000000000800000000000100000280000000002000000040000005000000000000000000000080800000000001000000000800000000000000080000000000000010040000000000000000000000048000020000000000000400000000000000002000000000000000000000000000000020000100000000000000000800000081000000000100000000000080000000000000000000000000000000000000000200000000000000040000000040000000010000000000000000000000000040000000000000000000200000001000400", + "logsBloom": "0x00010000000000020000000000000000000000000000000000000000000000000000000000000000000000000002104000000000800000000000100000280000000000000000040000005000000000000000000000080800000000000000000000800000000000000080000000000000010000000000000000000000000040000020000000000000400000000000000000000000000000000000000000000000020000000000000000000000800000081000000000100000000000080000800000000000000000000000001000000000200000000000000040000000040000000010000000000000000000000000040000000000000000000200000001000400", "type": "0x2", - "transactionHash": "0xca9f0cf3999e192d1f851453b8e2c07b6f481059813b82f709016377a1944ea8", - "transactionIndex": "0x5e", + "transactionHash": "0x8b5c3ade52dbceb3473a4a532c09a442f0dc63c10b95960f060fe8f4e09a1129", + "transactionIndex": "0x36", "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "blockNumber": "0x29ab294", - "gasUsed": "0x35c011", - "effectiveGasPrice": "0x4c4b72", - "blobGasUsed": "0xcac3d", + "blockNumber": "0x29b3d5f", + "gasUsed": "0x4a68d0", + "effectiveGasPrice": "0x4c56a8", + "blobGasUsed": "0xfc358", "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", "to": null, - "contractAddress": "0xef6a8640c836b16eb8ccd8016ead4c8517ac3033", + "contractAddress": "0x7bc192848003ab1ba286c66afd0dd8a1729c6b02", "daFootprintGasScalar": "0x8b", "l1BaseFeeScalar": "0x8dd", - "l1BlobBaseFee": "0x21c3df", + "l1BlobBaseFee": "0x328f1b", "l1BlobBaseFeeScalar": "0x101c12", - "l1Fee": "0x16ee45cc", - "l1GasPrice": "0x27b0c5f", - "l1GasUsed": "0x17573" + "l1Fee": "0x2106893f", + "l1GasPrice": "0x35a80b5", + "l1GasUsed": "0x1d086" } ], "libraries": [], "pending": [], "returns": {}, - "timestamp": 1774174729845, + "timestamp": 1774245808150, "chain": 8453, - "commit": "67cc18a" + "commit": "be779c0" } \ No newline at end of file diff --git a/script/CreatePlotEthPool.s.sol b/script/CreatePlotEthPool.s.sol new file mode 100644 index 0000000..f91cb04 --- /dev/null +++ b/script/CreatePlotEthPool.s.sol @@ -0,0 +1,111 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.28; + +import {Script, console} from "forge-std/Script.sol"; +import {IPoolManager} from "v4-core/interfaces/IPoolManager.sol"; +import {PoolKey} from "v4-core/types/PoolKey.sol"; +import {Currency} from "v4-core/types/Currency.sol"; +import {IHooks} from "v4-core/interfaces/IHooks.sol"; +import {TickMath} from "v4-core/libraries/TickMath.sol"; +import {IPositionManager} from "v4-periphery/interfaces/IPositionManager.sol"; +import {Actions} from "v4-periphery/libraries/Actions.sol"; +import {LiquidityAmounts} from "v4-periphery/libraries/LiquidityAmounts.sol"; +import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; + +/// @title CreatePlotEthPool — Create and seed PLOT/ETH Uniswap V4 pool on Base Mainnet +/// @notice Creates a native-ETH / PLOT pool (fee 3000, tick spacing 60) and seeds initial liquidity. +/// The pool uses native ETH (address(0)), matching ZapPlotLinkV2's routing. +contract CreatePlotEthPool is Script { + // Base Mainnet Uniswap V4 addresses + address constant POOL_MANAGER = 0x498581fF718922c3f8e6A244956aF099B2652b2b; + address constant POSITION_MANAGER = 0x7C5f5A4bBd8fD63184577525326123B519429bDc; + address constant PERMIT2 = 0x000000000022D473030F116dDEE9F6B43aC78BA3; + + // Tokens + address constant PLOT = 0xF8A2C39111FCEB9C950aAf28A9E34EBaD99b85C1; + address constant NATIVE_ETH = address(0); + + // Pool parameters (must match ZapPlotLinkV2 config) + uint24 constant POOL_FEE = 3000; // 0.30% + int24 constant TICK_SPACING = 60; + + // Liquidity seed amounts (small initial liquidity) + uint256 constant PLOT_SEED = 1_000e18; // 1,000 PLOT + uint256 constant ETH_SEED = 0.001 ether; // 0.001 ETH + + function run() external { + uint256 deployerKey = vm.envUint("DEPLOYER_PRIVATE_KEY"); + address deployer = vm.addr(deployerKey); + + // Native ETH is always address(0), which is < any ERC-20 address + address token0 = NATIVE_ETH; + address token1 = PLOT; + + PoolKey memory poolKey = PoolKey({ + currency0: Currency.wrap(token0), + currency1: Currency.wrap(token1), + fee: POOL_FEE, + tickSpacing: TICK_SPACING, + hooks: IHooks(address(0)) + }); + + // Initial price: 1,000 PLOT = 0.001 ETH → 1 PLOT = 0.000001 ETH + // price (token1/token0) = PLOT/ETH ... wait, V4 price = token1/token0 + // token0 = ETH (address(0)), token1 = PLOT + // Initial price: 1 ETH = 1,000,000 PLOT → tick ≈ 138163, rounded to spacing + int24 initTick = int24(138_120); + uint160 sqrtPriceX96 = TickMath.getSqrtPriceAtTick(initTick); + + vm.startBroadcast(deployerKey); + + // 1. Initialize the pool + int24 tick = IPoolManager(POOL_MANAGER).initialize(poolKey, sqrtPriceX96); + console.log("Pool initialized at tick:"); + console.logInt(tick); + + // 2. Approvals for PLOT via Permit2 + IERC20(PLOT).approve(PERMIT2, type(uint256).max); + IPermit2(PERMIT2).approve(PLOT, POSITION_MANAGER, type(uint160).max, type(uint48).max); + + // 3. Add liquidity around current tick + _addLiquidity(poolKey, tick, sqrtPriceX96, deployer); + + vm.stopBroadcast(); + + console.log("Pool Key:"); + console.log(" currency0 (ETH):", token0); + console.log(" currency1 (PLOT):", token1); + console.log(" fee:", POOL_FEE); + console.logInt(TICK_SPACING); + } + + function _addLiquidity(PoolKey memory poolKey, int24 tick, uint160 sqrtPriceX96, address deployer) internal { + int24 tickLower = ((tick - 6000) / TICK_SPACING) * TICK_SPACING; + int24 tickUpper = ((tick + 6000) / TICK_SPACING) * TICK_SPACING; + + uint160 sqrtLower = TickMath.getSqrtPriceAtTick(tickLower); + uint160 sqrtUpper = TickMath.getSqrtPriceAtTick(tickUpper); + + // token0 = ETH, token1 = PLOT + uint128 liquidity = + LiquidityAmounts.getLiquidityForAmounts(sqrtPriceX96, sqrtLower, sqrtUpper, ETH_SEED, PLOT_SEED); + + bytes memory actions = + abi.encodePacked(uint8(Actions.MINT_POSITION), uint8(Actions.SETTLE_PAIR), uint8(Actions.SWEEP)); + + bytes[] memory params = new bytes[](3); + params[0] = abi.encode(poolKey, tickLower, tickUpper, liquidity, ETH_SEED, PLOT_SEED, deployer, ""); + params[1] = abi.encode(poolKey.currency0, poolKey.currency1); + params[2] = abi.encode(Currency.wrap(NATIVE_ETH), deployer, 0); + + IPositionManager(POSITION_MANAGER).modifyLiquidities{value: ETH_SEED}( + abi.encode(actions, params), block.timestamp + 120 + ); + + console.log("Liquidity seeded:", liquidity); + } +} + +interface IPermit2 { + function approve(address token, address spender, uint160 amount, uint48 expiration) external; +} diff --git a/src/ZapPlotLinkV2.sol b/src/ZapPlotLinkV2.sol index 404a004..8d127c0 100644 --- a/src/ZapPlotLinkV2.sol +++ b/src/ZapPlotLinkV2.sol @@ -11,6 +11,8 @@ import { ExactInputSingleParams, ExactOutputSingleParams, QuoteExactSingleParams, + PathKey, + QuoteExactParams, IV4Quoter, IMCV2_BondFull, IMCV2_BondPeripheryFull, @@ -21,9 +23,11 @@ import { /// @title ZapPlotLinkV2 /// @notice Zap contract to mint storyline tokens on PlotLink (MCV2) using various input tokens. -/// @dev Supports PLOT (direct), ETH, USDC, and HUNT as input tokens via Uniswap V4 swaps. -/// Two-hop path: fromToken → PLOT (Uniswap V4) → storyline token (MCV2_Bond). -/// Forked from MintPad ZapUniV4MCV2 with PlotLink adaptations. +/// @dev Routing: +/// - PLOT: direct to MCV2_Bond (no swap needed) +/// - HUNT: MCV2 bonding curve (HUNT is PLOT's reserve token — no Uniswap) +/// - ETH: Uniswap V4 single-hop (ETH/PLOT pool) → MCV2_Bond +/// - USDC: Uniswap V4 multi-hop (USDC→ETH→PLOT) → MCV2_Bond contract ZapPlotLinkV2 { using SafeERC20 for IERC20; @@ -33,9 +37,14 @@ contract ZapPlotLinkV2 { address public constant ETH_ADDRESS = address(0); // ============ Uniswap V4 Pool Parameters (owner-updatable) ============ + /// @notice PLOT/ETH pool fee and tick spacing (used by ETH route and second leg of USDC route) uint24 public poolFee = 3000; int24 public poolTickSpacing = 60; + /// @notice USDC/ETH pool fee and tick spacing (used by first leg of USDC multi-hop route) + uint24 public usdcPoolFee = 500; + int24 public usdcPoolTickSpacing = 10; + // ============ External Contracts (Base Mainnet) ============ IUniversalRouter public constant UNIVERSAL_ROUTER = IUniversalRouter(0x6fF5693b99212Da76ad316178A184AB56D299b43); address public constant PERMIT2 = 0x000000000022D473030F116dDEE9F6B43aC78BA3; @@ -91,13 +100,16 @@ contract ZapPlotLinkV2 { owner = msg.sender; plotToken = _plotToken; - // Approve PLOT for Bond and BondPeriphery contracts + // Approve PLOT for Bond and BondPeriphery (storyline minting) IERC20(_plotToken).approve(address(BOND), type(uint256).max); IERC20(_plotToken).approve(address(BOND_PERIPHERY), type(uint256).max); - // Setup Permit2 approvals for swap input tokens + // Approve HUNT for Bond and BondPeriphery (HUNT → PLOT via MCV2 bonding curve) + IERC20(HUNT).approve(address(BOND), type(uint256).max); + IERC20(HUNT).approve(address(BOND_PERIPHERY), type(uint256).max); + + // Setup Permit2 approval for USDC (Uniswap V4 multi-hop) _setupPermit2Approval(USDC); - _setupPermit2Approval(HUNT); } receive() external payable {} @@ -141,12 +153,18 @@ contract ZapPlotLinkV2 { require(ok); } - /// @notice Update pool fee and tick spacing (e.g., if migrating to a different pool tier) + /// @notice Update PLOT/ETH pool fee and tick spacing function setPoolKey(uint24 newFee, int24 newTickSpacing) external onlyOwner { poolFee = newFee; poolTickSpacing = newTickSpacing; } + /// @notice Update USDC/ETH pool fee and tick spacing + function setUsdcPoolKey(uint24 newFee, int24 newTickSpacing) external onlyOwner { + usdcPoolFee = newFee; + usdcPoolTickSpacing = newTickSpacing; + } + // ============ External Mint Functions ============ /// @notice Mint exact amount of storyline tokens using various input tokens @@ -166,13 +184,23 @@ contract ZapPlotLinkV2 { (uint256 plotRequired,) = BOND.getReserveForToken(storylineToken, storylineAmount); if (fromToken == plotToken) { + // PLOT → direct if (msg.value != 0) revert ZapPlotLink__InvalidETHAmount(); if (plotRequired > maxFromTokenAmount) revert ZapPlotLink__SlippageExceeded(); IERC20(plotToken).safeTransferFrom(msg.sender, address(this), plotRequired); fromTokenUsed = plotRequired; + } else if (fromToken == HUNT) { + // HUNT → PLOT via MCV2 bonding curve (skip Uniswap) + if (msg.value != 0) revert ZapPlotLink__InvalidETHAmount(); + (uint256 huntNeeded,) = BOND.getReserveForToken(plotToken, plotRequired); + if (huntNeeded > maxFromTokenAmount) revert ZapPlotLink__SlippageExceeded(); + IERC20(HUNT).safeTransferFrom(msg.sender, address(this), huntNeeded); + BOND.mint(plotToken, plotRequired, huntNeeded, address(this)); + fromTokenUsed = huntNeeded; } else { + // ETH or USDC → PLOT via Uniswap V4 _validateAndTransferInput(fromToken, maxFromTokenAmount); - fromTokenUsed = _executeV4SwapExactOutput(fromToken, plotRequired, maxFromTokenAmount); + fromTokenUsed = _swapToPlotExactOutput(fromToken, plotRequired, maxFromTokenAmount); _refundToken(fromToken, maxFromTokenAmount - fromTokenUsed); } @@ -202,12 +230,22 @@ contract ZapPlotLinkV2 { uint256 plotAmount; if (fromToken == plotToken) { + // PLOT → direct if (msg.value != 0) revert ZapPlotLink__InvalidETHAmount(); IERC20(plotToken).safeTransferFrom(msg.sender, address(this), fromTokenAmount); plotAmount = fromTokenAmount; + } else if (fromToken == HUNT) { + // HUNT → PLOT via MCV2 bonding curve (skip Uniswap). + // minTokensToMint=0 is safe: MCV2 bonding curves are deterministic (not an AMM), + // so the HUNT→PLOT rate cannot be manipulated. End-to-end slippage is enforced + // by minStorylineAmount on the subsequent storyline mint below. + if (msg.value != 0) revert ZapPlotLink__InvalidETHAmount(); + IERC20(HUNT).safeTransferFrom(msg.sender, address(this), fromTokenAmount); + plotAmount = BOND_PERIPHERY.mintWithReserveAmount(plotToken, fromTokenAmount, 0, address(this)); } else { + // ETH or USDC → PLOT via Uniswap V4 _validateAndTransferInput(fromToken, fromTokenAmount); - plotAmount = _executeV4Swap(fromToken, fromTokenAmount); + plotAmount = _swapToPlotExactInput(fromToken, fromTokenAmount); } try BOND_PERIPHERY.mintWithReserveAmount(storylineToken, plotAmount, minStorylineAmount, msg.sender) returns ( @@ -234,7 +272,14 @@ contract ZapPlotLinkV2 { if (fromToken == plotToken) { fromTokenAmount = totalPlotRequired; + } else if (fromToken == HUNT) { + // HUNT → PLOT via MCV2 bonding curve + (fromTokenAmount,) = BOND.getReserveForToken(plotToken, totalPlotRequired); + } else if (fromToken == USDC) { + // USDC → ETH → PLOT multi-hop quote + (fromTokenAmount,) = QUOTER.quoteExactOutput(_buildMultiHopQuoteOutput(uint128(totalPlotRequired))); } else { + // ETH → PLOT single-hop quote (fromTokenAmount,) = QUOTER.quoteExactOutputSingle(_buildQuoteParams(fromToken, uint128(totalPlotRequired))); } } @@ -247,7 +292,14 @@ contract ZapPlotLinkV2 { { if (fromToken == plotToken) { plotAmount = fromTokenAmount; + } else if (fromToken == HUNT) { + // HUNT → PLOT via MCV2 bonding curve + (plotAmount,) = BOND_PERIPHERY.getTokensForReserve(plotToken, fromTokenAmount, false); + } else if (fromToken == USDC) { + // USDC → ETH → PLOT multi-hop quote + (plotAmount,) = QUOTER.quoteExactInput(_buildMultiHopQuoteInput(uint128(fromTokenAmount))); } else { + // ETH → PLOT single-hop quote (plotAmount,) = QUOTER.quoteExactInputSingle(_buildQuoteParams(fromToken, uint128(fromTokenAmount))); } @@ -256,7 +308,7 @@ contract ZapPlotLinkV2 { // ============ Pool Key Sorting ============ - /// @dev Sort fromToken and plotToken into canonical V4 pool key order. + /// @dev Sort ETH and plotToken into canonical V4 pool key order. /// currency0 < currency1 is required by Uniswap V4. /// zeroForOne = true means we're swapping currency0 for currency1. function _sortPoolKey(address fromToken) @@ -272,11 +324,11 @@ contract ZapPlotLinkV2 { } else if (uint160(fromToken) < uint160(plotToken)) { currency0 = fromToken; currency1 = plotToken; - zeroForOne = true; // swapping fromToken (currency0) for PLOT (currency1) + zeroForOne = true; } else { currency0 = plotToken; currency1 = fromToken; - zeroForOne = false; // swapping fromToken (currency1) for PLOT (currency0) + zeroForOne = false; } } @@ -299,6 +351,52 @@ contract ZapPlotLinkV2 { }); } + /// @dev Build multi-hop quote params for USDC→ETH→PLOT exact input + function _buildMultiHopQuoteInput(uint128 amount) private view returns (QuoteExactParams memory) { + PathKey[] memory path = new PathKey[](2); + // Leg 1: USDC → ETH + path[0] = PathKey({ + intermediateCurrency: ETH_ADDRESS, + fee: usdcPoolFee, + tickSpacing: usdcPoolTickSpacing, + hooks: IHooks(address(0)), + hookData: bytes("") + }); + // Leg 2: ETH → PLOT + path[1] = PathKey({ + intermediateCurrency: plotToken, + fee: poolFee, + tickSpacing: poolTickSpacing, + hooks: IHooks(address(0)), + hookData: bytes("") + }); + return QuoteExactParams({exactCurrency: USDC, path: path, exactAmount: amount}); + } + + /// @dev Build multi-hop quote params for USDC→ETH→PLOT exact output. + /// V4 Quoter processes path in reverse (last→first), so array order is: + /// path[0] = ETH→USDC leg (processed second), path[1] = PLOT→ETH leg (processed first). + function _buildMultiHopQuoteOutput(uint128 amount) private view returns (QuoteExactParams memory) { + PathKey[] memory path = new PathKey[](2); + // Processed second by quoter: ETH → USDC (using ETH/USDC pool) + path[0] = PathKey({ + intermediateCurrency: USDC, + fee: usdcPoolFee, + tickSpacing: usdcPoolTickSpacing, + hooks: IHooks(address(0)), + hookData: bytes("") + }); + // Processed first by quoter: PLOT → ETH (using PLOT/ETH pool) + path[1] = PathKey({ + intermediateCurrency: ETH_ADDRESS, + fee: poolFee, + tickSpacing: poolTickSpacing, + hooks: IHooks(address(0)), + hookData: bytes("") + }); + return QuoteExactParams({exactCurrency: plotToken, path: path, exactAmount: amount}); + } + function _setupPermit2Approval(address token) private { IERC20(token).approve(PERMIT2, type(uint256).max); IAllowanceTransfer(PERMIT2).approve(token, address(UNIVERSAL_ROUTER), type(uint160).max, type(uint48).max); @@ -307,7 +405,7 @@ contract ZapPlotLinkV2 { function _validateAndTransferInput(address fromToken, uint256 amount) private { if (fromToken == ETH_ADDRESS) { if (msg.value != amount) revert ZapPlotLink__InvalidETHAmount(); - } else if (fromToken == USDC || fromToken == HUNT) { + } else if (fromToken == USDC) { if (msg.value != 0) revert ZapPlotLink__InvalidETHAmount(); IERC20(fromToken).safeTransferFrom(msg.sender, address(this), amount); } else { @@ -315,49 +413,46 @@ contract ZapPlotLinkV2 { } } - /// @notice Execute V4 exactInput swap to PLOT (used by mintReverse) - function _executeV4Swap(address fromToken, uint256 amountIn) private returns (uint256 plotReceived) { + /// @notice Execute V4 swap to PLOT — exact input (used by mintReverse) + function _swapToPlotExactInput(address fromToken, uint256 amountIn) private returns (uint256 plotReceived) { uint256 plotBefore = IERC20(plotToken).balanceOf(address(this)); - (address currency0, address currency1, bool zeroForOne) = _sortPoolKey(fromToken); - - bytes memory commands = abi.encodePacked(uint8(Commands.V4_SWAP)); - bytes[] memory inputs = new bytes[](1); - inputs[0] = _buildV4SwapInputExactIn(currency0, currency1, zeroForOne, uint128(amountIn)); - - if (fromToken == ETH_ADDRESS) { - UNIVERSAL_ROUTER.execute{value: amountIn}(commands, inputs, block.timestamp); + if (fromToken == USDC) { + _executeV4MultiHopSwapExactIn(uint128(amountIn)); } else { - UNIVERSAL_ROUTER.execute(commands, inputs, block.timestamp); + // ETH → PLOT single-hop + (address currency0, address currency1, bool zeroForOne) = _sortPoolKey(fromToken); + bytes memory commands = abi.encodePacked(uint8(Commands.V4_SWAP)); + bytes[] memory inputs = new bytes[](1); + inputs[0] = _buildV4SwapInputExactIn(currency0, currency1, zeroForOne, uint128(amountIn)); + UNIVERSAL_ROUTER.execute{value: amountIn}(commands, inputs, block.timestamp); } plotReceived = IERC20(plotToken).balanceOf(address(this)) - plotBefore; } - /// @notice Execute V4 exactOutput swap to get exact PLOT amount (used by mint) - function _executeV4SwapExactOutput(address fromToken, uint256 plotAmountOut, uint256 amountInMax) + /// @notice Execute V4 swap to PLOT — exact output (used by mint) + function _swapToPlotExactOutput(address fromToken, uint256 plotAmountOut, uint256 amountInMax) private returns (uint256 amountIn) { uint256 balanceBefore = fromToken == ETH_ADDRESS ? address(this).balance : IERC20(fromToken).balanceOf(address(this)); - (address currency0, address currency1, bool zeroForOne) = _sortPoolKey(fromToken); - - bytes memory swapInput = - _buildV4SwapInputExactOut(currency0, currency1, zeroForOne, uint128(plotAmountOut), uint128(amountInMax)); + if (fromToken == USDC) { + _executeV4MultiHopSwapExactOut(uint128(plotAmountOut), uint128(amountInMax)); + } else { + // ETH → PLOT single-hop + (address currency0, address currency1, bool zeroForOne) = _sortPoolKey(fromToken); + bytes memory swapInput = _buildV4SwapInputExactOut( + currency0, currency1, zeroForOne, uint128(plotAmountOut), uint128(amountInMax) + ); - if (fromToken == ETH_ADDRESS) { bytes memory commands = abi.encodePacked(uint8(Commands.V4_SWAP), uint8(Commands.SWEEP)); bytes[] memory inputs = new bytes[](2); inputs[0] = swapInput; inputs[1] = abi.encode(ETH_ADDRESS, address(this), 0); UNIVERSAL_ROUTER.execute{value: amountInMax}(commands, inputs, block.timestamp); - } else { - bytes memory commands = abi.encodePacked(uint8(Commands.V4_SWAP)); - bytes[] memory inputs = new bytes[](1); - inputs[0] = swapInput; - UNIVERSAL_ROUTER.execute(commands, inputs, block.timestamp); } uint256 balanceAfter = @@ -365,6 +460,77 @@ contract ZapPlotLinkV2 { amountIn = balanceBefore - balanceAfter; } + /// @dev Execute USDC→ETH→PLOT multi-hop exact input via Universal Router + function _executeV4MultiHopSwapExactIn(uint128 amountIn) private { + bytes memory actions = + abi.encodePacked(uint8(Actions.SWAP_EXACT_IN), uint8(Actions.SETTLE_ALL), uint8(Actions.TAKE)); + + bytes[] memory actionParams = new bytes[](3); + + PathKey[] memory path = new PathKey[](2); + path[0] = PathKey({ + intermediateCurrency: ETH_ADDRESS, + fee: usdcPoolFee, + tickSpacing: usdcPoolTickSpacing, + hooks: IHooks(address(0)), + hookData: bytes("") + }); + path[1] = PathKey({ + intermediateCurrency: plotToken, + fee: poolFee, + tickSpacing: poolTickSpacing, + hooks: IHooks(address(0)), + hookData: bytes("") + }); + + actionParams[0] = abi.encode(USDC, path, amountIn, uint128(0)); + actionParams[1] = abi.encode(USDC, amountIn); + actionParams[2] = abi.encode(plotToken, address(this), ActionConstants.OPEN_DELTA); + + bytes memory commands = abi.encodePacked(uint8(Commands.V4_SWAP)); + bytes[] memory inputs = new bytes[](1); + inputs[0] = abi.encode(actions, actionParams); + + UNIVERSAL_ROUTER.execute(commands, inputs, block.timestamp); + } + + /// @dev Execute USDC→ETH→PLOT multi-hop exact output via Universal Router + function _executeV4MultiHopSwapExactOut(uint128 plotAmountOut, uint128 maxUsdcIn) private { + bytes memory actions = + abi.encodePacked(uint8(Actions.SWAP_EXACT_OUT), uint8(Actions.SETTLE_ALL), uint8(Actions.TAKE)); + + bytes[] memory actionParams = new bytes[](3); + + // V4 Router processes path in reverse for exact output (last→first). + // path[1] processed first with currencyOut=PLOT → PLOT/ETH pool + // path[0] processed second with currencyOut=ETH → ETH/USDC pool + PathKey[] memory path = new PathKey[](2); + path[0] = PathKey({ + intermediateCurrency: USDC, + fee: usdcPoolFee, + tickSpacing: usdcPoolTickSpacing, + hooks: IHooks(address(0)), + hookData: bytes("") + }); + path[1] = PathKey({ + intermediateCurrency: ETH_ADDRESS, + fee: poolFee, + tickSpacing: poolTickSpacing, + hooks: IHooks(address(0)), + hookData: bytes("") + }); + + actionParams[0] = abi.encode(plotToken, path, plotAmountOut, maxUsdcIn); + actionParams[1] = abi.encode(USDC, maxUsdcIn); + actionParams[2] = abi.encode(plotToken, address(this), ActionConstants.OPEN_DELTA); + + bytes memory commands = abi.encodePacked(uint8(Commands.V4_SWAP)); + bytes[] memory inputs = new bytes[](1); + inputs[0] = abi.encode(actions, actionParams); + + UNIVERSAL_ROUTER.execute(commands, inputs, block.timestamp); + } + function _refundPlot() private { uint256 balance = IERC20(plotToken).balanceOf(address(this)); if (balance > 0) { diff --git a/src/interfaces/IZapInterfaces.sol b/src/interfaces/IZapInterfaces.sol index 9610ead..feb1a46 100644 --- a/src/interfaces/IZapInterfaces.sol +++ b/src/interfaces/IZapInterfaces.sol @@ -43,6 +43,20 @@ struct QuoteExactSingleParams { bytes hookData; } +struct PathKey { + address intermediateCurrency; + uint24 fee; + int24 tickSpacing; + IHooks hooks; + bytes hookData; +} + +struct QuoteExactParams { + address exactCurrency; + PathKey[] path; + uint128 exactAmount; +} + interface IV4Quoter { function quoteExactInputSingle(QuoteExactSingleParams memory params) external @@ -51,6 +65,10 @@ interface IV4Quoter { function quoteExactOutputSingle(QuoteExactSingleParams memory params) external returns (uint256 amountIn, uint256 gasEstimate); + + function quoteExactInput(QuoteExactParams memory params) external returns (uint256 amountOut, uint256 gasEstimate); + + function quoteExactOutput(QuoteExactParams memory params) external returns (uint256 amountIn, uint256 gasEstimate); } // ============ Mint Club V2 Interfaces ============ @@ -83,6 +101,8 @@ library Commands { } library Actions { + uint256 constant SWAP_EXACT_IN = 0x00; + uint256 constant SWAP_EXACT_OUT = 0x01; uint256 constant SWAP_EXACT_IN_SINGLE = 0x06; uint256 constant SWAP_EXACT_OUT_SINGLE = 0x08; uint256 constant SETTLE_ALL = 0x0c;