{"assessments":[],"deployments":[{"attestationHash":"6c9ad745d40801fb1f8477af03a9f1309dab844f1f6ee867feab3f88fd1e8099","chainId":1,"contracts":[{"address":"0x9e43658c7dcbea2c41cc241c786d9e7ac49773d7","blockNumber":26271982,"name":"MerkleDistributor","role":"distributor","txHash":"0xc1d24eef1575709650b05cbdbded73d18c685f6efe912eb985e9681f5052f928"},{"address":"0x59976eeb6288f0bac29d54b85439eecf9c83140f","blockNumber":26271982,"name":"ConditionalsToken","role":"token","txHash":"0xc1d24eef1575709650b05cbdbded73d18c685f6efe912eb985e9681f5052f928"},{"address":"0x784ff9a3ac5d88a30bfff6f7f2a270161fbe6000","blockNumber":26271982,"name":"PoolInitializationGuard","role":"hook","txHash":"0xc1d24eef1575709650b05cbdbded73d18c685f6efe912eb985e9681f5052f928"}],"id":"c3191a6b-e6d1-4a76-89e6-b8d3ee3ddc69","manifestHash":"5eabee79752ad40b9ec90c80ba788fe5e553d3c321b4028a776ec6d9512a6029","status":"live"}],"fuzz":[],"identity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"interpretation":"Records acceptance and evidence. Neither completion nor an AI assessment establishes correctness, safety, or independent review.","jobId":"662a65de-4dd1-42a6-a523-342f4102d24e","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":"93647287fbb76098c77c965e133438a584c15c64c40e1b27524cada4fdce0eb2","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"bc5bfc8455464381f2db18badb2b55cf8bec1e535c019349a0378fa990741171","skillId":"audit-specialist","subagents":3,"tools":[]},"key":"audit_economics","kind":"code","role":"review","skillHash":"bc5bfc8455464381f2db18badb2b55cf8bec1e535c019349a0378fa990741171","skillId":"audit-specialist","state":"accepted"},{"acceptedSubmissionHash":"dd134791e3963d0f93ee2d715d4f1d4333da8df35deff64010957c818dee1729","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"bc5bfc8455464381f2db18badb2b55cf8bec1e535c019349a0378fa990741171","skillId":"audit-specialist","subagents":3,"tools":[]},"key":"audit_flow","kind":"code","role":"review","skillHash":"bc5bfc8455464381f2db18badb2b55cf8bec1e535c019349a0378fa990741171","skillId":"audit-specialist","state":"accepted"},{"acceptedSubmissionHash":"a70e16d9780044956da0cdcdc3c43df948b4619170e1db35a37b8f60c073e752","dependsOn":["build_contract_project","write_foundry_tests","manifest","audit_math","audit_permissions","audit_economics","audit_flow"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"b89279670f5a00f5d26286edee00c97dd158b997031350a01cafe6e0329ad227","skillId":"audit-judge","subagents":4,"tools":[]},"key":"audit_judge","kind":"code","role":"review","skillHash":"b89279670f5a00f5d26286edee00c97dd158b997031350a01cafe6e0329ad227","skillId":"audit-judge","state":"accepted"},{"acceptedSubmissionHash":"649ea80d8abc4c6dbd16516ab66c2c4ba705d255e2153482a369966a4839c9d2","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"bc5bfc8455464381f2db18badb2b55cf8bec1e535c019349a0378fa990741171","skillId":"audit-specialist","subagents":3,"tools":[]},"key":"audit_math","kind":"code","role":"review","skillHash":"bc5bfc8455464381f2db18badb2b55cf8bec1e535c019349a0378fa990741171","skillId":"audit-specialist","state":"accepted"},{"acceptedSubmissionHash":"020190e7d84ccdd21852a5659bd9d42d192f1ff6fd0e57e7339cb2af51aeaef6","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"bc5bfc8455464381f2db18badb2b55cf8bec1e535c019349a0378fa990741171","skillId":"audit-specialist","subagents":3,"tools":[]},"key":"audit_permissions","kind":"code","role":"review","skillHash":"bc5bfc8455464381f2db18badb2b55cf8bec1e535c019349a0378fa990741171","skillId":"audit-specialist","state":"accepted"},{"acceptedSubmissionHash":"8fc8dc5482c3c8b0440b48ce3221426439bbf374e63396988d48e40126c90221","dependsOn":[],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"816fe39c7efd64504a19175b0f4dd9186d61069f37a22684c90358a18c60bddc","skillId":"build-contract-project","tools":[]},"key":"build_contract_project","kind":"code","role":"implement","skillHash":"816fe39c7efd64504a19175b0f4dd9186d61069f37a22684c90358a18c60bddc","skillId":"build-contract-project","state":"accepted"},{"acceptedSubmissionHash":"fe0a0f2c4e33ca94cbd7e620f12e966a828c935c6d0c48303ba41558923665a0","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"tools":[]},"key":"manifest","kind":"code","role":"integrate","skillHash":null,"skillId":null,"state":"accepted"},{"acceptedSubmissionHash":"6ee39269ef537cdb082215ec957b6cf73e0e9d3e557533da0194588c5e7f2607","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"606842ccca0e7c5d3017a54684625438eab9b351eb51dcf0cf88c43d1ea41464","skillId":"write-foundry-tests","subagents":4,"tools":[]},"key":"write_foundry_tests","kind":"code","role":"tests","skillHash":"606842ccca0e7c5d3017a54684625438eab9b351eb51dcf0cf88c43d1ea41464","skillId":"write-foundry-tests","state":"accepted"}],"objective":"A custom token: Conditionals (COND).\nToken name: Conditionals\nToken symbol: COND\nToken supply: 1,000,000,000 with 18 decimals, all minted once to the deployer in the constructor.\nWhat it does: conditionals-bay.vercel.app","parentJobId":null,"planHash":"2e3569ca89a50f1d28ac1fa59307b5c35dce75eec67df1cefc027c728d6c1881","previousHash":"64d0aaba1470ab0fdd6b18323ac2a18bbbb7f0707ab3cb6df92b9664dff64462","projectId":"662a65de-4dd1-42a6-a523-342f4102d24e","publication":{"commit":"38f1a4384e4a055f7d69abb2c88253fdf49df81e","deliveredAt":"2026-10-25T20:08:01.569Z","repoUrl":"https://github.com/identity-md-launches/launch-2581-conditionals"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[],"site":null,"snapshotHash":"013f2360d0cf9d0c899f2bcf782f09abdfb024c4fd8ce0195a817cb926187624","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":null,"device":"b38bea3c04869138","findings":[],"hash":"020190e7d84ccdd21852a5659bd9d42d192f1ff6fd0e57e7339cb2af51aeaef6","nodeId":"13e4685c-503f-46d3-a465-d75d7017122a","outcome":"completed","summary":"The review is complete. The permissions audit of the Conditionals (COND) token found no defects, and the findings file holds an empty list with a full coverage record.\n\n**What was reviewed**\n\n- The token at `src/ConditionalsToken.sol` is a 17-line wrapper over OpenZeppelin ERC20: one constructor mint of the full supply to the deployer, nothing else.\n- All five vendored OpenZeppelin files are byte-identical to upstream v5.0.2, so the real permission surface is the stock allowance model.\n- The compiled ABI exposes only the ten standard ERC-20 selectors plus the supply constant. There is no owner, initializer, receive, fallback, or payable function.\n\n**Checks run against the three guides**\n\n- Access Control: every balance write goes through one path guarded by either msg.sender or a bounded allowance decrement. Thirty admin, mint, burn, freeze, upgrade, and permit selectors revert from both the deployer and a stranger, and the deployer cannot pull a holder's tokens without allowance.\n- Asymmetry: the approve/transferFrom and transfer/transferFrom pairs were diffed. Allowance has one setter and one bounded decrementer, and a failed transfer rolls back the decrement.\n- Trust Gap: there is no privileged actor, price formula, or asymmetric economic primitive. The ERC-20 approve race is inherent and documented in the README, so it is recorded as a coverage note rather than a finding. The factory holding the full supply after construction is the launch design and is recorded as a trust assumption.\n- An opcode walk of the deployed runtime found no reachable DELEGATECALL, CALLCODE, SELFDESTRUCT, CREATE, or external CALL.\n\n**Verification**\n\nThe project's own 33 tests pass, and my scratch probe with four tests, including a 1024-run allowance fuzz, passed before I deleted it. The static analysis lead about a large numeric literal is style only and was not reported.\n\n**Output**\n\nThe file `.imd-findings.json` contains zero findings and eleven coverage rows: one `holds` row for each of the three listed entry points, plus rows for the invariants and trust assumptions above. The working tree is clean apart from that file.","treeHash":null,"usage":{"cachedInputTokens":783412,"inputTokens":322,"model":"claude-fable-5-1","outputTokens":15728,"runtime":"claude","turns":32,"wallClockMs":210800}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"72b617d4b615473a","findings":[],"hash":"649ea80d8abc4c6dbd16516ab66c2c4ba705d255e2153482a369966a4839c9d2","nodeId":"2c18563c-6b50-40d5-abb0-198a7d94e33b","outcome":"completed","summary":"**Result: no defects in the math area.** The findings file at `.imd-findings.json` holds an empty findings list and eight coverage rows, all `holds`, covering the three listed entry points and five invariants.\n\n**What the code is.** The token in `src/ConditionalsToken.sol` is OpenZeppelin v5.0.2 ERC20 plus one constructor mint of a compile-time constant. There is no division, multiplication, scaling, downcast, external call, payable path, sentinel no-op or bytes decoding anywhere in a value path. That leaves the three guides little to bite on, so I verified the few things a reading alone cannot settle.\n\n**What I verified, and how.**\n- The five vendored OpenZeppelin files are byte-identical to upstream commit `dbb6104` (v5.0.2), fetched and compared with `cmp`. A tampered library was the only place a math defect could hide.\n- The supply constant equals 10^27 by three independent routes: python, `cast to-wei`, and a `1e27` literal in a scratch test. That also closes the aderyn large-numeric-literal lead as a lint, not a defect.\n- A scratch suite of 13 tests under `test/scratch/MathBoundary.t.sol` passes. It covers max-uint and supply+1 transfers reverting on the balance check before any arithmetic, a balance reaching exactly the full supply without wrapping, the infinite-allowance sentinel being exactly max with max-1 decrementing normally, allowance equal to and one short of the value, zero-value transferFrom with zero allowance, self-approval, from-equals-to, value sent to nonpayable entry points reverting, a fuzzed three-way partition conserving supply exactly, and the protected test's reachability scan finding no DELEGATECALL, CALLCODE or SELFDESTRUCT.\n- The existing suite of 33 tests and the two 8,192-call invariants pass with the README's fuzz seed. Slither reported nothing.\n\n**Trust notes, not defects.** Tokens sent to the token contract address are unrecoverable, and `transferFrom` emits no `Approval` event. Both are documented OpenZeppelin v5 behaviour and the README states them as intended, so I did not report them.\n\n**Not done.** I changed no project files. The scratch test is my working material and nothing in it is kept. The protected launch tests need the network's v4 harness, which is not in this tree, so I did not run them.","treeHash":null,"usage":{"cachedInputTokens":580086,"inputTokens":258,"model":"claude-fable-5-1","outputTokens":15785,"runtime":"claude","turns":24,"wallClockMs":277627}},{"artifacts":[],"attempt":1,"bundleHash":"2a2cd9d540ba5996852c25a95b5ad0eddf23b8ff9e1d10aed0ed435027793a42","device":"82692ab5f7f7e54e","findings":[],"hash":"6ee39269ef537cdb082215ec957b6cf73e0e9d3e557533da0194588c5e7f2607","nodeId":"5d581a19-8db6-4a25-b01a-5576c331fa8a","outcome":"completed","summary":"I fixed the failing check, and `forge test` now passes: 48 tests, 0 failures, with the verifier's fuzz seed and with two other seeds.\n\n**Cause:** the bug was in the test, not the token. In the open-holder invariant suite, the fuzzer chose the invariant test contract itself (`0x7FA9…1496`) as a recipient. That transfer is legal and the handler counted it correctly. But the same invariant also requires that the test contract holds 0 tokens, so it failed with `79 != 0`.\n\n**Fix:** only `test/ConditionalsToken.edges.t.sol` changed. `OpenHolderHandler` now takes the test contract's address in its constructor. When the fuzzer picks that address, the zero address or a forge-std cheatcode or console address as a recipient or spender, the handler sends to the token contract instead. The invariant itself is unchanged and just as strict: the recorded holders own exactly the fixed supply, and the zero address and the test contract hold nothing.\n\n**Findings:** none. `ConditionalsToken` is a plain OpenZeppelin ERC20 that mints 1,000,000,000 × 10¹⁸ COND once to the deployer. It has no owner and no mint, burn, tax or admin functions, so I did not write `.imd-findings.json`.","treeHash":"5fae146dcc31352d2852b72e735ea6b956e72b40","usage":{"cachedInputTokens":415529,"inputTokens":26,"model":"claude-opus-5-5","outputTokens":11762,"runtime":"claude","turns":14,"wallClockMs":185413}},{"artifacts":[],"attempt":1,"bundleHash":"4f20245ef3fd8fe0b44c4e0681faf87002a125053b9bea0b8b63049a3cd5c807","device":"edf1925726a58c54","findings":[],"hash":"8fc8dc5482c3c8b0440b48ce3221426439bbf374e63396988d48e40126c90221","nodeId":"cefc35c4-2fb9-45a4-8b27-3b3cae03d83d","outcome":"completed","summary":"Implemented COND with 18 decimals and exactly 1,000,000,000 tokens minted once to the deployer. Includes standard ERC-20 transfers and approvals, vendored dependencies, and documented deployment assumptions and responsibilities.\n\nValidation passed with Solidity 0.8.26:\n\n- `forge build`\n- `forge test`: 33 passed using the specified fuzz seed\n- `forge fmt --check`\n\nTests cover success, failure, launch transfers, and supply/accounting invariants.","treeHash":"26c393486f0336a488481e804352dae5d3d50654","usage":{"cachedInputTokens":467712,"inputTokens":44477,"model":"gpt-6-astra","outputTokens":15447,"runtime":"codex","turns":5,"wallClockMs":336076}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"72ae9b5bbd1a54b6","findings":[],"hash":"93647287fbb76098c77c965e133438a584c15c64c40e1b27524cada4fdce0eb2","nodeId":"e6655aa4-004f-44cc-9c8a-1ec22d83886a","outcome":"completed","summary":"The findings file is in place and is excluded from git by the repository's own exclude rule, which is expected for a review. Scratch files are gone and the tree is otherwise untouched.\n\n**Result: no defects found.** The Conditionals token is an unmodified OpenZeppelin v5.0.2 ERC20 with a single constructor mint of 10^27 base units to the deployer. Nothing in the Economic Security, Invariant or Flow Gap guides applies to a failing path in this code.\n\nWhat I verified for the economics area:\n\n- **Vendored dependency integrity.** All five OpenZeppelin files hash identical to upstream commit dbb6104 (v5.0.2), so the transfer and allowance logic is the audited library code.\n- **Supply invariant.** The constant equals exactly 1,000,000,000 × 10^18. The ABI exposes only the standard ERC20 functions plus the constant getter. No mint, burn, owner, initializer, pause or blacklist selector exists, and the internal mint and burn helpers are unreachable after construction.\n- **Launch flows arrive whole.** A scratch test of the factory split (10% distributor, 50% pool manager, 40% remainder to the requester address), a full claim out of the distributor, and a buy and sell round trip through a pool-manager address moved exactly the stated amounts with the sum of balances staying at 10^27. A 1,024-run fuzz of two-hop transfers confirmed conservation.\n- **No periphery seams.** The token makes no external calls, has no hooks, callbacks, receive or fallback, and no payable function. A reachable-opcode scan of the 1,752-byte runtime found no DELEGATECALL, CALLCODE or SELFDESTRUCT.\n- **Project tests.** The repository's 32 unit and fuzz tests and two invariants (8,192 handler calls) pass with the pinned seed.\n\nCoverage record: all three listed entry points are marked `holds`, plus three invariant rows (fixed supply, conservation and whole launch flows, no privileged hand or forbidden opcodes). Nothing was left unreached.\n\nOne note for the manifest step, not a defect: the constructor takes no arguments, so `constructorArgs` for the token must be an empty list and `totalSupply` must be `1000000000000000000000000000`.","treeHash":null,"usage":{"cachedInputTokens":532839,"inputTokens":258,"model":"claude-fable-5-1","outputTokens":9491,"runtime":"claude","turns":27,"wallClockMs":186861}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"f47f953f8e35921e","findings":[],"hash":"a70e16d9780044956da0cdcdc3c43df948b4619170e1db35a37b8f60c073e752","nodeId":"4a8c4957-9c66-42ba-8435-c9c44a0273be","outcome":"completed","summary":"The review is complete. No defects were found, and the findings file records a clean review with full coverage.\n\n**Outcome.** The four specialists and the tester all reported nothing, and I reproduced that result independently. The findings file holds an empty findings list and seven coverage rows, three for the listed entry points and four for invariants I checked. The working tree is unchanged apart from that file.\n\n**What I verified against the code:**\n- The token is a 17-line contract that inherits OpenZeppelin ERC20 and mints one billion COND to the caller in a parameterless constructor. There is no owner, no mint, burn, pause, blacklist or upgrade path, and the compiled ABI exposes only approve, transfer and transferFrom as state-changing functions.\n- All five vendored OpenZeppelin files hash identically to upstream v5.0.2 at the commit DEPENDENCIES.md names, so the ERC-20 logic is the audited library, not a modified copy.\n- A scratch test mirroring the protected floor deployed the token via CREATE2 from a factory probe, confirmed the factory holds exactly the manifest supply with 18 decimals, moved the swarm share whole through a distributor and claim, tried 22 common admin selectors from both the deployer and a stranger with every one reverting, and checked allowance semantics including the unlimited case. All passed. The scratch directory was removed afterwards.\n- A reachable-opcode scan of the runtime finds no DELEGATECALL, CALLCODE or SELFDESTRUCT. Runtime and creation code are far under the EIP-170 and factory limits, and no metadata hash is appended.\n- The manifest uses only schema keys, its empty constructorArgs matches the constructor, and its supply and decimals match the code.\n- The project's own 48 tests pass, and the formatter check on project files is clean.\n\n**Static analysis leads.** Slither reported nothing. Aderyn's low \"large numeric literal\" line points at the supply constant, which is written as a readable product equal to 1e27 and is not a defect, so it was dropped.","treeHash":null,"usage":{"cachedInputTokens":307330,"inputTokens":226,"model":"claude-fable-5-1","outputTokens":8653,"runtime":"claude","turns":19,"wallClockMs":119002}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"45aa937328087de3","findings":[],"hash":"dd134791e3963d0f93ee2d715d4f1d4333da8df35deff64010957c818dee1729","nodeId":"493941f8-f75f-4465-bcfe-265afbf55d66","outcome":"completed","summary":"The review found no defects. The findings file at `.imd-findings.json` holds an empty findings list and seven coverage rows, and the working tree is otherwise unchanged.\n\n**What the token is.** `src/ConditionalsToken.sol` is a 17-line contract: it inherits the vendored OpenZeppelin v5.0.2 ERC-20 and mints 10^27 base units to the deployer in the constructor. There is no owner, mint, burn, tax, hook, callback, or external call.\n\n**Execution Trace pass.** I traced all three entry points to their final state in the inherited code. Transfer checks the receiver and balance before an unchecked subtract and exact credit. TransferFrom spends allowance first and then moves balance, and I confirmed a failed transfer restores the allowance. Infinite allowance is the only sentinel path and it skips nothing the standard requires.\n\n**Periphery pass.** Every vendored OpenZeppelin file matches the upstream commit byte for byte by SHA-256. Decimals are hardcoded to 18. A reachable-opcode scan of the runtime found no DELEGATECALL, CALLCODE, SELFDESTRUCT, CALL, or STATICCALL.\n\n**First Principles pass.** The supply constant equals the specified 10^27, the mint goes to msg.sender under CREATE2 from a factory-like contract, and the launch flows move exact amounts. The project site describes IMD mechanics only and names no COND transfer rules, so the plain fixed-supply token matches the brief.\n\n**Checks run.** Build, the project's 33 unit, fuzz and invariant tests with the pinned seed, and format check all pass. The one aderyn lead was the large numeric literal, which is style only. The standard ERC-20 approve race exists here as in every unmodified ERC-20 and is documented in the README, so I did not report it as a defect.\n\n**Not covered.** The protected launch harness needs the network's Uniswap v4 fixtures, which are not in this tree, so the full seed-and-swap path was exercised only through the project's own pool-address transfer test.","treeHash":null,"usage":{"cachedInputTokens":346900,"inputTokens":194,"model":"claude-fable-5-1","outputTokens":8700,"runtime":"claude","turns":21,"wallClockMs":127030}},{"artifacts":[],"attempt":1,"bundleHash":"b720900cd8834ea1e8204375a024c4df6f3d649753dd187a129da23840617c94","device":"b0001bc8a5c908cd","findings":[],"hash":"fe0a0f2c4e33ca94cbd7e620f12e966a828c935c6d0c48303ba41558923665a0","nodeId":"de9f31bb-3453-4edf-b984-040e47851174","outcome":"completed","summary":"I wrote `launch.json` for the Conditionals (COND) launch, and it's the only file changed. `forge build` succeeds and `forge test` passes all 33 tests, run with the job's fuzz seed. I haven't committed it; it's sitting as a new file in the working tree.\n\nThe protected checks you gave me didn't run here. They import contracts that aren't in this repository (`src/LaunchLiquidity.sol`, `src/PoolInitializationGuard.sol`, `src/HookFlags.sol`) and need launch settings like the factory and pool manager addresses from the environment. So the 33 passing tests are only the repository's own tests. I checked the manifest itself only by confirming it is valid JSON and by reading it against the schema rules.\n\nWhat the manifest says:\n- **Token:** the contract is `ConditionalsToken` (from `src/ConditionalsToken.sol`), named \"Conditionals\", symbol \"COND\", 18 decimals.\n- **Constructor arguments:** none. The constructor takes no parameters, so `constructorArgs` is an empty list.\n- **Total supply:** `\"1000000000000000000000000000\"`, which is exactly what the constructor mints once to the deployer (1,000,000,000 × 10^18).\n- **Other contracts:** none. The accepted code has only the token, so `contracts` is empty.\n- **Pool:** pair token `0xd34a99bc0f67ae1bbd63c660e6d0b0dd03e263b7`, fee 12500, tick spacing 60, and the one-to-one starting price `79228162514264337593543950336`.\n- **Economics:** copied exactly from the brief.\n- **Notes:** a short description saying the token has a fixed supply, no owner, no tax and no extra contracts, plus the project site.","treeHash":"a3eded1ea7b0634785969a2fb72edfee7b062427","usage":{"cachedInputTokens":122761,"inputTokens":14,"model":"claude-opus-5-5","outputTokens":2408,"runtime":"claude","turns":7,"wallClockMs":51030}}],"verification":[{"checks":[{"durationMs":1819,"exitCode":0,"name":"build","output":"Compiling 28 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.70s\nCompiler run successful!\n","passed":true},{"durationMs":2531,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 14 tests for test/ConditionalsToken.edges.t.sol:ConditionalsTokenEdgesTest\n[PASS] testFuzz_ApproveAnyPairIsIsolated(address,address,uint256) (runs: 1024, μ: 82992, ~: 83376)\n[PASS] testFuzz_ApproveFromZeroOwnerReverts(address,uint256) (runs: 1024, μ: 31143, ~: 31154)\n[PASS] testFuzz_TransferFromToZeroAlwaysReverts(uint256) (runs: 1024, μ: 93725, ~: 93460)\nLogs:\n  Bound result 686284308164386583345181657\n\n[PASS] testFuzz_TwoHopRoundTripRestoresBalances(uint256) (runs: 1024, μ: 114400, ~: 114314)\nLogs:\n  Bound result 24\n\n[PASS] testFuzz_UnknownSelectorsRevert(bytes4,bytes) (runs: 1024, μ: 47712, ~: 47459)\n[PASS] test_AllowanceAboveBalanceStillLimitedByBalance() (gas: 147797)\n[PASS] test_AllowanceExactlyOneBelowAmountReverts() (gas: 177567)\n[PASS] test_ApproveEmitsExactlyOneApprovalLog() (gas: 60836)\n[PASS] test_ApproveToSelfAndSelfSpendWorks() (gas: 128913)\n[PASS] test_FailedCallsEmitNothingAndChangeNothing() (gas: 143369)\n[PASS] test_FixedSupplyConstantMatchesTotalSupplyAcrossDeployers() (gas: 57237)\n[PASS] test_TokenCanHoldAndReturnNothingStuck() (gas: 73207)\n[PASS] test_TransferEmitsExactlyOneLog() (gas: 67629)\n[PASS] test_TransferFromEmitsOnlyTransferForFiniteAndInfiniteAllowance() (gas: 207879)\nSuite result: ok. 14 passed; 0 failed; 0 skipped; finished in 64.59ms (172.44ms CPU time)\n\nRan 32 tests for test/ConditionalsToken.t.sol:ConditionalsTokenTest\n[PASS] testFuzz_InsufficientAllowanceIsAtomic(uint256,uint256) (runs: 1024, μ: 133024, ~: 133809)\nLogs:\n  Bound result 730525786011772805211137235\n  Bound result 229467814169236277227925775\n\n[PASS] testFuzz_TransferBeyondBalanceIsAtomic(uint256,uint256) (runs: 1024, μ: 137283, ~: 137769)\nLogs:\n  Bound result 167184790705370\n  Bound result 115792089237316195423570985008687907853269984665640564039457583840728338934564\n\n[PASS] testFuzz_TransferFromRespectsBalanceAndAllowance(uint256,uint256) (runs: 1024, μ: 164174, ~: 165178)\nLogs:\n  Bound result 3947183720624\n  Bound result 6056825749663780140100880542118720573266005405496073805355\n\n[PASS] testFuzz_TransferToAnyNonzeroRecipient(address,uint256) (runs: 1024, μ: 92823, ~: 93096)\nLogs:\n  Bound result 18532133\n\n[PASS] test_ApprovalCanBeReplacedAndRevoked() (gas: 172380)\n[PASS] test_ApprovalIsScopedToOwnerAndSpender() (gas: 157157)\n[PASS] test_ApproveEmitsEventAndDoesNotMoveTokens() (gas: 88822)\n[PASS] test_ApproveZeroSpenderReverts() (gas: 37551)\n[PASS] test_ConstructorEmitsMintAndUsesImmediateDeployer() (gas: 34920)\n[PASS] test_Create2MintsWholeSupplyToFactoryWithoutExternalDependencies() (gas: 232643)\n[PASS] test_DeployerCannotPullHolderTokensWithoutApproval() (gas: 158002)\n[PASS] test_HolderTransferFromRequiresAllowanceToo() (gas: 35682)\n[PASS] test_InfiniteAllowanceRemainsUnchanged() (gas: 139399)\n[PASS] test_LaunchDistributionClaimsAndPoolTransfersAreExact() (gas: 756674)\n[PASS] test_MetadataAndEntireSupply() (gas: 107413)\n[PASS] test_NoAdministrativeOrAdditionalIssuanceEntrypoints() (gas: 749649)\n[PASS] test_PlainEtherPaymentReverts() (gas: 40082)\n[PASS] test_SelfTransferPreservesBalance() (gas: 51485)\n[PASS] test_SelfTransferStillChecksBalance() (gas: 35864)\n[PASS] test_TransferEntireSupplyAndSmallestUnit() (gas: 153845)\n[PASS] test_TransferFromConsumesAllowanceAndEmitsTransfer() (gas: 274347)\n[PASS] test_TransferFromInsufficientBalanceRollsBackAllowance() (gas: 126197)\n[PASS] test_TransferFromToSameHolderConsumesAllowanceNotBalance() (gas: 105333)\n[PASS] test_TransferFromToZeroRollsBackAllowance() (gas: 114243)\n[PASS] test_TransferFromZeroSenderReverts() (gas: 37903)\n[PASS] test_TransferInsufficientBalanceReverts() (gas: 57471)\n[PASS] test_TransferMovesExactAmountAndEmitsEvent() (gas: 91484)\n[PASS] test_TransferToContractNeedsNoCallback() (gas: 155990)\n[PASS] test_TransferToZeroRevertsEvenForZeroAmount() (gas: 71904)\n[PASS] test_UnapprovedSpenderCannotUseAnotherSpendersAllowance() (gas: 105196)\n[PASS] test_ZeroTransferFromEmptyAccountEmitsEvent() (gas: 63101)\n[PASS] test_ZeroTransferFromNeedsNoAllowance() (gas: 78738)\nSuite result: ok. 32 passed; 0 failed; 0 skipped; finished in 64.64ms (245.86ms CPU time)\n\nRan 1 test for test/ConditionalsToken.edges.t.sol:ConditionalsTokenOpenHolderInvariantTest\n[PASS]\nConditionalsTokenOpenHolderInvariantTest invariants:\n[PASS] invariant_MetadataNeverChanges\n[PASS] invariant_RecordedHoldersOwnWholeFixedSupply\n ConditionalsTokenOpenHolderInvariantTest invariants (runs: 128, calls: 8192, reverts: 0)\n\n╭-------------------+---------------+-------+---------+----------╮\n| Contract          | Selector      | Calls | Reverts | Discards |\n+================================================================+\n| OpenHolderHandler | burnAttempt   | 2006  | 0       | 0        |\n|-------------------+---------------+-------+---------+----------|\n| OpenHolderHandler | delegated     | 2077  | 0       | 0        |\n|-------------------+---------------+-------+---------+----------|\n| OpenHolderHandler | overdraft     | 2032  | 0       | 0        |\n|-------------------+---------------+-------+---------+----------|\n| OpenHolderHandler | transferToNew | 2077  | 0       | 0        |\n╰-------------------+---------------+-------+---------+----------╯\n\nLogs:\n  Bound result 2550\n  Bound result 1250\n  Bound result 360\n  Bound result 7268\n  Bound result 5830\n  Bound result 5\n  Bound result 188\n  Bound result 175\n  Bound result 6\n  Bound result 4\n  Bound result 0\n  Bound result 2311\n  Bound result 6\n  Bound result 0\n  Bound result 3\n  Bound result 1\n  Bound result 612243743669088259233439121\n  Bound result 3\n  Bound result 0\n  Bound result 1751\n  Bound result 42\n  Bound result 1\n  Bound result 4096\n  Bound result 1707\n  Bound result 1\n  Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639935\n  Bound result 0\n  Bound result 1594\n  Bound result 1000000000\n  Bound result 166803082161589657563642264\n  Bound result 9\n  Bound result 2405\n  Bound result 40000000000000000000\n  Bound result 4294967296\n  Bound result 1\n  Bound result 0\n  Bound result 1\n  Bound result 523\n  Bound result 261\n  Bound result 0\n  Bound result 18132786091892721772841938\n  Bound result 889\n  Bound result 11\n  Bound result 11\n  Bound result 153399485777769112398341645\n  Bound result 1000000000\n  Bound result 143\n  Bound result 57\n  Bound result 3482\n  Bound result 13\n  Bound result 29\n  Bound result 48\n  Bound result 0\n  Bound result 10\n  Bound result 398\n  Bound result 0\n  Bound result 3858\n  Bound result 0\n  Bound result 1\n  Bound result 1000000000000000000\n  Bound result 0\n  Bound result 1\n  Bound result 804\n  Bound result 5\n  Bound result 6045\n  Bound result 313365896\n  Bound result 6\n  Bound result 0\n  Bound result 1\n  Bound result 0\n  Bound result 622\n  Bound result 3332\n  Bound result 4\n  Bound result 5\n  Bound result 9\n  Bound result 2\n  Bound result 4096\n  Bound result 3844\n  Bound result 4\n  Bound result 7164\n  Bound result 5325\n  Bound result 5\n  Bound result 0\n  Bound result 1\n  Bound result 1696\n  Bound result 2089\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 1.43s (1.43s CPU time)\n\nRan 1 test for test/ConditionalsToken.invariant.t.sol:ConditionalsTokenInvariantTest\n[PASS]\nConditionalsTokenInvariantTest invariants:\n[PASS] invariant_BalancesAndAllowancesMatchIndependentLedger\n[PASS] invariant_SupplyIsFixedAndAllBalancesAreAccountedFor\n ConditionalsTokenInvariantTest invariants (runs: 128, calls: 8192, reverts: 0)\n\n╭--------------+--------------+-------+---------+----------╮\n| Contract     | Selector     | Calls | Reverts | Discards |\n+==========================================================+\n| TokenHandler | approve      | 2780  | 0       | 0        |\n|--------------+--------------+-------+---------+----------|\n| TokenHandler | transfer     | 2684  | 0       | 0        |\n|--------------+--------------+-------+---------+----------|\n| TokenHandler | transferFrom | 2728  | 0       | 0        |\n╰--------------+--------------+-------+---------+----------╯\n\nLogs:\n  Bound result 13\n  Bound result 0\n  Bound result 0\n  Bound result 3\n  Bound result 1\n  Bound result 1\n  Bound result 1\n  Bound result 1695\n  Bound result 0\n  Bound result 5410\n  Bound result 2499\n  Bound result 0\n  Bound result 1\n  Bound result 0\n  Bound result 4162\n  Bound result 931\n  Bound result 963204426014882706149178190\n  Bound result 4\n  Bound result 10\n  Bound result 1\n  Bound result 155\n  Bound result 874\n  Bound result 0\n  Bound result 0\n  Bound result 2454\n  Bound result 0\n  Bound result 0\n  Bound result 18\n  Bound result 0\n  Bound result 0\n  Bound result 7\n  Bound result 1\n  Bound result 10\n  Bound result 1\n  Bound result 999999999999999999999994577\n  Bound result 0\n  Bound result 23000000000000000000\n  Bound result 9\n  Bound result 1242826417\n  Bound result 1\n  Bound result 2\n  Bound result 23000000001242831847\n  Bound result 18\n  Bound result 60000000000000000000\n  Bound result 999999916999999998757168151\n  Bound result 1\n  Bound result 0\n  Bound result 295\n  Bound result 7\n  Bound result 242137505241460268293664882\n  Bound result 1699\n  Bound result 1000000000000000000\n  Bound result 2056\n  Bound result 9\n  Bound result 1\n  Bound result 0\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 2.39s (2.39s CPU time)\n\nRan 4 test suites in 2.40s (3.95s CPU time): 48 tests passed, 0 failed, 0 skipped (48 total tests)\n","passed":true},{"durationMs":49,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"ConditionalsToken.approve(address,uint256)\",\"ConditionalsToken.transfer(address,uint256)\",\"ConditionalsToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":3,\"DEPENDENCIES.md\":27,\"README.md\":151,\"foundry.toml\":19,\"remappings.txt\":2,\"src/ConditionalsToken.sol\":17,\"test/ConditionalsToken.edges.t.sol\":312,\"test/ConditionalsToken.invariant.t.sol\":112,\"test/ConditionalsToken.t.sol\":400},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"6ee39269ef537cdb082215ec957b6cf73e0e9d3e557533da0194588c5e7f2607","verifiedTreeHash":"5fae146dcc31352d2852b72e735ea6b956e72b40","verifierVersion":"0.1.0+f3653923"},{"checks":[{"durationMs":1211,"exitCode":0,"name":"build","output":"Compiling 27 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.13s\nCompiler run successful!\n","passed":true},{"durationMs":2564,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 32 tests for test/ConditionalsToken.t.sol:ConditionalsTokenTest\n[PASS] testFuzz_InsufficientAllowanceIsAtomic(uint256,uint256) (runs: 1024, μ: 133066, ~: 133809)\nLogs:\n  Bound result 19927\n  Bound result 10\n\n[PASS] testFuzz_TransferBeyondBalanceIsAtomic(uint256,uint256) (runs: 1024, μ: 137349, ~: 137757)\nLogs:\n  Bound result 1092\n  Bound result 65375578059976849524657\n\n[PASS] testFuzz_TransferFromRespectsBalanceAndAllowance(uint256,uint256) (runs: 1024, μ: 164205, ~: 165178)\nLogs:\n  Bound result 65375578059976849524657\n  Bound result 115792089237316195423570985008687907853269984665640563974082005947936280116371\n\n[PASS] testFuzz_TransferToAnyNonzeroRecipient(address,uint256) (runs: 1024, μ: 92781, ~: 93096)\nLogs:\n  Bound result 9802\n\n[PASS] test_ApprovalCanBeReplacedAndRevoked() (gas: 172380)\n[PASS] test_ApprovalIsScopedToOwnerAndSpender() (gas: 157157)\n[PASS] test_ApproveEmitsEventAndDoesNotMoveTokens() (gas: 88822)\n[PASS] test_ApproveZeroSpenderReverts() (gas: 37551)\n[PASS] test_ConstructorEmitsMintAndUsesImmediateDeployer() (gas: 34920)\n[PASS] test_Create2MintsWholeSupplyToFactoryWithoutExternalDependencies() (gas: 232643)\n[PASS] test_DeployerCannotPullHolderTokensWithoutApproval() (gas: 158002)\n[PASS] test_HolderTransferFromRequiresAllowanceToo() (gas: 35682)\n[PASS] test_InfiniteAllowanceRemainsUnchanged() (gas: 139399)\n[PASS] test_LaunchDistributionClaimsAndPoolTransfersAreExact() (gas: 756674)\n[PASS] test_MetadataAndEntireSupply() (gas: 107413)\n[PASS] test_NoAdministrativeOrAdditionalIssuanceEntrypoints() (gas: 749649)\n[PASS] test_PlainEtherPaymentReverts() (gas: 40082)\n[PASS] test_SelfTransferPreservesBalance() (gas: 51485)\n[PASS] test_SelfTransferStillChecksBalance() (gas: 35864)\n[PASS] test_TransferEntireSupplyAndSmallestUnit() (gas: 153845)\n[PASS] test_TransferFromConsumesAllowanceAndEmitsTransfer() (gas: 274347)\n[PASS] test_TransferFromInsufficientBalanceRollsBackAllowance() (gas: 126197)\n[PASS] test_TransferFromToSameHolderConsumesAllowanceNotBalance() (gas: 105333)\n[PASS] test_TransferFromToZeroRollsBackAllowance() (gas: 114243)\n[PASS] test_TransferFromZeroSenderReverts() (gas: 37903)\n[PASS] test_TransferInsufficientBalanceReverts() (gas: 57471)\n[PASS] test_TransferMovesExactAmountAndEmitsEvent() (gas: 91484)\n[PASS] test_TransferToContractNeedsNoCallback() (gas: 155990)\n[PASS] test_TransferToZeroRevertsEvenForZeroAmount() (gas: 71904)\n[PASS] test_UnapprovedSpenderCannotUseAnotherSpendersAllowance() (gas: 105196)\n[PASS] test_ZeroTransferFromEmptyAccountEmitsEvent() (gas: 63101)\n[PASS] test_ZeroTransferFromNeedsNoAllowance() (gas: 78738)\nSuite result: ok. 32 passed; 0 failed; 0 skipped; finished in 31.69ms (126.68ms CPU time)\n\nRan 1 test for test/ConditionalsToken.invariant.t.sol:ConditionalsTokenInvariantTest\n[PASS]\nConditionalsTokenInvariantTest invariants:\n[PASS] invariant_BalancesAndAllowancesMatchIndependentLedger\n[PASS] invariant_SupplyIsFixedAndAllBalancesAreAccountedFor\n ConditionalsTokenInvariantTest invariants (runs: 128, calls: 8192, reverts: 0)\n\n╭--------------+--------------+-------+---------+----------╮\n| Contract     | Selector     | Calls | Reverts | Discards |\n+==========================================================+\n| TokenHandler | approve      | 2780  | 0       | 0        |\n|--------------+--------------+-------+---------+----------|\n| TokenHandler | transfer     | 2684  | 0       | 0        |\n|--------------+--------------+-------+---------+----------|\n| TokenHandler | transferFrom | 2728  | 0       | 0        |\n╰--------------+--------------+-------+---------+----------╯\n\nLogs:\n  Bound result 7\n  Bound result 0\n  Bound result 0\n  Bound result 3\n  Bound result 957625570\n  Bound result 1\n  Bound result 1\n  Bound result 1\n  Bound result 0\n  Bound result 2\n  Bound result 1\n  Bound result 2499\n  Bound result 1\n  Bound result 1\n  Bound result 0\n  Bound result 930\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 1\n  Bound result 4589308932962696497922\n  Bound result 0\n  Bound result 1\n  Bound result 18\n  Bound result 1\n  Bound result 1\n  Bound result 18\n  Bound result 1879\n  Bound result 0\n  Bound result 21\n  Bound result 292\n  Bound result 27\n  Bound result 687\n  Bound result 9\n  Bound result 840414284876828474050557926\n  Bound result 2\n  Bound result 6\n  Bound result 1\n  Bound result 1\n  Bound result 18\n  Bound result 6\n  Bound result 24576\n  Bound result 1\n  Bound result 1889567282\n  Bound result 1410\n  Bound result 1060\n  Bound result 297\n  Bound result 4\n  Bound result 242137505241460268293664882\n  Bound result 6458\n  Bound result 1000000000\n  Bound result 2074\n  Bound result 9\n  Bound result 7\n  Bound result 7557\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 2.46s (2.46s CPU time)\n\nRan 2 test suites in 2.46s (2.50s CPU time): 33 tests passed, 0 failed, 0 skipped (33 total tests)\n","passed":true},{"durationMs":56,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"ConditionalsToken.approve(address,uint256)\",\"ConditionalsToken.transfer(address,uint256)\",\"ConditionalsToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":3,\"DEPENDENCIES.md\":27,\"README.md\":151,\"foundry.toml\":19,\"remappings.txt\":2,\"src/ConditionalsToken.sol\":17,\"test/ConditionalsToken.invariant.t.sol\":112,\"test/ConditionalsToken.t.sol\":400},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":615,"exitCode":0,"name":"slither","output":"slither: no results at low impact or above","passed":true},{"durationMs":182,"exitCode":0,"name":"aderyn","output":"[low] large-numeric-literal at src/ConditionalsToken.sol:12: Large Numeric Literal","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"8fc8dc5482c3c8b0440b48ce3221426439bbf374e63396988d48e40126c90221","verifiedTreeHash":"26c393486f0336a488481e804352dae5d3d50654","verifierVersion":"0.1.0+f3653923"},{"checks":[{"durationMs":1220,"exitCode":0,"name":"build","output":"Compiling 27 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.10s\nCompiler run successful!\n","passed":true},{"durationMs":2608,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 32 tests for test/ConditionalsToken.t.sol:ConditionalsTokenTest\n[PASS] testFuzz_InsufficientAllowanceIsAtomic(uint256,uint256) (runs: 1024, μ: 133066, ~: 133809)\nLogs:\n  Bound result 19927\n  Bound result 10\n\n[PASS] testFuzz_TransferBeyondBalanceIsAtomic(uint256,uint256) (runs: 1024, μ: 137349, ~: 137757)\nLogs:\n  Bound result 9\n  Bound result 22281\n\n[PASS] testFuzz_TransferFromRespectsBalanceAndAllowance(uint256,uint256) (runs: 1024, μ: 164205, ~: 165178)\nLogs:\n  Bound result 65375578059976849524657\n  Bound result 115792089237316195423570985008687907853269984665640563974082005947936280116371\n\n[PASS] testFuzz_TransferToAnyNonzeroRecipient(address,uint256) (runs: 1024, μ: 92781, ~: 93096)\nLogs:\n  Bound result 0\n\n[PASS] test_ApprovalCanBeReplacedAndRevoked() (gas: 172380)\n[PASS] test_ApprovalIsScopedToOwnerAndSpender() (gas: 157157)\n[PASS] test_ApproveEmitsEventAndDoesNotMoveTokens() (gas: 88822)\n[PASS] test_ApproveZeroSpenderReverts() (gas: 37551)\n[PASS] test_ConstructorEmitsMintAndUsesImmediateDeployer() (gas: 34920)\n[PASS] test_Create2MintsWholeSupplyToFactoryWithoutExternalDependencies() (gas: 232643)\n[PASS] test_DeployerCannotPullHolderTokensWithoutApproval() (gas: 158002)\n[PASS] test_HolderTransferFromRequiresAllowanceToo() (gas: 35682)\n[PASS] test_InfiniteAllowanceRemainsUnchanged() (gas: 139399)\n[PASS] test_LaunchDistributionClaimsAndPoolTransfersAreExact() (gas: 756674)\n[PASS] test_MetadataAndEntireSupply() (gas: 107413)\n[PASS] test_NoAdministrativeOrAdditionalIssuanceEntrypoints() (gas: 749649)\n[PASS] test_PlainEtherPaymentReverts() (gas: 40082)\n[PASS] test_SelfTransferPreservesBalance() (gas: 51485)\n[PASS] test_SelfTransferStillChecksBalance() (gas: 35864)\n[PASS] test_TransferEntireSupplyAndSmallestUnit() (gas: 153845)\n[PASS] test_TransferFromConsumesAllowanceAndEmitsTransfer() (gas: 274347)\n[PASS] test_TransferFromInsufficientBalanceRollsBackAllowance() (gas: 126197)\n[PASS] test_TransferFromToSameHolderConsumesAllowanceNotBalance() (gas: 105333)\n[PASS] test_TransferFromToZeroRollsBackAllowance() (gas: 114243)\n[PASS] test_TransferFromZeroSenderReverts() (gas: 37903)\n[PASS] test_TransferInsufficientBalanceReverts() (gas: 57471)\n[PASS] test_TransferMovesExactAmountAndEmitsEvent() (gas: 91484)\n[PASS] test_TransferToContractNeedsNoCallback() (gas: 155990)\n[PASS] test_TransferToZeroRevertsEvenForZeroAmount() (gas: 71904)\n[PASS] test_UnapprovedSpenderCannotUseAnotherSpendersAllowance() (gas: 105196)\n[PASS] test_ZeroTransferFromEmptyAccountEmitsEvent() (gas: 63101)\n[PASS] test_ZeroTransferFromNeedsNoAllowance() (gas: 78738)\nSuite result: ok. 32 passed; 0 failed; 0 skipped; finished in 28.75ms (119.09ms CPU time)\n\nRan 1 test for test/ConditionalsToken.invariant.t.sol:ConditionalsTokenInvariantTest\n[PASS]\nConditionalsTokenInvariantTest invariants:\n[PASS] invariant_BalancesAndAllowancesMatchIndependentLedger\n[PASS] invariant_SupplyIsFixedAndAllBalancesAreAccountedFor\n ConditionalsTokenInvariantTest invariants (runs: 128, calls: 8192, reverts: 0)\n\n╭--------------+--------------+-------+---------+----------╮\n| Contract     | Selector     | Calls | Reverts | Discards |\n+==========================================================+\n| TokenHandler | approve      | 2780  | 0       | 0        |\n|--------------+--------------+-------+---------+----------|\n| TokenHandler | transfer     | 2684  | 0       | 0        |\n|--------------+--------------+-------+---------+----------|\n| TokenHandler | transferFrom | 2728  | 0       | 0        |\n╰--------------+--------------+-------+---------+----------╯\n\nLogs:\n  Bound result 7\n  Bound result 0\n  Bound result 0\n  Bound result 3\n  Bound result 957625570\n  Bound result 1\n  Bound result 1\n  Bound result 1\n  Bound result 0\n  Bound result 2\n  Bound result 1\n  Bound result 2499\n  Bound result 1\n  Bound result 1\n  Bound result 0\n  Bound result 930\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 1\n  Bound result 4589308932962696497922\n  Bound result 0\n  Bound result 1\n  Bound result 18\n  Bound result 1\n  Bound result 1\n  Bound result 18\n  Bound result 1879\n  Bound result 0\n  Bound result 21\n  Bound result 292\n  Bound result 27\n  Bound result 687\n  Bound result 0\n  Bound result 972\n  Bound result 2\n  Bound result 6\n  Bound result 1\n  Bound result 0\n  Bound result 0\n  Bound result 6\n  Bound result 24576\n  Bound result 2\n  Bound result 826074471\n  Bound result 1314\n  Bound result 0\n  Bound result 296\n  Bound result 4\n  Bound result 242137505241460268293664882\n  Bound result 1818\n  Bound result 0\n  Bound result 1983\n  Bound result 1\n  Bound result 396\n  Bound result 0\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 2.49s (2.49s CPU time)\n\nRan 2 test suites in 2.49s (2.52s CPU time): 33 tests passed, 0 failed, 0 skipped (33 total tests)\n","passed":true},{"durationMs":53,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"ConditionalsToken.approve(address,uint256)\",\"ConditionalsToken.transfer(address,uint256)\",\"ConditionalsToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":3,\"DEPENDENCIES.md\":27,\"README.md\":151,\"foundry.toml\":19,\"launch.json\":24,\"remappings.txt\":2,\"src/ConditionalsToken.sol\":17,\"test/ConditionalsToken.invariant.t.sol\":112,\"test/ConditionalsToken.t.sol\":400},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"fe0a0f2c4e33ca94cbd7e620f12e966a828c935c6d0c48303ba41558923665a0","verifiedTreeHash":"a3eded1ea7b0634785969a2fb72edfee7b062427","verifierVersion":"0.1.0+f3653923"}]}