From 4bee64010682b6e14cf4a14ded2b69acd69c3333 Mon Sep 17 00:00:00 2001 From: Maurelian Date: Mon, 9 Mar 2026 21:45:58 +0000 Subject: [PATCH 01/31] feat(nuts): add update-nuts command Generates a fresh NUT bundle from contracts and snapshots it to the fork-specific location, updating fork_lock.toml with hash and commit. --- justfile | 4 + ops/scripts/update-nuts/main.go | 125 ++++++++++++++++++++++++++++++++ 2 files changed, 129 insertions(+) create mode 100644 ops/scripts/update-nuts/main.go diff --git a/justfile b/justfile index 1f99a1e9bf85c..f6680e4ba169b 100644 --- a/justfile +++ b/justfile @@ -352,6 +352,10 @@ build-rust-release: check-nut-locks: go run ./ops/scripts/check-nut-locks +# Updates the NUT bundle for a fork. Generates fresh bundle from contracts and snapshots it. +update-nuts fork: + go run ./ops/scripts/update-nuts {{fork}} + # Checks that TODO comments have corresponding issues. todo-checker: ./ops/scripts/todo-checker.sh diff --git a/ops/scripts/update-nuts/main.go b/ops/scripts/update-nuts/main.go new file mode 100644 index 0000000000000..f4bfa83cb1dc1 --- /dev/null +++ b/ops/scripts/update-nuts/main.go @@ -0,0 +1,125 @@ +package main + +import ( + "crypto/sha256" + "encoding/hex" + "fmt" + "os" + "os/exec" + "path/filepath" + "strings" + + "github.com/BurntSushi/toml" + + "github.com/ethereum-optimism/optimism/op-core/forks" + opservice "github.com/ethereum-optimism/optimism/op-service" +) + +type forkLockEntry struct { + Bundle string `toml:"bundle"` + Hash string `toml:"hash"` + Commit string `toml:"commit,omitempty"` +} + +func main() { + if len(os.Args) != 2 { + fmt.Fprintf(os.Stderr, "usage: update-nuts \n") + os.Exit(1) + } + + fork := forks.Name(os.Args[1]) + if err := run(fork); err != nil { + fmt.Fprintf(os.Stderr, "error: %v\n", err) + os.Exit(1) + } +} + +func run(fork forks.Name) error { + if !forks.IsValid(fork) { + return fmt.Errorf("unknown fork %q; valid forks: %v", fork, forks.All) + } + + root, err := opservice.FindMonorepoRoot(".") + if err != nil { + return fmt.Errorf("finding monorepo root: %w", err) + } + + // Generate fresh bundle from contracts. + fmt.Println("Generating NUT bundle...") + contractsDir := filepath.Join(root, "packages", "contracts-bedrock") + cmd := exec.Command("just", "generate-nut-bundle") + cmd.Dir = contractsDir + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + if err := cmd.Run(); err != nil { + return fmt.Errorf("generating NUT bundle: %w", err) + } + + // Copy current-upgrade-bundle.json → _nut_bundle.json. + srcPath := filepath.Join(contractsDir, "snapshots", "upgrades", "current-upgrade-bundle.json") + content, err := os.ReadFile(srcPath) + if err != nil { + return fmt.Errorf("reading generated bundle: %w", err) + } + + bundleRel := filepath.Join("op-node", "rollup", "derive", string(fork)+"_nut_bundle.json") + dstPath := filepath.Join(root, bundleRel) + if err := os.WriteFile(dstPath, content, 0644); err != nil { + return fmt.Errorf("writing bundle to %s: %w", bundleRel, err) + } + fmt.Printf("Copied bundle to %s\n", bundleRel) + + // Compute sha256 of the bundle. + hash := sha256.Sum256(content) + hashStr := "sha256:" + hex.EncodeToString(hash[:]) + + // Get current git commit. + commitCmd := exec.Command("git", "rev-parse", "HEAD") + commitCmd.Dir = root + commitOut, err := commitCmd.Output() + if err != nil { + return fmt.Errorf("getting git commit: %w", err) + } + commit := strings.TrimSpace(string(commitOut)) + + // Read existing fork_lock.toml, update the entry, write back. + lockPath := filepath.Join(root, "op-core", "nuts", "fork_lock.toml") + var locks map[string]forkLockEntry + if _, err := toml.DecodeFile(lockPath, &locks); err != nil { + return fmt.Errorf("reading fork lock file: %w", err) + } + if locks == nil { + locks = make(map[string]forkLockEntry) + } + + locks[string(fork)] = forkLockEntry{ + Bundle: bundleRel, + Hash: hashStr, + Commit: commit, + } + + f, err := os.Create(lockPath) + if err != nil { + return fmt.Errorf("opening fork lock file for writing: %w", err) + } + defer f.Close() + + // Write header comment. + if _, err := fmt.Fprintln(f, "# NUT Bundle Fork Lock"); err != nil { + return err + } + if _, err := fmt.Fprintln(f, "# To update a locked bundle, run: just update-nuts "); err != nil { + return err + } + if _, err := fmt.Fprintln(f); err != nil { + return err + } + + enc := toml.NewEncoder(f) + if err := enc.Encode(locks); err != nil { + return fmt.Errorf("writing fork lock file: %w", err) + } + + fmt.Printf("Updated fork_lock.toml: fork=%s hash=%s commit=%s\n", fork, hashStr, commit[:12]) + return nil +} From 81801b59ea760622e5f00b64103bf3078a574ceb Mon Sep 17 00:00:00 2001 From: Maurelian Date: Tue, 10 Mar 2026 00:52:13 +0000 Subject: [PATCH 02/31] fix(nuts): remove bundle generation from update-nuts Let the caller generate the bundle separately. update-nuts should only snapshot and lock what already exists. --- justfile | 2 +- ops/scripts/update-nuts/main.go | 16 +++------------- 2 files changed, 4 insertions(+), 14 deletions(-) diff --git a/justfile b/justfile index f6680e4ba169b..6d7e772239fa4 100644 --- a/justfile +++ b/justfile @@ -352,7 +352,7 @@ build-rust-release: check-nut-locks: go run ./ops/scripts/check-nut-locks -# Updates the NUT bundle for a fork. Generates fresh bundle from contracts and snapshots it. +# Snapshots current-upgrade-bundle.json as a fork's NUT bundle and updates the lock file. update-nuts fork: go run ./ops/scripts/update-nuts {{fork}} diff --git a/ops/scripts/update-nuts/main.go b/ops/scripts/update-nuts/main.go index f4bfa83cb1dc1..3ab542e600c92 100644 --- a/ops/scripts/update-nuts/main.go +++ b/ops/scripts/update-nuts/main.go @@ -44,22 +44,12 @@ func run(fork forks.Name) error { return fmt.Errorf("finding monorepo root: %w", err) } - // Generate fresh bundle from contracts. - fmt.Println("Generating NUT bundle...") - contractsDir := filepath.Join(root, "packages", "contracts-bedrock") - cmd := exec.Command("just", "generate-nut-bundle") - cmd.Dir = contractsDir - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - if err := cmd.Run(); err != nil { - return fmt.Errorf("generating NUT bundle: %w", err) - } - // Copy current-upgrade-bundle.json → _nut_bundle.json. - srcPath := filepath.Join(contractsDir, "snapshots", "upgrades", "current-upgrade-bundle.json") + // The caller is responsible for running `just generate-nut-bundle` first if needed. + srcPath := filepath.Join(root, "packages", "contracts-bedrock", "snapshots", "upgrades", "current-upgrade-bundle.json") content, err := os.ReadFile(srcPath) if err != nil { - return fmt.Errorf("reading generated bundle: %w", err) + return fmt.Errorf("reading bundle (run 'just generate-nut-bundle' in packages/contracts-bedrock/ first): %w", err) } bundleRel := filepath.Join("op-node", "rollup", "derive", string(fork)+"_nut_bundle.json") From 7e8b8582a4a03ac89767114cc618ce3e08de6bb7 Mon Sep 17 00:00:00 2001 From: Maurelian Date: Tue, 10 Mar 2026 01:30:25 +0000 Subject: [PATCH 03/31] docs(nuts): add README documenting NUT bundle workflow Covers generation, snapshotting, verification, CI checks, and the process for adding a new fork's bundle. --- op-core/nuts/README.md | 71 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 op-core/nuts/README.md diff --git a/op-core/nuts/README.md b/op-core/nuts/README.md new file mode 100644 index 0000000000000..8ce1702013f7d --- /dev/null +++ b/op-core/nuts/README.md @@ -0,0 +1,71 @@ +# NUT Bundles + +Network Upgrade Transaction (NUT) bundles define the L2 deposit transactions that activate a hardfork. Each bundle is a JSON file containing ordered transactions (implementation deployments, proxy upgrades, etc.) that the rollup node embeds and executes at the fork activation block. + +## Files + +| File | Purpose | +|------|---------| +| `fork_lock.toml` | Lock file mapping fork names to bundle paths, sha256 hashes, and source commits | +| `op-node/rollup/derive/_nut_bundle.json` | Embedded bundle consumed by op-node at fork activation | +| `packages/contracts-bedrock/snapshots/upgrades/current-upgrade-bundle.json` | Generated bundle (not committed, regenerated from contracts) | + +## Workflow + +### Generating a bundle + +```bash +cd packages/contracts-bedrock +just generate-nut-bundle +``` + +This runs `GenerateNUTBundle.s.sol` and writes `current-upgrade-bundle.json`. + +### Snapshotting a bundle for a fork + +```bash +just update-nuts +``` + +This copies `current-upgrade-bundle.json` to `op-node/rollup/derive/_nut_bundle.json` and updates `fork_lock.toml` with the sha256 hash and current git commit. + +Typical usage after modifying contracts: + +```bash +cd packages/contracts-bedrock && just generate-nut-bundle && cd ../.. +just update-nuts karst +``` + +### Verifying a bundle + +```bash +just verify-nuts +``` + +Checks that: +1. The bundle file exists and its sha256 matches the lock +2. If a `commit` is recorded, creates a temporary worktree at that commit, regenerates the bundle, and compares byte-for-byte + +Requires `forge` for the provenance check (step 2). + +### CI checks + +- **`check-nut-locks`** — Verifies all bundle hashes match their lock entries, and that every `*_nut_bundle.json` file has a corresponding lock entry. Runs in CI on every PR. +- **`nut-bundle-check`** — Verifies `current-upgrade-bundle.json` is up-to-date with the contracts. Runs as part of `just check` in `packages/contracts-bedrock/`. + +## fork_lock.toml schema + +```toml +[] +bundle = "op-node/rollup/derive/_nut_bundle.json" # repo-relative path +hash = "sha256:" # sha256 of bundle contents +commit = "" # commit that produced the bundle (optional) +``` + +## Adding a new fork's bundle + +1. Implement fork-specific logic in `GenerateNUTBundle.s.sol` +2. `cd packages/contracts-bedrock && just generate-nut-bundle` +3. `just update-nuts ` +4. Add `//go:embed _nut_bundle.json` and switch case in `op-node/rollup/derive/upgrade_transaction.go` +5. `just check-nut-locks` to verify From c56b564e391d4f047575000a67a8db179b92d34e Mon Sep 17 00:00:00 2001 From: Maurelian Date: Mon, 9 Mar 2026 21:35:03 -0400 Subject: [PATCH 04/31] Simplify README --- op-core/nuts/README.md | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/op-core/nuts/README.md b/op-core/nuts/README.md index 8ce1702013f7d..27cd2d252ae28 100644 --- a/op-core/nuts/README.md +++ b/op-core/nuts/README.md @@ -19,8 +19,6 @@ cd packages/contracts-bedrock just generate-nut-bundle ``` -This runs `GenerateNUTBundle.s.sol` and writes `current-upgrade-bundle.json`. - ### Snapshotting a bundle for a fork ```bash @@ -29,12 +27,6 @@ just update-nuts This copies `current-upgrade-bundle.json` to `op-node/rollup/derive/_nut_bundle.json` and updates `fork_lock.toml` with the sha256 hash and current git commit. -Typical usage after modifying contracts: - -```bash -cd packages/contracts-bedrock && just generate-nut-bundle && cd ../.. -just update-nuts karst -``` ### Verifying a bundle @@ -62,10 +54,3 @@ hash = "sha256:" # sha256 of bundle co commit = "" # commit that produced the bundle (optional) ``` -## Adding a new fork's bundle - -1. Implement fork-specific logic in `GenerateNUTBundle.s.sol` -2. `cd packages/contracts-bedrock && just generate-nut-bundle` -3. `just update-nuts ` -4. Add `//go:embed _nut_bundle.json` and switch case in `op-node/rollup/derive/upgrade_transaction.go` -5. `just check-nut-locks` to verify From ef2621f50b8d47663c2674a28fb567a323da7f76 Mon Sep 17 00:00:00 2001 From: Maurelian Date: Mon, 9 Mar 2026 21:36:40 -0400 Subject: [PATCH 05/31] Apply suggestions from code review --- op-core/nuts/fork_lock.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/op-core/nuts/fork_lock.toml b/op-core/nuts/fork_lock.toml index b1205cb208910..c5bd87602f692 100644 --- a/op-core/nuts/fork_lock.toml +++ b/op-core/nuts/fork_lock.toml @@ -4,3 +4,4 @@ [karst] bundle = "op-node/rollup/derive/karst_nut_bundle.json" hash = "sha256:b9c610d09ca05ab24ef84ea38e4f563d71401f592f9eff13fa97dac879bee600" +commit = "" From 4bf25a664bd4ee8399de3de732b0945ae6b38f96 Mon Sep 17 00:00:00 2001 From: Maurelian Date: Wed, 11 Mar 2026 17:17:31 +0000 Subject: [PATCH 06/31] refactor(nuts): extract shared ForkLockEntry into op-core/nuts package Moves the duplicated struct and lock file read/write logic into a shared package, addressing review feedback. --- op-core/nuts/lock.go | 68 ++++++++++++++ ops/scripts/check-nut-locks/main.go | 15 +--- ops/scripts/update-nuts/main.go | 40 ++------- ops/scripts/verify-nuts/main.go | 134 ++++++++++++++++++++++++++++ 4 files changed, 213 insertions(+), 44 deletions(-) create mode 100644 op-core/nuts/lock.go create mode 100644 ops/scripts/verify-nuts/main.go diff --git a/op-core/nuts/lock.go b/op-core/nuts/lock.go new file mode 100644 index 0000000000000..9f95dbce48f31 --- /dev/null +++ b/op-core/nuts/lock.go @@ -0,0 +1,68 @@ +package nuts + +import ( + "fmt" + "os" + "path/filepath" + + "github.com/BurntSushi/toml" + + opservice "github.com/ethereum-optimism/optimism/op-service" +) + +// ForkLockEntry represents a single fork's entry in fork_lock.toml. +type ForkLockEntry struct { + Bundle string `toml:"bundle"` + Hash string `toml:"hash"` + Commit string `toml:"commit,omitempty"` +} + +// ForkLock is the full contents of fork_lock.toml, keyed by fork name. +type ForkLock map[string]ForkLockEntry + +// LockFilePath returns the absolute path to fork_lock.toml relative to the given directory. +func LockFilePath(dir string) (string, error) { + root, err := opservice.FindMonorepoRoot(dir) + if err != nil { + return "", fmt.Errorf("finding monorepo root: %w", err) + } + return filepath.Join(root, "op-core", "nuts", "fork_lock.toml"), nil +} + +// ReadLockFile reads and parses fork_lock.toml from the monorepo root. +func ReadLockFile(dir string) (ForkLock, string, error) { + lockPath, err := LockFilePath(dir) + if err != nil { + return nil, "", err + } + var locks ForkLock + if _, err := toml.DecodeFile(lockPath, &locks); err != nil { + return nil, "", fmt.Errorf("reading fork lock file: %w", err) + } + return locks, lockPath, nil +} + +// WriteLockFile writes fork_lock.toml back to disk with a header comment. +func WriteLockFile(lockPath string, locks ForkLock) error { + f, err := os.Create(lockPath) + if err != nil { + return fmt.Errorf("opening fork lock file for writing: %w", err) + } + defer f.Close() + + if _, err := fmt.Fprintln(f, "# NUT Bundle Fork Lock"); err != nil { + return err + } + if _, err := fmt.Fprintln(f, "# To update a locked bundle, run: just update-nuts "); err != nil { + return err + } + if _, err := fmt.Fprintln(f); err != nil { + return err + } + + enc := toml.NewEncoder(f) + if err := enc.Encode(locks); err != nil { + return fmt.Errorf("writing fork lock file: %w", err) + } + return nil +} diff --git a/ops/scripts/check-nut-locks/main.go b/ops/scripts/check-nut-locks/main.go index 76540a2d1d403..47370d031a9a2 100644 --- a/ops/scripts/check-nut-locks/main.go +++ b/ops/scripts/check-nut-locks/main.go @@ -8,8 +8,7 @@ import ( "path/filepath" "strings" - "github.com/BurntSushi/toml" - + "github.com/ethereum-optimism/optimism/op-core/nuts" opservice "github.com/ethereum-optimism/optimism/op-service" ) @@ -44,11 +43,6 @@ func checkAllBundlesLocked(root string, lockedBundles map[string]bool) error { return nil } -type forkLockEntry struct { - Bundle string `toml:"bundle"` - Hash string `toml:"hash"` -} - func main() { if err := run("."); err != nil { fmt.Fprintf(os.Stderr, "error: %v\n", err) @@ -62,10 +56,9 @@ func run(dir string) error { return fmt.Errorf("finding monorepo root: %w", err) } - lockPath := filepath.Join(root, "op-core", "nuts", "fork_lock.toml") - var locks map[string]forkLockEntry - if _, err := toml.DecodeFile(lockPath, &locks); err != nil { - return fmt.Errorf("reading fork lock file: %w", err) + locks, _, err := nuts.ReadLockFile(dir) + if err != nil { + return err } lockedBundles := make(map[string]bool) diff --git a/ops/scripts/update-nuts/main.go b/ops/scripts/update-nuts/main.go index 3ab542e600c92..f709cc34f6e1a 100644 --- a/ops/scripts/update-nuts/main.go +++ b/ops/scripts/update-nuts/main.go @@ -9,18 +9,11 @@ import ( "path/filepath" "strings" - "github.com/BurntSushi/toml" - "github.com/ethereum-optimism/optimism/op-core/forks" + "github.com/ethereum-optimism/optimism/op-core/nuts" opservice "github.com/ethereum-optimism/optimism/op-service" ) -type forkLockEntry struct { - Bundle string `toml:"bundle"` - Hash string `toml:"hash"` - Commit string `toml:"commit,omitempty"` -} - func main() { if len(os.Args) != 2 { fmt.Fprintf(os.Stderr, "usage: update-nuts \n") @@ -73,42 +66,23 @@ func run(fork forks.Name) error { commit := strings.TrimSpace(string(commitOut)) // Read existing fork_lock.toml, update the entry, write back. - lockPath := filepath.Join(root, "op-core", "nuts", "fork_lock.toml") - var locks map[string]forkLockEntry - if _, err := toml.DecodeFile(lockPath, &locks); err != nil { - return fmt.Errorf("reading fork lock file: %w", err) + locks, lockPath, err := nuts.ReadLockFile(".") + if err != nil { + return err } if locks == nil { - locks = make(map[string]forkLockEntry) + locks = make(nuts.ForkLock) } - locks[string(fork)] = forkLockEntry{ + locks[string(fork)] = nuts.ForkLockEntry{ Bundle: bundleRel, Hash: hashStr, Commit: commit, } - f, err := os.Create(lockPath) - if err != nil { - return fmt.Errorf("opening fork lock file for writing: %w", err) - } - defer f.Close() - - // Write header comment. - if _, err := fmt.Fprintln(f, "# NUT Bundle Fork Lock"); err != nil { - return err - } - if _, err := fmt.Fprintln(f, "# To update a locked bundle, run: just update-nuts "); err != nil { + if err := nuts.WriteLockFile(lockPath, locks); err != nil { return err } - if _, err := fmt.Fprintln(f); err != nil { - return err - } - - enc := toml.NewEncoder(f) - if err := enc.Encode(locks); err != nil { - return fmt.Errorf("writing fork lock file: %w", err) - } fmt.Printf("Updated fork_lock.toml: fork=%s hash=%s commit=%s\n", fork, hashStr, commit[:12]) return nil diff --git a/ops/scripts/verify-nuts/main.go b/ops/scripts/verify-nuts/main.go new file mode 100644 index 0000000000000..df710479cec59 --- /dev/null +++ b/ops/scripts/verify-nuts/main.go @@ -0,0 +1,134 @@ +package main + +import ( + "bytes" + "crypto/sha256" + "encoding/hex" + "fmt" + "os" + "os/exec" + "path/filepath" + "strings" + + "github.com/ethereum-optimism/optimism/op-core/forks" + "github.com/ethereum-optimism/optimism/op-core/nuts" + opservice "github.com/ethereum-optimism/optimism/op-service" +) + +func main() { + if len(os.Args) != 2 { + fmt.Fprintf(os.Stderr, "usage: verify-nuts \n") + os.Exit(1) + } + + fork := forks.Name(os.Args[1]) + if err := run(fork); err != nil { + fmt.Fprintf(os.Stderr, "FAIL: %v\n", err) + os.Exit(1) + } +} + +func run(fork forks.Name) error { + if !forks.IsValid(fork) { + return fmt.Errorf("unknown fork %q; valid forks: %v", fork, forks.All) + } + + root, err := opservice.FindMonorepoRoot(".") + if err != nil { + return fmt.Errorf("finding monorepo root: %w", err) + } + + locks, _, err := nuts.ReadLockFile(".") + if err != nil { + return err + } + + entry, ok := locks[string(fork)] + if !ok { + return fmt.Errorf("no entry for fork %q in fork_lock.toml", fork) + } + + // Step 1: Verify bundle file exists and hash matches. + bundlePath := filepath.Join(root, entry.Bundle) + bundleContent, err := os.ReadFile(bundlePath) + if err != nil { + return fmt.Errorf("reading bundle %s: %w", entry.Bundle, err) + } + + hash := sha256.Sum256(bundleContent) + actual := "sha256:" + hex.EncodeToString(hash[:]) + locked := strings.TrimSpace(entry.Hash) + + if actual != locked { + return fmt.Errorf("hash mismatch: locked=%s actual=%s", locked, actual) + } + fmt.Printf("PASS: bundle hash matches lock (%s)\n", actual) + + // Step 2: If commit is recorded, verify the bundle was correctly built from that commit. + if entry.Commit == "" { + fmt.Println("SKIP: no commit recorded, cannot verify bundle provenance") + return nil + } + + fmt.Printf("Verifying bundle provenance from commit %s...\n", entry.Commit[:12]) + if err := verifyFromCommit(root, entry); err != nil { + return fmt.Errorf("provenance verification: %w", err) + } + + fmt.Println("PASS: regenerated bundle matches committed bundle") + return nil +} + +// verifyFromCommit creates a temporary worktree at the recorded commit, +// regenerates the NUT bundle, and compares it against the locked bundle. +func verifyFromCommit(root string, entry nuts.ForkLockEntry) error { + worktreeDir, err := os.MkdirTemp("", "verify-nuts-*") + if err != nil { + return fmt.Errorf("creating temp dir: %w", err) + } + defer os.RemoveAll(worktreeDir) + + // Create worktree at the recorded commit. + addCmd := exec.Command("git", "worktree", "add", "--detach", worktreeDir, entry.Commit) + addCmd.Dir = root + addCmd.Stderr = os.Stderr + if err := addCmd.Run(); err != nil { + return fmt.Errorf("creating worktree at %s: %w", entry.Commit[:12], err) + } + defer func() { + removeCmd := exec.Command("git", "worktree", "remove", "--force", worktreeDir) + removeCmd.Dir = root + _ = removeCmd.Run() + }() + + // Generate NUT bundle in the worktree. + contractsDir := filepath.Join(worktreeDir, "packages", "contracts-bedrock") + genCmd := exec.Command("just", "generate-nut-bundle") + genCmd.Dir = contractsDir + genCmd.Stdout = os.Stdout + genCmd.Stderr = os.Stderr + if err := genCmd.Run(); err != nil { + return fmt.Errorf("generating NUT bundle at commit %s: %w", entry.Commit[:12], err) + } + + // Read the regenerated bundle. + regenPath := filepath.Join(contractsDir, "snapshots", "upgrades", "current-upgrade-bundle.json") + regenContent, err := os.ReadFile(regenPath) + if err != nil { + return fmt.Errorf("reading regenerated bundle: %w", err) + } + + // Read the committed bundle. + bundlePath := filepath.Join(root, entry.Bundle) + committedContent, err := os.ReadFile(bundlePath) + if err != nil { + return fmt.Errorf("reading committed bundle: %w", err) + } + + if !bytes.Equal(regenContent, committedContent) { + return fmt.Errorf("regenerated bundle at commit %s differs from committed bundle %s", + entry.Commit[:12], entry.Bundle) + } + + return nil +} From ca33700f3d1680aed83cc1f7bbb28bc67566274a Mon Sep 17 00:00:00 2001 From: Maurelian Date: Wed, 1 Apr 2026 20:28:06 +0000 Subject: [PATCH 07/31] fix(nuts): restrict bundle file permissions to 0600 Wiz SAST flagged 0644 as overly permissive for generated bundle files. --- ops/scripts/update-nuts/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ops/scripts/update-nuts/main.go b/ops/scripts/update-nuts/main.go index f709cc34f6e1a..d174152ec8a77 100644 --- a/ops/scripts/update-nuts/main.go +++ b/ops/scripts/update-nuts/main.go @@ -47,7 +47,7 @@ func run(fork forks.Name) error { bundleRel := filepath.Join("op-node", "rollup", "derive", string(fork)+"_nut_bundle.json") dstPath := filepath.Join(root, bundleRel) - if err := os.WriteFile(dstPath, content, 0644); err != nil { + if err := os.WriteFile(dstPath, content, 0600); err != nil { return fmt.Errorf("writing bundle to %s: %w", bundleRel, err) } fmt.Printf("Copied bundle to %s\n", bundleRel) From ad0a8d70351c41defaafe685f7cfea59efd32542 Mon Sep 17 00:00:00 2001 From: Maurelian Date: Wed, 1 Apr 2026 20:58:10 +0000 Subject: [PATCH 08/31] feat(nuts): add fork locking mechanism Prevents accidental overwrites of finalized NUT bundles. A `locked` boolean in fork_lock.toml gates update-nuts and CI enforcement. --- op-core/nuts/README.md | 17 ++++++-- op-core/nuts/fork_lock.toml | 2 +- op-core/nuts/lock.go | 14 ++++++- ops/scripts/check-nut-locks/main.go | 61 +++++++++++++++++++++++++++-- ops/scripts/update-nuts/main.go | 6 ++- ops/scripts/verify-nuts/main.go | 11 +++--- 6 files changed, 93 insertions(+), 18 deletions(-) diff --git a/op-core/nuts/README.md b/op-core/nuts/README.md index 27cd2d252ae28..a3438592c3f07 100644 --- a/op-core/nuts/README.md +++ b/op-core/nuts/README.md @@ -36,13 +36,23 @@ just verify-nuts Checks that: 1. The bundle file exists and its sha256 matches the lock -2. If a `commit` is recorded, creates a temporary worktree at that commit, regenerates the bundle, and compares byte-for-byte +2. Creates a temporary worktree at the recorded commit, regenerates the bundle, and compares byte-for-byte Requires `forge` for the provenance check (step 2). +### Locking a fork + +Once a fork's bundle is finalized (e.g., governance post written), lock it: + +1. Ensure the `commit` field is populated (run `just update-nuts ` if needed) +2. Manually edit `fork_lock.toml` to add `locked = true` for the fork +3. CI (`check-nut-locks`) will enforce that the locked fork's hash cannot change + +To unlock (e.g., for a critical fix), manually set `locked = false` in `fork_lock.toml`. + ### CI checks -- **`check-nut-locks`** — Verifies all bundle hashes match their lock entries, and that every `*_nut_bundle.json` file has a corresponding lock entry. Runs in CI on every PR. +- **`check-nut-locks`** — Verifies all bundle hashes match their lock entries, all entries have a commit, locked forks haven't changed vs the base branch, and every `*_nut_bundle.json` file has a corresponding lock entry. Runs in CI on every PR. - **`nut-bundle-check`** — Verifies `current-upgrade-bundle.json` is up-to-date with the contracts. Runs as part of `just check` in `packages/contracts-bedrock/`. ## fork_lock.toml schema @@ -51,6 +61,7 @@ Requires `forge` for the provenance check (step 2). [] bundle = "op-node/rollup/derive/_nut_bundle.json" # repo-relative path hash = "sha256:" # sha256 of bundle contents -commit = "" # commit that produced the bundle (optional) +commit = "" # commit that produced the bundle +locked = true # prevents update-nuts from overwriting (optional, default false) ``` diff --git a/op-core/nuts/fork_lock.toml b/op-core/nuts/fork_lock.toml index c5bd87602f692..6eefb5491f962 100644 --- a/op-core/nuts/fork_lock.toml +++ b/op-core/nuts/fork_lock.toml @@ -4,4 +4,4 @@ [karst] bundle = "op-node/rollup/derive/karst_nut_bundle.json" hash = "sha256:b9c610d09ca05ab24ef84ea38e4f563d71401f592f9eff13fa97dac879bee600" -commit = "" +commit = "0777438dc0c3cbedd5fa478c00d5a7305b991347" diff --git a/op-core/nuts/lock.go b/op-core/nuts/lock.go index 9f95dbce48f31..e9f635d92ae19 100644 --- a/op-core/nuts/lock.go +++ b/op-core/nuts/lock.go @@ -14,7 +14,8 @@ import ( type ForkLockEntry struct { Bundle string `toml:"bundle"` Hash string `toml:"hash"` - Commit string `toml:"commit,omitempty"` + Commit string `toml:"commit"` + Locked bool `toml:"locked,omitempty"` } // ForkLock is the full contents of fork_lock.toml, keyed by fork name. @@ -42,6 +43,15 @@ func ReadLockFile(dir string) (ForkLock, string, error) { return locks, lockPath, nil } +// ParseLockFile parses fork_lock.toml content from raw bytes. +func ParseLockFile(data []byte) (ForkLock, error) { + var locks ForkLock + if _, err := toml.Decode(string(data), &locks); err != nil { + return nil, fmt.Errorf("parsing fork lock data: %w", err) + } + return locks, nil +} + // WriteLockFile writes fork_lock.toml back to disk with a header comment. func WriteLockFile(lockPath string, locks ForkLock) error { f, err := os.Create(lockPath) @@ -53,7 +63,7 @@ func WriteLockFile(lockPath string, locks ForkLock) error { if _, err := fmt.Fprintln(f, "# NUT Bundle Fork Lock"); err != nil { return err } - if _, err := fmt.Fprintln(f, "# To update a locked bundle, run: just update-nuts "); err != nil { + if _, err := fmt.Fprintln(f, "# To update a locked fork, set locked = false, run: just update-nuts , then re-lock."); err != nil { return err } if _, err := fmt.Fprintln(f); err != nil { diff --git a/ops/scripts/check-nut-locks/main.go b/ops/scripts/check-nut-locks/main.go index 47370d031a9a2..832258f9f9cb9 100644 --- a/ops/scripts/check-nut-locks/main.go +++ b/ops/scripts/check-nut-locks/main.go @@ -5,6 +5,7 @@ import ( "encoding/hex" "fmt" "os" + "os/exec" "path/filepath" "strings" @@ -43,6 +44,48 @@ func checkAllBundlesLocked(root string, lockedBundles map[string]bool) error { return nil } +// checkLockedForksUnchanged verifies that locked forks have not had their +// hash or bundle path changed compared to the base branch. +func checkLockedForksUnchanged(root string, locks nuts.ForkLock) error { + baseLocks, err := readBaseBranchLockFile(root) + if err != nil { + return fmt.Errorf("reading base branch fork_lock.toml: %w", err) + } + for fork, entry := range locks { + baseEntry, existed := baseLocks[fork] + if !existed { + continue // new fork not in base branch, nothing to compare + } + if !baseEntry.Locked { + continue // wasn't locked on base, changes are fine + } + // Fork was locked on base branch — hash and bundle path must not change + if entry.Hash != baseEntry.Hash { + return fmt.Errorf("fork %s is locked but its hash changed: base=%s current=%s; "+ + "locked forks cannot be updated without first unlocking", fork, baseEntry.Hash, entry.Hash) + } + if entry.Bundle != baseEntry.Bundle { + return fmt.Errorf("fork %s is locked but its bundle path changed: base=%s current=%s", + fork, baseEntry.Bundle, entry.Bundle) + } + } + return nil +} + +// readBaseBranchLockFile reads fork_lock.toml from the base branch via git show. +func readBaseBranchLockFile(root string) (nuts.ForkLock, error) { + for _, base := range []string{"origin/develop", "origin/main"} { + cmd := exec.Command("git", "show", base+":op-core/nuts/fork_lock.toml") + cmd.Dir = root + out, err := cmd.Output() + if err != nil { + continue + } + return nuts.ParseLockFile(out) + } + return nil, fmt.Errorf("fork_lock.toml not found on base branch") +} + func main() { if err := run("."); err != nil { fmt.Fprintf(os.Stderr, "error: %v\n", err) @@ -74,18 +117,28 @@ func run(dir string) error { hash := sha256.Sum256(content) actual := "sha256:" + hex.EncodeToString(hash[:]) - locked := strings.TrimSpace(entry.Hash) - if actual != locked { + expectedHash := strings.TrimSpace(entry.Hash) + if actual != expectedHash { return fmt.Errorf( - "bundle hash mismatch for fork %s: locked=%s actual=%s. "+ + "bundle hash mismatch for fork %s: expected=%s actual=%s. "+ "If this change is intentional, update the hash in op-core/nuts/fork_lock.toml", - fork, locked, actual, + fork, expectedHash, actual, ) } + if entry.Commit == "" { + return fmt.Errorf("fork %s has no commit recorded; "+ + "run 'just update-nuts %s' to populate the commit field", fork, fork) + } + fmt.Printf("fork %s: bundle hash OK\n", fork) } + // Check locked forks haven't changed vs base branch + if err := checkLockedForksUnchanged(root, locks); err != nil { + return err + } + // Reverse check: verify all NUT bundle JSONs have a lock entry if err := checkAllBundlesLocked(root, lockedBundles); err != nil { return err diff --git a/ops/scripts/update-nuts/main.go b/ops/scripts/update-nuts/main.go index d174152ec8a77..abbc6ff025e35 100644 --- a/ops/scripts/update-nuts/main.go +++ b/ops/scripts/update-nuts/main.go @@ -70,8 +70,10 @@ func run(fork forks.Name) error { if err != nil { return err } - if locks == nil { - locks = make(nuts.ForkLock) + + if existing, ok := locks[string(fork)]; ok && existing.Locked { + return fmt.Errorf("fork %q is locked in fork_lock.toml and cannot be updated; "+ + "to unlock, manually set locked = false in %s", fork, lockPath) } locks[string(fork)] = nuts.ForkLockEntry{ diff --git a/ops/scripts/verify-nuts/main.go b/ops/scripts/verify-nuts/main.go index df710479cec59..532b9627b21e3 100644 --- a/ops/scripts/verify-nuts/main.go +++ b/ops/scripts/verify-nuts/main.go @@ -57,17 +57,16 @@ func run(fork forks.Name) error { hash := sha256.Sum256(bundleContent) actual := "sha256:" + hex.EncodeToString(hash[:]) - locked := strings.TrimSpace(entry.Hash) + expectedHash := strings.TrimSpace(entry.Hash) - if actual != locked { - return fmt.Errorf("hash mismatch: locked=%s actual=%s", locked, actual) + if actual != expectedHash { + return fmt.Errorf("hash mismatch: expected=%s actual=%s", expectedHash, actual) } fmt.Printf("PASS: bundle hash matches lock (%s)\n", actual) - // Step 2: If commit is recorded, verify the bundle was correctly built from that commit. + // Step 2: Verify the bundle was correctly built from the recorded commit. if entry.Commit == "" { - fmt.Println("SKIP: no commit recorded, cannot verify bundle provenance") - return nil + return fmt.Errorf("fork %q has no commit recorded; cannot verify provenance", fork) } fmt.Printf("Verifying bundle provenance from commit %s...\n", entry.Commit[:12]) From c9b648345b4e3b89f7f6fb242e77576bf0c5c668 Mon Sep 17 00:00:00 2001 From: Maurelian Date: Wed, 1 Apr 2026 21:09:33 +0000 Subject: [PATCH 09/31] refactor(nuts): rename scripts for consistency check-nut-locks -> nut-lock-check update-nuts -> nut-snapshot-for verify-nuts -> nut-provenance-verify --- .circleci/continue/main.yml | 6 +++--- justfile | 12 ++++++++---- op-core/nuts/README.md | 12 ++++++------ op-core/nuts/lock.go | 2 +- .../{check-nut-locks => nut-lock-check}/main.go | 2 +- .../{verify-nuts => nut-provenance-verify}/main.go | 2 +- .../{update-nuts => nut-snapshot-for}/main.go | 2 +- 7 files changed, 21 insertions(+), 17 deletions(-) rename ops/scripts/{check-nut-locks => nut-lock-check}/main.go (98%) rename ops/scripts/{verify-nuts => nut-provenance-verify}/main.go (98%) rename ops/scripts/{update-nuts => nut-snapshot-for}/main.go (97%) diff --git a/.circleci/continue/main.yml b/.circleci/continue/main.yml index 2ee3a0404a9c3..70f3391e7246c 100644 --- a/.circleci/continue/main.yml +++ b/.circleci/continue/main.yml @@ -1660,7 +1660,7 @@ jobs: command: | just check-op-geth-version - check-nut-locks: + nut-lock-check: docker: - image: <> resource_class: small @@ -1671,7 +1671,7 @@ jobs: - run: name: check nut locks command: | - go run ./ops/scripts/check-nut-locks + go run ./ops/scripts/nut-lock-check go-tests: parameters: @@ -2612,7 +2612,7 @@ workflows: - check-op-geth-version: context: - circleci-repo-readonly-authenticated-github-token - - check-nut-locks: + - nut-lock-check: context: - circleci-repo-readonly-authenticated-github-token - fuzz-golang: diff --git a/justfile b/justfile index 6d7e772239fa4..9e0ee254fe87f 100644 --- a/justfile +++ b/justfile @@ -349,12 +349,16 @@ build-rust-release: cd rollup-boost && cargo build --release -p rollup-boost --bin rollup-boost # Checks that locked NUT bundles have not been modified. -check-nut-locks: - go run ./ops/scripts/check-nut-locks +nut-lock-check: + go run ./ops/scripts/nut-lock-check # Snapshots current-upgrade-bundle.json as a fork's NUT bundle and updates the lock file. -update-nuts fork: - go run ./ops/scripts/update-nuts {{fork}} +nut-snapshot-for fork: + go run ./ops/scripts/nut-snapshot-for {{fork}} + +# Verifies a fork's NUT bundle was correctly built from its recorded commit. +nut-provenance-verify fork: + go run ./ops/scripts/nut-provenance-verify {{fork}} # Checks that TODO comments have corresponding issues. todo-checker: diff --git a/op-core/nuts/README.md b/op-core/nuts/README.md index a3438592c3f07..3f5aca90683bf 100644 --- a/op-core/nuts/README.md +++ b/op-core/nuts/README.md @@ -22,7 +22,7 @@ just generate-nut-bundle ### Snapshotting a bundle for a fork ```bash -just update-nuts +just nut-snapshot-for ``` This copies `current-upgrade-bundle.json` to `op-node/rollup/derive/_nut_bundle.json` and updates `fork_lock.toml` with the sha256 hash and current git commit. @@ -31,7 +31,7 @@ This copies `current-upgrade-bundle.json` to `op-node/rollup/derive/_nut_b ### Verifying a bundle ```bash -just verify-nuts +just nut-provenance-verify ``` Checks that: @@ -44,15 +44,15 @@ Requires `forge` for the provenance check (step 2). Once a fork's bundle is finalized (e.g., governance post written), lock it: -1. Ensure the `commit` field is populated (run `just update-nuts ` if needed) +1. Ensure the `commit` field is populated (run `just nut-snapshot-for ` if needed) 2. Manually edit `fork_lock.toml` to add `locked = true` for the fork -3. CI (`check-nut-locks`) will enforce that the locked fork's hash cannot change +3. CI (`nut-lock-check`) will enforce that the locked fork's hash cannot change To unlock (e.g., for a critical fix), manually set `locked = false` in `fork_lock.toml`. ### CI checks -- **`check-nut-locks`** — Verifies all bundle hashes match their lock entries, all entries have a commit, locked forks haven't changed vs the base branch, and every `*_nut_bundle.json` file has a corresponding lock entry. Runs in CI on every PR. +- **`nut-lock-check`** — Verifies all bundle hashes match their lock entries, all entries have a commit, locked forks haven't changed vs the base branch, and every `*_nut_bundle.json` file has a corresponding lock entry. Runs in CI on every PR. - **`nut-bundle-check`** — Verifies `current-upgrade-bundle.json` is up-to-date with the contracts. Runs as part of `just check` in `packages/contracts-bedrock/`. ## fork_lock.toml schema @@ -62,6 +62,6 @@ To unlock (e.g., for a critical fix), manually set `locked = false` in `fork_loc bundle = "op-node/rollup/derive/_nut_bundle.json" # repo-relative path hash = "sha256:" # sha256 of bundle contents commit = "" # commit that produced the bundle -locked = true # prevents update-nuts from overwriting (optional, default false) +locked = true # prevents nut-snapshot-for from overwriting (optional, default false) ``` diff --git a/op-core/nuts/lock.go b/op-core/nuts/lock.go index e9f635d92ae19..66c7161cff291 100644 --- a/op-core/nuts/lock.go +++ b/op-core/nuts/lock.go @@ -63,7 +63,7 @@ func WriteLockFile(lockPath string, locks ForkLock) error { if _, err := fmt.Fprintln(f, "# NUT Bundle Fork Lock"); err != nil { return err } - if _, err := fmt.Fprintln(f, "# To update a locked fork, set locked = false, run: just update-nuts , then re-lock."); err != nil { + if _, err := fmt.Fprintln(f, "# To update a locked fork, set locked = false, run: just nut-snapshot-for , then re-lock."); err != nil { return err } if _, err := fmt.Fprintln(f); err != nil { diff --git a/ops/scripts/check-nut-locks/main.go b/ops/scripts/nut-lock-check/main.go similarity index 98% rename from ops/scripts/check-nut-locks/main.go rename to ops/scripts/nut-lock-check/main.go index 832258f9f9cb9..1fea659702b40 100644 --- a/ops/scripts/check-nut-locks/main.go +++ b/ops/scripts/nut-lock-check/main.go @@ -128,7 +128,7 @@ func run(dir string) error { if entry.Commit == "" { return fmt.Errorf("fork %s has no commit recorded; "+ - "run 'just update-nuts %s' to populate the commit field", fork, fork) + "run 'just nut-snapshot-for %s' to populate the commit field", fork, fork) } fmt.Printf("fork %s: bundle hash OK\n", fork) diff --git a/ops/scripts/verify-nuts/main.go b/ops/scripts/nut-provenance-verify/main.go similarity index 98% rename from ops/scripts/verify-nuts/main.go rename to ops/scripts/nut-provenance-verify/main.go index 532b9627b21e3..61409a0aa52ee 100644 --- a/ops/scripts/verify-nuts/main.go +++ b/ops/scripts/nut-provenance-verify/main.go @@ -17,7 +17,7 @@ import ( func main() { if len(os.Args) != 2 { - fmt.Fprintf(os.Stderr, "usage: verify-nuts \n") + fmt.Fprintf(os.Stderr, "usage: nut-provenance-verify \n") os.Exit(1) } diff --git a/ops/scripts/update-nuts/main.go b/ops/scripts/nut-snapshot-for/main.go similarity index 97% rename from ops/scripts/update-nuts/main.go rename to ops/scripts/nut-snapshot-for/main.go index abbc6ff025e35..1777e81031ae2 100644 --- a/ops/scripts/update-nuts/main.go +++ b/ops/scripts/nut-snapshot-for/main.go @@ -16,7 +16,7 @@ import ( func main() { if len(os.Args) != 2 { - fmt.Fprintf(os.Stderr, "usage: update-nuts \n") + fmt.Fprintf(os.Stderr, "usage: nut-snapshot-for \n") os.Exit(1) } From 4dfa9db5c0cc44ccdca7108ded7f6d3122c0b9bc Mon Sep 17 00:00:00 2001 From: Maurelian Date: Wed, 1 Apr 2026 21:43:39 +0000 Subject: [PATCH 10/31] fix(nuts): regenerate karst bundle and populate commit field The original bundle predated the snapshot workflow, so the commit field couldn't be verified. Regenerated from current contracts. --- op-core/nuts/fork_lock.toml | 8 +- op-node/rollup/derive/karst_nut_bundle.json | 229 +++++++++++++++++++- 2 files changed, 231 insertions(+), 6 deletions(-) diff --git a/op-core/nuts/fork_lock.toml b/op-core/nuts/fork_lock.toml index 6eefb5491f962..540203277ea67 100644 --- a/op-core/nuts/fork_lock.toml +++ b/op-core/nuts/fork_lock.toml @@ -1,7 +1,7 @@ # NUT Bundle Fork Lock -# To update a locked bundle, update both the bundle file and this hash in the same PR. +# To update a locked fork, set locked = false, run: just nut-snapshot-for , then re-lock. [karst] -bundle = "op-node/rollup/derive/karst_nut_bundle.json" -hash = "sha256:b9c610d09ca05ab24ef84ea38e4f563d71401f592f9eff13fa97dac879bee600" -commit = "0777438dc0c3cbedd5fa478c00d5a7305b991347" + bundle = "op-node/rollup/derive/karst_nut_bundle.json" + hash = "sha256:6145f900384f0aa2cdc63f2267a747b8c958bf1c09bacce8c29037c3eaa75d44" + commit = "c9b648345b4e3b89f7f6fb242e77576bf0c5c668" diff --git a/op-node/rollup/derive/karst_nut_bundle.json b/op-node/rollup/derive/karst_nut_bundle.json index 6e7a043d73971..9a75d36666995 100644 --- a/op-node/rollup/derive/karst_nut_bundle.json +++ b/op-node/rollup/derive/karst_nut_bundle.json @@ -2,5 +2,230 @@ "metadata": { "version": "1.0.0" }, - "transactions": [] -} + "transactions": [ + { + "data": "0x9b217f1b15f9c04316d04d42f550c340c5b2ee8e5ae05cab4f8cd9cb21970ca4608060405234801561001057600080fd5b506105b8806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806354fd4d5014610046578063cdcb760a14610098578063e0145f5c146100d0575b600080fd5b6100826040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161008f91906103f7565b60405180910390f35b6100ab6100a6366004610440565b6100ea565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161008f565b734e59b44847b379578588920ca78fbf26c0b4956c6100ab565b8051602080830191909120604080517fff00000000000000000000000000000000000000000000000000000000000000818501527f4e59b44847b379578588920ca78fbf26c0b4956c000000000000000000000000602182015260358101869052605580820184905282518083039091018152607590910190915280519201919091206000919073ffffffffffffffffffffffffffffffffffffffff81163b156101d85760405173ffffffffffffffffffffffffffffffffffffffff8216907ffbe57d889a7f75a4e0c7da304cd158fcaddc4b925cdd9f4cfb115c0f9e48009b90600090a291506103779050565b600080734e59b44847b379578588920ca78fbf26c0b4956c73ffffffffffffffffffffffffffffffffffffffff168787604051602001610219929190610519565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526102519161053f565b6000604051808303816000865af19150503d806000811461028e576040519150601f19603f3d011682016040523d82523d6000602084013e610293565b606091505b5091509150806102a29061055b565b60601c94508115806102e057508273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561032257806040517fcb0fc6f700000000000000000000000000000000000000000000000000000000815260040161031991906103f7565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff167f9b7318127ed899f286ea9ddd7925ed8ad24a682b6a825c3b5b3d88a3f00bc1d28860405161036a91815260200190565b60405180910390a2505050505b92915050565b60005b83811015610398578181015183820152602001610380565b838111156103a7576000848401525b50505050565b600081518084526103c581602086016020860161037d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061040a60208301846103ad565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561045357600080fd5b82359150602083013567ffffffffffffffff8082111561047257600080fd5b818501915085601f83011261048657600080fd5b81358181111561049857610498610411565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156104de576104de610411565b816040528281528860208487010111156104f757600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b8281526000825161053181602085016020870161037d565b919091016020019392505050565b6000825161055181846020870161037d565b9190910192915050565b6000815160208301517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808216935060148310156105a35780818460140360031b1b83161693505b50505091905056fea164736f6c634300080f000a", + "from": "0xDeaDDEaDDeAdDeAdDEAdDEaddeAddEAdDEAd0001", + "gasLimit": 600000, + "intent": "ConditionalDeployer Deployment", + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C" + }, + { + "data": "0x3659cfe6000000000000000000000000906835344844979ffd3a752eaa23728d513db00b", + "from": "0x0000000000000000000000000000000000000000", + "gasLimit": 50000, + "intent": "Upgrade ConditionalDeployer Implementation", + "to": "0x420000000000000000000000000000000000002C" + }, + { + "data": "0xcdcb760a9b217f1b15f9c04316d04d42f550c340c5b2ee8e5ae05cab4f8cd9cb21970ca40000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000048a608060405234801561001057600080fd5b5061046a806100206000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c8063a6ed563e11610076578063bd02d0f51161005b578063bd02d0f51461018e578063ca446dd9146101b8578063e2a4853a1461011557600080fd5b8063a6ed563e1461018e578063abfdcced146101aa57600080fd5b80634e91db08116100a75780634e91db081461011557806354fd4d50146101275780637ae1cfca1461017057600080fd5b80630528afe2146100c357806321f8a721146100d8575b600080fd5b6100d66100d1366004610239565b6101c6565b005b6100eb6100e63660046102ae565b610229565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100d66101233660046102c7565b9055565b6101636040518060400160405280600581526020017f312e322e3200000000000000000000000000000000000000000000000000000081525081565b60405161010c91906102e9565b61017e6100e63660046102ae565b604051901515815260200161010c565b61019c6100e63660046102ae565b60405190815260200161010c565b6100d661012336600461035c565b6100d6610123366004610391565b8060005b81811015610223576102118484838181106101e7576101e76103cf565b90506040020160000135858584818110610203576102036103cf565b905060400201602001359055565b8061021b816103fe565b9150506101ca565b50505050565b6000610233825490565b92915050565b6000806020838503121561024c57600080fd5b823567ffffffffffffffff8082111561026457600080fd5b818501915085601f83011261027857600080fd5b81358181111561028757600080fd5b8660208260061b850101111561029c57600080fd5b60209290920196919550909350505050565b6000602082840312156102c057600080fd5b5035919050565b600080604083850312156102da57600080fd5b50508035926020909101359150565b600060208083528351808285015260005b81811015610316578581018301518582016040015282016102fa565b81811115610328576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b6000806040838503121561036f57600080fd5b823591506020830135801515811461038657600080fd5b809150509250929050565b600080604083850312156103a457600080fd5b82359150602083013573ffffffffffffffffffffffffffffffffffffffff8116811461038657600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610456577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea164736f6c634300080f000a00000000000000000000000000000000000000000000", + "from": "0xDeaDDEaDDeAdDeAdDEAdDEaddeAddEAdDEAd0001", + "gasLimit": 500000, + "intent": "Deploy StorageSetter Implementation", + "to": "0x420000000000000000000000000000000000002C" + }, + { + "data": "0xcdcb760a9b217f1b15f9c04316d04d42f550c340c5b2ee8e5ae05cab4f8cd9cb21970ca4000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000022d3608060405234801561001057600080fd5b5061001961001e565b6100eb565b600054600160a81b900460ff161561008c5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff600160a01b909104811610156100e9576000805460ff60a01b191660ff60a01b17905560405160ff81527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6121d880620000fb6000396000f3fe6080604052600436106101a15760003560e01c80638cbeeef2116100e1578063c4d66de81161008a578063db505d8011610064578063db505d8014610451578063ddd5a40f1461047e578063e46e245a14610494578063ecc70428146104a957600080fd5b8063c4d66de814610409578063d764ad0b14610429578063dad544e01461043c57600080fd5b8063a7119869116100bb578063a71198691461035e578063b1b1b209146103b9578063b28ade25146103e957600080fd5b80638cbeeef2146102905780639fce812c1461035e578063a4e7f8bd1461038957600080fd5b80633f827a5a1161014e5780635644cfdf116101285780635644cfdf146102fc5780635c975abb146103125780636e296e451461033257806383a740741461034757600080fd5b80633f827a5a146102685780634c1d6a691461029057806354fd4d50146102a657600080fd5b80632f7d39221161017f5780632f7d3922146102035780633dbb202b146102195780633e47158c1461022e57600080fd5b8063028f85f7146101a65780630c568498146101d95780632828d7e8146101ee575b600080fd5b3480156101b257600080fd5b506101bb601081565b60405167ffffffffffffffff90911681526020015b60405180910390f35b3480156101e557600080fd5b506101bb603f81565b3480156101fa57600080fd5b506101bb604081565b34801561020f57600080fd5b506101bb61520881565b61022c610227366004611bb4565b61050e565b005b34801561023a57600080fd5b506102436107a1565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d0565b34801561027457600080fd5b5061027d600181565b60405161ffff90911681526020016101d0565b34801561029c57600080fd5b506101bb619c4081565b3480156102b257600080fd5b506102ef6040518060400160405280600581526020017f322e322e3100000000000000000000000000000000000000000000000000000081525081565b6040516101d09190611c86565b34801561030857600080fd5b506101bb61138881565b34801561031e57600080fd5b5060005b60405190151581526020016101d0565b34801561033e57600080fd5b506102436109ac565b34801561035357600080fd5b506101bb62030d4081565b34801561036a57600080fd5b5060cf5473ffffffffffffffffffffffffffffffffffffffff16610243565b34801561039557600080fd5b506103226103a4366004611c99565b60ce6020526000908152604090205460ff1681565b3480156103c557600080fd5b506103226103d4366004611c99565b60cb6020526000908152604090205460ff1681565b3480156103f557600080fd5b506101bb610404366004611ce1565b610a98565b34801561041557600080fd5b5061022c610424366004611dc1565b610b59565b61022c610437366004611dde565b610d60565b34801561044857600080fd5b50610243611645565b34801561045d57600080fd5b5060cf546102439073ffffffffffffffffffffffffffffffffffffffff1681565b34801561048a57600080fd5b506101bb61010481565b3480156104a057600080fd5b506101bb602881565b3480156104b557600080fd5b5061050060cd547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000001790565b6040519081526020016101d0565b60cf54604080516020601f86018190048102820181019092528481526106769273ffffffffffffffffffffffffffffffffffffffff169161056c91908790879081908401838280828437600092019190915250879250610a98915050565b347fd764ad0b000000000000000000000000000000000000000000000000000000006105d860cd547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000001790565b338a34898c8c6040516024016105f49796959493929190611ead565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526116c2565b8373ffffffffffffffffffffffffffffffffffffffff167fcb0f7ffd78f9aee47a248fae8db181db6eee833039123e026dcbff529522e52a3385856106fb60cd547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000001790565b8660405161070d959493929190611f0c565b60405180910390a260405134815233907f8ebb2ec2465bdb2a06a66fc37a0963af8a2a6a1479d81d56fdb8cbb98096d5469060200160405180910390a2505060cd80547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808216600101167fffff0000000000000000000000000000000000000000000000000000000000009091161790555050565b6000806107cc7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b905073ffffffffffffffffffffffffffffffffffffffff8116156107ef57919050565b6040518060400160405280601a81526020017f4f564d5f4c3143726f7373446f6d61696e4d657373656e6765720000000000008152505160026108329190611f89565b604080513060208201526000918101919091527f4f564d5f4c3143726f7373446f6d61696e4d657373656e676572000000000000919091179061088d906060015b604051602081830303815290604052805190602001205490565b146108c4576040517f54e433cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080513060208201526001918101919091526000906108e690606001610873565b905073ffffffffffffffffffffffffffffffffffffffff81161561097a578073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561094f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109739190611fc6565b9250505090565b6040517f332144db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60cc5460009073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff215301610a7b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f43726f7373446f6d61696e4d657373656e6765723a2078446f6d61696e4d657360448201527f7361676553656e646572206973206e6f7420736574000000000000000000000060648201526084015b60405180910390fd5b5060cc5473ffffffffffffffffffffffffffffffffffffffff1690565b600080603f610aae604063ffffffff8616611fe3565b610ab89190612013565b611388619c40610acb8162030d40612061565b610ad59190612061565b610adf9190612061565b610ae99190612061565b9050600061010467ffffffffffffffff168551610b06919061208d565b9050610b44610b16601083611fe3565b610b209084612061565b67ffffffffffffffff16610b35602884611fe3565b67ffffffffffffffff16611750565b610b5090615208612061565b95945050505050565b6000547501000000000000000000000000000000000000000000900460ff1615808015610ba4575060005460017401000000000000000000000000000000000000000090910460ff16105b80610bd65750303b158015610bd6575060005474010000000000000000000000000000000000000000900460ff166001145b610c62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610a72565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790558015610ce857600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790555b610cf0611769565b610cf9826117ec565b8015610d5c57600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60f087901c60028110610e1b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604d60248201527f43726f7373446f6d61696e4d657373656e6765723a206f6e6c7920766572736960448201527f6f6e2030206f722031206d657373616765732061726520737570706f7274656460648201527f20617420746869732074696d6500000000000000000000000000000000000000608482015260a401610a72565b8061ffff16600003610f10576000610e6c878986868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508f9250611928915050565b600081815260cb602052604090205490915060ff1615610f0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f43726f7373446f6d61696e4d657373656e6765723a206c65676163792077697460448201527f6864726177616c20616c72656164792072656c617965640000000000000000006064820152608401610a72565b505b6000610f56898989898989898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061194792505050565b9050610f9f60cf54337fffffffffffffffffffffffffeeeeffffffffffffffffffffffffffffffffeeef0173ffffffffffffffffffffffffffffffffffffffff90811691161490565b15610fd757853414610fb357610fb36120a5565b600081815260ce602052604090205460ff1615610fd257610fd26120a5565b611129565b341561108b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605060248201527f43726f7373446f6d61696e4d657373656e6765723a2076616c7565206d75737460448201527f206265207a65726f20756e6c657373206d6573736167652069732066726f6d2060648201527f612073797374656d206164647265737300000000000000000000000000000000608482015260a401610a72565b600081815260ce602052604090205460ff16611129576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f43726f7373446f6d61696e4d657373656e6765723a206d65737361676520636160448201527f6e6e6f74206265207265706c61796564000000000000000000000000000000006064820152608401610a72565b6111328761196a565b156111e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604360248201527f43726f7373446f6d61696e4d657373656e6765723a2063616e6e6f742073656e60448201527f64206d65737361676520746f20626c6f636b65642073797374656d206164647260648201527f6573730000000000000000000000000000000000000000000000000000000000608482015260a401610a72565b600081815260cb602052604090205460ff1615611284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f43726f7373446f6d61696e4d657373656e6765723a206d65737361676520686160448201527f7320616c7265616479206265656e2072656c61796564000000000000000000006064820152608401610a72565b6112a585611296611388619c40612061565b67ffffffffffffffff166119bf565b15806112cb575060cc5473ffffffffffffffffffffffffffffffffffffffff1661dead14155b156113e457600081815260ce602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555182917f99d0e048484baa1b1540b1367cb128acd7ab2946d1ed91ec10e3c85e4bf51b8f91a27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff32016113dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f43726f7373446f6d61696e4d657373656e6765723a206661696c656420746f2060448201527f72656c6179206d657373616765000000000000000000000000000000000000006064820152608401610a72565b505061163c565b60cc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a16179055600061147588619c405a61143891906120d4565b8988888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506119dd92505050565b60cc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead1790559050801561152b57600082815260cb602052604090205460ff16156114c8576114c86120a5565b600082815260cb602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555183917f4641df4a962071e12719d8c8c8e5ac7fc4d97b927346a3d7a335b1f7517e133c91a2611638565b600082815260ce602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555183917f99d0e048484baa1b1540b1367cb128acd7ab2946d1ed91ec10e3c85e4bf51b8f91a27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3201611638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f43726f7373446f6d61696e4d657373656e6765723a206661696c656420746f2060448201527f72656c6179206d657373616765000000000000000000000000000000000000006064820152608401610a72565b5050505b50505050505050565b600061164f6107a1565b73ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611699573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116bd9190611fc6565b905090565b6040517fc2b3e5ac0000000000000000000000000000000000000000000000000000000081527342000000000000000000000000000000000000169063c2b3e5ac908490611718908890889087906004016120eb565b6000604051808303818588803b15801561173157600080fd5b505af1158015611745573d6000803e3d6000fd5b505050505050505050565b6000818310156117605781611762565b825b9392505050565b336117726107a1565b73ffffffffffffffffffffffffffffffffffffffff16141580156117b357503361179a611645565b73ffffffffffffffffffffffffffffffffffffffff1614155b156117ea576040517fc4050a2600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6000547501000000000000000000000000000000000000000000900460ff16611897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610a72565b60cc5473ffffffffffffffffffffffffffffffffffffffff166118e15760cc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead1790555b60cf80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000611936858585856119f5565b805190602001209050949350505050565b6000611957878787878787611a8e565b8051906020012090509695505050505050565b600073ffffffffffffffffffffffffffffffffffffffff82163014806119b9575073ffffffffffffffffffffffffffffffffffffffff8216734200000000000000000000000000000000000016145b92915050565b600080603f83619c4001026040850201603f5a021015949350505050565b6000806000835160208501868989f195945050505050565b606084848484604051602401611a0e949392919061212a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fcbd4ece9000000000000000000000000000000000000000000000000000000001790529050949350505050565b6060868686868686604051602401611aab96959493929190612174565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd764ad0b0000000000000000000000000000000000000000000000000000000017905290509695505050505050565b73ffffffffffffffffffffffffffffffffffffffff81168114611b4f57600080fd5b50565b60008083601f840112611b6457600080fd5b50813567ffffffffffffffff811115611b7c57600080fd5b602083019150836020828501011115611b9457600080fd5b9250929050565b803563ffffffff81168114611baf57600080fd5b919050565b60008060008060608587031215611bca57600080fd5b8435611bd581611b2d565b9350602085013567ffffffffffffffff811115611bf157600080fd5b611bfd87828801611b52565b9094509250611c10905060408601611b9b565b905092959194509250565b6000815180845260005b81811015611c4157602081850181015186830182015201611c25565b81811115611c53576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006117626020830184611c1b565b600060208284031215611cab57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215611cf457600080fd5b823567ffffffffffffffff80821115611d0c57600080fd5b818501915085601f830112611d2057600080fd5b813581811115611d3257611d32611cb2565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715611d7857611d78611cb2565b81604052828152886020848701011115611d9157600080fd5b826020860160208301376000602084830101528096505050505050611db860208401611b9b565b90509250929050565b600060208284031215611dd357600080fd5b813561176281611b2d565b600080600080600080600060c0888a031215611df957600080fd5b873596506020880135611e0b81611b2d565b95506040880135611e1b81611b2d565b9450606088013593506080880135925060a088013567ffffffffffffffff811115611e4557600080fd5b611e518a828b01611b52565b989b979a50959850939692959293505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b878152600073ffffffffffffffffffffffffffffffffffffffff808916602084015280881660408401525085606083015263ffffffff8516608083015260c060a0830152611eff60c083018486611e64565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff86168152608060208201526000611f3c608083018688611e64565b905083604083015263ffffffff831660608301529695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611fc157611fc1611f5a565b500290565b600060208284031215611fd857600080fd5b815161176281611b2d565b600067ffffffffffffffff8083168185168183048111821515161561200a5761200a611f5a565b02949350505050565b600067ffffffffffffffff80841680612055577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b92169190910492915050565b600067ffffffffffffffff80831681851680830382111561208457612084611f5a565b01949350505050565b600082198211156120a0576120a0611f5a565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000828210156120e6576120e6611f5a565b500390565b73ffffffffffffffffffffffffffffffffffffffff8416815267ffffffffffffffff83166020820152606060408201526000610b506060830184611c1b565b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250608060408301526121636080830185611c1b565b905082606083015295945050505050565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a08301526121bf60c0830184611c1b565b9897505050505050505056fea164736f6c634300080f000a00000000000000000000000000", + "from": "0xDeaDDEaDDeAdDeAdDEAdDEaddeAddEAdDEAd0001", + "gasLimit": 2600000, + "intent": "Deploy L2CrossDomainMessenger Implementation", + "to": "0x420000000000000000000000000000000000002C" + }, + { + "data": "0xcdcb760a9b217f1b15f9c04316d04d42f550c340c5b2ee8e5ae05cab4f8cd9cb21970ca400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000001ec8608060405234801561001057600080fd5b50611ea8806100206000396000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806368d5dca6116100e3578063c59859181161008c578063f45e65d811610066578063f45e65d8146102fc578063f820614014610304578063fe173b971461029357600080fd5b8063c5985918146102ce578063de26c4a1146102d6578063f1c7a58b146102e957600080fd5b8063960e3a23116100bd578063960e3a23146102a1578063b3d72079146102b3578063b54501bc146102bb57600080fd5b806368d5dca6146102765780636ef25c3a146102935780638e98b1061461029957600080fd5b80632e0f2625116101455780634ef6e2241161011f5780634ef6e22414610218578063519b4bd31461022557806354fd4d501461022d57600080fd5b80632e0f2625146101f6578063313ce567146101fe57806349948e0e1461020557600080fd5b806322b90ab31161017657806322b90ab3146101d1578063275aedd2146101db578063291b0383146101ee57600080fd5b80630c18c16214610192578063105d0b81146101ad575b600080fd5b61019a61030c565b6040519081526020015b60405180910390f35b6000546101c1906301000000900460ff1681565b60405190151581526020016101a4565b6101d961042d565b005b61019a6101e93660046118fa565b6105b6565b6101d9610776565b61019a600681565b600661019a565b61019a610213366004611942565b61099e565b6000546101c19060ff1681565b61019a6109db565b6102696040518060400160405280600581526020017f312e362e3000000000000000000000000000000000000000000000000000000081525081565b6040516101a49190611a11565b61027e610a3c565b60405163ffffffff90911681526020016101a4565b4861019a565b6101d9610ac1565b6000546101c190610100900460ff1681565b6101d9610cbb565b6000546101c19062010000900460ff1681565b61027e610ec2565b61019a6102e4366004611942565b610f23565b61019a6102f73660046118fa565b61101d565b61019a6110f1565b61019a6111e4565b6000805460ff16156103a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f47617350726963654f7261636c653a206f76657268656164282920697320646560448201527f707265636174656400000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b73420000000000000000000000000000000000001573ffffffffffffffffffffffffffffffffffffffff16638b239f736040518163ffffffff1660e01b8152600401602060405180830381865afa158015610404573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104289190611a84565b905090565b3373deaddeaddeaddeaddeaddeaddeaddeaddead0001146104f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f47617350726963654f7261636c653a206f6e6c7920746865206465706f73697460448201527f6f72206163636f756e742063616e2073657420697345636f746f6e6520666c6160648201527f6700000000000000000000000000000000000000000000000000000000000000608482015260a40161039c565b60005460ff1615610589576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f47617350726963654f7261636c653a2045636f746f6e6520616c72656164792060448201527f6163746976650000000000000000000000000000000000000000000000000000606482015260840161039c565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b6000805462010000900460ff166105cf57506000919050565b600073420000000000000000000000000000000000001573ffffffffffffffffffffffffffffffffffffffff16634d5d9a2a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610630573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106549190611a9d565b63ffffffff169050600073420000000000000000000000000000000000001573ffffffffffffffffffffffffffffffffffffffff166316d3bc7f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e19190611ac3565b67ffffffffffffffff169050600060039054906101000a900460ff161561072a578061070d8386611b1c565b610718906064611b1c565b6107229190611b59565b949350505050565b610722620f424083860286810485148715177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01176107699190611b71565b8281019081106000031790565b3373deaddeaddeaddeaddeaddeaddeaddeaddead00011461083f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f47617350726963654f7261636c653a206f6e6c7920746865206465706f73697460448201527f6f72206163636f756e742063616e20736574206973497374686d757320666c6160648201527f6700000000000000000000000000000000000000000000000000000000000000608482015260a40161039c565b600054610100900460ff166108d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f47617350726963654f7261636c653a20497374686d75732063616e206f6e6c7960448201527f2062652061637469766174656420616674657220466a6f726400000000000000606482015260840161039c565b60005462010000900460ff161561096f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f47617350726963654f7261636c653a20497374686d757320616c72656164792060448201527f6163746976650000000000000000000000000000000000000000000000000000606482015260840161039c565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff1662010000179055565b60008054610100900460ff16156109be576109b882611245565b92915050565b60005460ff16156109d2576109b882611264565b6109b882611308565b600073420000000000000000000000000000000000001573ffffffffffffffffffffffffffffffffffffffff16635cf249696040518163ffffffff1660e01b8152600401602060405180830381865afa158015610404573d6000803e3d6000fd5b600073420000000000000000000000000000000000001573ffffffffffffffffffffffffffffffffffffffff166368d5dca66040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a9d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104289190611a9d565b3373deaddeaddeaddeaddeaddeaddeaddeaddead000114610b64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f47617350726963654f7261636c653a206f6e6c7920746865206465706f73697460448201527f6f72206163636f756e742063616e20736574206973466a6f726420666c616700606482015260840161039c565b60005460ff16610bf6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f47617350726963654f7261636c653a20466a6f72642063616e206f6e6c79206260448201527f65206163746976617465642061667465722045636f746f6e6500000000000000606482015260840161039c565b600054610100900460ff1615610c8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f47617350726963654f7261636c653a20466a6f726420616c726561647920616360448201527f7469766500000000000000000000000000000000000000000000000000000000606482015260840161039c565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b3373deaddeaddeaddeaddeaddeaddeaddeaddead000114610d6057604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f47617350726963654f7261636c653a206f6e6c7920746865206465706f73697460448201527f6f72206163636f756e742063616e207365742069734a6f7669616e20666c6167606482015260840161039c565b60005462010000900460ff16610df8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f47617350726963654f7261636c653a204a6f7669616e2063616e206f6e6c792060448201527f62652061637469766174656420616674657220497374686d7573000000000000606482015260840161039c565b6000546301000000900460ff1615610e92576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f47617350726963654f7261636c653a204a6f7669616e20616c7265616479206160448201527f6374697665000000000000000000000000000000000000000000000000000000606482015260840161039c565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff166301000000179055565b600073420000000000000000000000000000000000001573ffffffffffffffffffffffffffffffffffffffff1663c59859186040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a9d573d6000803e3d6000fd5b60008054610100900460ff1615610f6a57620f4240610f55610f448461145c565b51610f50906044611b59565b611779565b610f60906010611b1c565b6109b89190611b71565b6000610f75836117d8565b60005490915060ff1615610f895792915050565b73420000000000000000000000000000000000001573ffffffffffffffffffffffffffffffffffffffff16638b239f736040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fe8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100c9190611a84565b6110169082611b59565b9392505050565b60008054610100900460ff166110b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f47617350726963654f7261636c653a206765744c314665655570706572426f7560448201527f6e64206f6e6c7920737570706f72747320466a6f726400000000000000000000606482015260840161039c565b60006110c2836044611b59565b905060006110d160ff83611b71565b6110db9083611b59565b6110e6906010611b59565b905061072281611868565b6000805460ff1615611185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f47617350726963654f7261636c653a207363616c61722829206973206465707260448201527f6563617465640000000000000000000000000000000000000000000000000000606482015260840161039c565b73420000000000000000000000000000000000001573ffffffffffffffffffffffffffffffffffffffff16639e8c49666040518163ffffffff1660e01b8152600401602060405180830381865afa158015610404573d6000803e3d6000fd5b600073420000000000000000000000000000000000001573ffffffffffffffffffffffffffffffffffffffff1663f82061406040518163ffffffff1660e01b8152600401602060405180830381865afa158015610404573d6000803e3d6000fd5b60006109b86112538361145c565b5161125f906044611b59565b611868565b600080611270836117d8565b9050600061127c6109db565b611284610ec2565b61128f906010611bac565b63ffffffff1661129f9190611b1c565b905060006112ab6111e4565b6112b3610a3c565b63ffffffff166112c39190611b1c565b905060006112d18284611b59565b6112db9085611b1c565b90506112e96006600a611cf8565b6112f4906010611b1c565b6112fe9082611b71565b9695505050505050565b600080611314836117d8565b9050600073420000000000000000000000000000000000001573ffffffffffffffffffffffffffffffffffffffff16639e8c49666040518163ffffffff1660e01b8152600401602060405180830381865afa158015611377573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139b9190611a84565b6113a36109db565b73420000000000000000000000000000000000001573ffffffffffffffffffffffffffffffffffffffff16638b239f736040518163ffffffff1660e01b8152600401602060405180830381865afa158015611402573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114269190611a84565b6114309085611b59565b61143a9190611b1c565b6114449190611b1c565b90506114526006600a611cf8565b6107229082611b71565b60606115eb565b818153600101919050565b600082840393505b838110156110165782810151828201511860001a1590930292600101611476565b825b602082106114e35782516114ae601f83611463565b52602092909201917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090910190602101611499565b81156110165782516114f86001840383611463565b520160010192915050565b60006001830392505b6101078210611544576115368360ff1661153160fd6115318760081c60e00189611463565b611463565b93506101068203915061150c565b600782106115715761156a8360ff16611531600785036115318760081c60e00189611463565b9050611016565b6107228360ff166115318560081c8560051b0187611463565b6115e38282036115c76115b784600081518060001a8160011a60081b178160021a60101b17915050919050565b639e3779b90260131c611fff1690565b8060021b6040510182815160e01c1860e01b8151188152505050565b600101919050565b6180003860405139618000604051016020830180600d8551820103826002015b8181101561171e576000805b50508051604051600082901a600183901a60081b1760029290921a60101b91909117639e3779b9810260111c617ffc16909101805160e081811c878603811890911b9091189091528401908183039084841061167357506116ae565b600184019350611fff82116116a8578251600081901a600182901a60081b1760029190911a60101b1781036116a857506116ae565b50611617565b8383106116bc57505061171e565b600183039250858311156116da576116d78787888603611497565b96505b6116ee60098501600385016003850161146e565b91506116fb878284611503565b9650506117138461170e8684860161158a565b61158a565b91505080935061160b565b50506117308383848851850103611497565b925050506040519150618000820180820391508183526020830160005b8381101561176557828101518282015260200161174d565b506000920191825250602001604052919050565b60008061178983620cc394611b1c565b6117b3907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd763200611d04565b90506117c36064620f4240611d78565b8112156109b8576110166064620f4240611d78565b80516000908190815b8181101561185b578481815181106117fb576117fb611e34565b01602001517fff000000000000000000000000000000000000000000000000000000000000001660000361183b57611834600484611b59565b9250611849565b611846601084611b59565b92505b8061185381611e63565b9150506117e1565b5061072282610440611b59565b60008061187483611779565b905060006118806111e4565b611888610a3c565b63ffffffff166118989190611b1c565b6118a06109db565b6118a8610ec2565b6118b3906010611bac565b63ffffffff166118c39190611b1c565b6118cd9190611b59565b90506118db60066002611b1c565b6118e690600a611cf8565b6118f08284611b1c565b6107229190611b71565b60006020828403121561190c57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561195457600080fd5b813567ffffffffffffffff8082111561196c57600080fd5b818401915084601f83011261198057600080fd5b81358181111561199257611992611913565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156119d8576119d8611913565b816040528281528760208487010111156119f157600080fd5b826020860160208301376000928101602001929092525095945050505050565b600060208083528351808285015260005b81811015611a3e57858101830151858201604001528201611a22565b81811115611a50576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b600060208284031215611a9657600080fd5b5051919050565b600060208284031215611aaf57600080fd5b815163ffffffff8116811461101657600080fd5b600060208284031215611ad557600080fd5b815167ffffffffffffffff8116811461101657600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611b5457611b54611aed565b500290565b60008219821115611b6c57611b6c611aed565b500190565b600082611ba7577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600063ffffffff80831681851681830481118215151615611bcf57611bcf611aed565b02949350505050565b600181815b80851115611c3157817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115611c1757611c17611aed565b80851615611c2457918102915b93841c9390800290611bdd565b509250929050565b600082611c48575060016109b8565b81611c55575060006109b8565b8160018114611c6b5760028114611c7557611c91565b60019150506109b8565b60ff841115611c8657611c86611aed565b50506001821b6109b8565b5060208310610133831016604e8410600b8410161715611cb4575081810a6109b8565b611cbe8383611bd8565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115611cf057611cf0611aed565b029392505050565b60006110168383611c39565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03841381151615611d3e57611d3e611aed565b827f8000000000000000000000000000000000000000000000000000000000000000038412811615611d7257611d72611aed565b50500190565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600084136000841385830485118282161615611db957611db9611aed565b7f80000000000000000000000000000000000000000000000000000000000000006000871286820588128184161615611df457611df4611aed565b60008712925087820587128484161615611e1057611e10611aed565b87850587128184161615611e2657611e26611aed565b505050929093029392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611e9457611e94611aed565b506001019056fea164736f6c634300080f000a000000000000000000000000000000000000000000000000", + "from": "0xDeaDDEaDDeAdDeAdDEAdDEaddeAddEAdDEAd0001", + "gasLimit": 2600000, + "intent": "Deploy GasPriceOracle Implementation", + "to": "0x420000000000000000000000000000000000002C" + }, + { + "data": "0xcdcb760a9b217f1b15f9c04316d04d42f550c340c5b2ee8e5ae05cab4f8cd9cb21970ca400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000002f3d60806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b612e4980620000f46000396000f3fe6080604052600436106101485760003560e01c80635c975abb116100c0578063a3a7954811610074578063c89701a211610059578063c89701a214610459578063dad544e014610486578063e11013dd1461049b57600080fd5b8063a3a7954814610426578063c4d66de81461043957600080fd5b806387087623116100a557806387087623146103955780638f601f66146103b5578063927ede2d146103fb57600080fd5b80635c975abb146103795780637f46ddb21461027a57600080fd5b806336c717c1116101175780633e47158c116100fc5780633e47158c146102f8578063540abf731461030d57806354fd4d501461032d57600080fd5b806336c717c11461027a5780633cb747bf146102cb57600080fd5b80630166a07a1461022157806309fc8843146102415780631635f5fd1461025457806332b7006d1461026757600080fd5b3661021c576101556104ae565b6101e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f4100000000000000000060648201526084015b60405180910390fd5b61021a73deaddeaddeaddeaddeaddeaddeaddeaddead000033333462030d40604051806020016040528060008152506104eb565b005b600080fd5b34801561022d57600080fd5b5061021a61023c3660046127ff565b6105c6565b61021a61024f3660046128b0565b610968565b61021a610262366004612903565b610a44565b61021a610275366004612976565b610e96565b34801561028657600080fd5b5060045473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156102d757600080fd5b506003546102a19073ffffffffffffffffffffffffffffffffffffffff1681565b34801561030457600080fd5b506102a1610f75565b34801561031957600080fd5b5061021a6103283660046129ca565b611180565b34801561033957600080fd5b50604080518082018252600681527f312e31332e310000000000000000000000000000000000000000000000000000602082015290516102c29190612ab7565b34801561038557600080fd5b50604051600081526020016102c2565b3480156103a157600080fd5b5061021a6103b0366004612aca565b6111c5565b3480156103c157600080fd5b506103ed6103d0366004612b4d565b600260209081526000928352604080842090915290825290205481565b6040519081526020016102c2565b34801561040757600080fd5b5060035473ffffffffffffffffffffffffffffffffffffffff166102a1565b61021a610434366004612aca565b61129e565b34801561044557600080fd5b5061021a610454366004612b86565b6112e2565b34801561046557600080fd5b506004546102a19073ffffffffffffffffffffffffffffffffffffffff1681565b34801561049257600080fd5b506102a1611493565b61021a6104a9366004612ba3565b611510565b60003233036104bd5750600190565b333b6017036104e557604051602081016040526020600082333c5160e81c62ef010014905090565b50600090565b7fffffffffffffffffffffffff215221522152215221522152215221522153000073ffffffffffffffffffffffffffffffffffffffff87160161053a576105358585858585611559565b6105be565b60008673ffffffffffffffffffffffffffffffffffffffff1663c01e1bd66040518163ffffffff1660e01b8152600401602060405180830381865afa158015610587573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ab9190612c06565b90506105bc87828888888888611723565b505b505050505050565b60035473ffffffffffffffffffffffffffffffffffffffff1633148015610699575060048054600354604080517f6e296e45000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff938416949390921692636e296e459282820192602092908290030181865afa15801561065d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106819190612c06565b73ffffffffffffffffffffffffffffffffffffffff16145b61074b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20746865206f7468657220627269646760648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a4016101dd565b61075487611adc565b156108a2576107638787611b3e565b610815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f5374616e646172644272696467653a2077726f6e672072656d6f746520746f6b60448201527f656e20666f72204f7074696d69736d204d696e7461626c65204552433230206c60648201527f6f63616c20746f6b656e00000000000000000000000000000000000000000000608482015260a4016101dd565b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018590528816906340c10f1990604401600060405180830381600087803b15801561088557600080fd5b505af1158015610899573d6000803e3d6000fd5b50505050610924565b73ffffffffffffffffffffffffffffffffffffffff8088166000908152600260209081526040808320938a16835292905220546108e0908490612c52565b73ffffffffffffffffffffffffffffffffffffffff8089166000818152600260209081526040808320948c1683529390529190912091909155610924908585611c5e565b6105bc878787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d3292505050565b6109706104ae565b6109fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f4100000000000000000060648201526084016101dd565b610a3f3333348686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061155992505050565b505050565b60035473ffffffffffffffffffffffffffffffffffffffff1633148015610b17575060048054600354604080517f6e296e45000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff938416949390921692636e296e459282820192602092908290030181865afa158015610adb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aff9190612c06565b73ffffffffffffffffffffffffffffffffffffffff16145b610bc9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20746865206f7468657220627269646760648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a4016101dd565b823414610c58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f5374616e646172644272696467653a20616d6f756e742073656e7420646f657360448201527f206e6f74206d6174636820616d6f756e7420726571756972656400000000000060648201526084016101dd565b3073ffffffffffffffffffffffffffffffffffffffff851603610cfd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f5374616e646172644272696467653a2063616e6e6f742073656e6420746f207360448201527f656c66000000000000000000000000000000000000000000000000000000000060648201526084016101dd565b60035473ffffffffffffffffffffffffffffffffffffffff90811690851603610da8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f5374616e646172644272696467653a2063616e6e6f742073656e6420746f206d60448201527f657373656e67657200000000000000000000000000000000000000000000000060648201526084016101dd565b610dea85858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611dc092505050565b6000610e07855a8660405180602001604052806000815250611e61565b9050806105be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f5374616e646172644272696467653a20455448207472616e736665722066616960448201527f6c6564000000000000000000000000000000000000000000000000000000000060648201526084016101dd565b610e9e6104ae565b610f2a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f4100000000000000000060648201526084016101dd565b610f6e853333878787878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506104eb92505050565b5050505050565b600080610fa07fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b905073ffffffffffffffffffffffffffffffffffffffff811615610fc357919050565b6040518060400160405280601a81526020017f4f564d5f4c3143726f7373446f6d61696e4d657373656e6765720000000000008152505160026110069190612c69565b604080513060208201526000918101919091527f4f564d5f4c3143726f7373446f6d61696e4d657373656e6765720000000000009190911790611061906060015b604051602081830303815290604052805190602001205490565b14611098576040517f54e433cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080513060208201526001918101919091526000906110ba90606001611047565b905073ffffffffffffffffffffffffffffffffffffffff81161561114e578073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611123573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111479190612c06565b9250505090565b6040517f332144db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105bc87873388888888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061172392505050565b6111cd6104ae565b611259576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f4100000000000000000060648201526084016101dd565b6105be86863333888888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061172392505050565b6105be863387878787878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506104eb92505050565b600054610100900460ff16158080156113025750600054600160ff909116105b8061131c5750303b15801561131c575060005460ff166001145b6113a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016101dd565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561140657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61140e611e79565b61142c73420000000000000000000000000000000000000783611efc565b801561148f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600061149d610f75565b73ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150b9190612c06565b905090565b6115533385348686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061155992505050565b50505050565b8234146115e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5374616e646172644272696467653a206272696467696e6720455448206d757360448201527f7420696e636c7564652073756666696369656e74204554482076616c7565000060648201526084016101dd565b6115f485858584611fe6565b60035460045460405173ffffffffffffffffffffffffffffffffffffffff92831692633dbb202b9287929116907f1635f5fd0000000000000000000000000000000000000000000000000000000090611657908b908b9086908a90602401612ca6565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e086901b90921682526116ea92918890600401612cef565b6000604051808303818588803b15801561170357600080fd5b505af1158015611717573d6000803e3d6000fd5b50505050505050505050565b34156117b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f5374616e646172644272696467653a2063616e6e6f742073656e642076616c7560448201527f650000000000000000000000000000000000000000000000000000000000000060648201526084016101dd565b6117ba87611adc565b15611908576117c98787611b3e565b61187b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f5374616e646172644272696467653a2077726f6e672072656d6f746520746f6b60448201527f656e20666f72204f7074696d69736d204d696e7461626c65204552433230206c60648201527f6f63616c20746f6b656e00000000000000000000000000000000000000000000608482015260a4016101dd565b6040517f9dc29fac00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015260248201859052881690639dc29fac90604401600060405180830381600087803b1580156118eb57600080fd5b505af11580156118ff573d6000803e3d6000fd5b5050505061199c565b61192a73ffffffffffffffffffffffffffffffffffffffff8816863086612087565b73ffffffffffffffffffffffffffffffffffffffff8088166000908152600260209081526040808320938a1683529290522054611968908490612d34565b73ffffffffffffffffffffffffffffffffffffffff8089166000908152600260209081526040808320938b16835292905220555b6119aa8787878787866120e5565b60035460045460405173ffffffffffffffffffffffffffffffffffffffff92831692633dbb202b9216907f0166a07a0000000000000000000000000000000000000000000000000000000090611a0e908b908d908c908c908c908b90602401612d4c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e085901b9092168252611aa192918790600401612cef565b600060405180830381600087803b158015611abb57600080fd5b505af1158015611acf573d6000803e3d6000fd5b5050505050505050505050565b6000611b08827f1d1d8b6300000000000000000000000000000000000000000000000000000000612173565b80611b385750611b38827fec4fc8e300000000000000000000000000000000000000000000000000000000612173565b92915050565b6000611b6a837f1d1d8b6300000000000000000000000000000000000000000000000000000000612173565b15611c13578273ffffffffffffffffffffffffffffffffffffffff1663c01e1bd66040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bde9190612c06565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050611b38565b8273ffffffffffffffffffffffffffffffffffffffff1663d6c0b2c46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bba573d6000803e3d6000fd5b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610a3f9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152612196565b8373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb0444523268717a02698be47d0803aa7468c00acbed2f8bd93a0459cde61dd89868686604051611daa93929190612da7565b60405180910390a46105be8686868686866122a2565b8373ffffffffffffffffffffffffffffffffffffffff1673deaddeaddeaddeaddeaddeaddeaddeaddead000073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fb0444523268717a02698be47d0803aa7468c00acbed2f8bd93a0459cde61dd89868686604051611e4d93929190612da7565b60405180910390a46115538484848461232a565b6000806000835160208501868989f195945050505050565b33611e82610f75565b73ffffffffffffffffffffffffffffffffffffffff1614158015611ec3575033611eaa611493565b73ffffffffffffffffffffffffffffffffffffffff1614155b15611efa576040517fc4050a2600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600054610100900460ff16611f93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016101dd565b6003805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560048054929093169116179055565b8373ffffffffffffffffffffffffffffffffffffffff1673deaddeaddeaddeaddeaddeaddeaddeaddead000073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f73d170910aba9e6d50b102db522b1dbcd796216f5128b445aa2135272886497e86868660405161207393929190612da7565b60405180910390a461155384848484612397565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526115539085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611cb0565b8373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f73d170910aba9e6d50b102db522b1dbcd796216f5128b445aa2135272886497e86868660405161215d93929190612da7565b60405180910390a46105be8686868686866123f6565b600061217e8361246e565b801561218f575061218f83836124d2565b9392505050565b60006121f8826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166125a19092919063ffffffff16565b805190915015610a3f57808060200190518101906122169190612de5565b610a3f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016101dd565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fd59c65b35445225835c83f50b6ede06a7be047d22e357073e250d9af537518cd86868660405161231a93929190612da7565b60405180910390a4505050505050565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f31b2166ff604fc5672ea5df08a78081d2bc6d746cadce880747f3643d819e83d8484604051612389929190612e07565b60405180910390a350505050565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f2849b43074093a05396b6f2a937dee8565b15a48a7b3d4bffb732a5017380af58484604051612389929190612e07565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f7ff126db8024424bbfd9826e8ab82ff59136289ea440b04b39a0df1b03b9cabf86868660405161231a93929190612da7565b600061249a827f01ffc9a7000000000000000000000000000000000000000000000000000000006124d2565b8015611b3857506124cb827fffffffff000000000000000000000000000000000000000000000000000000006124d2565b1592915050565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d9150600051905082801561258a575060208210155b80156125965750600081115b979650505050505050565b60606125b084846000856125b8565b949350505050565b60608247101561264a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016101dd565b73ffffffffffffffffffffffffffffffffffffffff85163b6126c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101dd565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516126f19190612e20565b60006040518083038185875af1925050503d806000811461272e576040519150601f19603f3d011682016040523d82523d6000602084013e612733565b606091505b50915091506125968282866060831561274d57508161218f565b82511561275d5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101dd9190612ab7565b73ffffffffffffffffffffffffffffffffffffffff811681146127b357600080fd5b50565b60008083601f8401126127c857600080fd5b50813567ffffffffffffffff8111156127e057600080fd5b6020830191508360208285010111156127f857600080fd5b9250929050565b600080600080600080600060c0888a03121561281a57600080fd5b873561282581612791565b9650602088013561283581612791565b9550604088013561284581612791565b9450606088013561285581612791565b93506080880135925060a088013567ffffffffffffffff81111561287857600080fd5b6128848a828b016127b6565b989b979a50959850939692959293505050565b803563ffffffff811681146128ab57600080fd5b919050565b6000806000604084860312156128c557600080fd5b6128ce84612897565b9250602084013567ffffffffffffffff8111156128ea57600080fd5b6128f6868287016127b6565b9497909650939450505050565b60008060008060006080868803121561291b57600080fd5b853561292681612791565b9450602086013561293681612791565b935060408601359250606086013567ffffffffffffffff81111561295957600080fd5b612965888289016127b6565b969995985093965092949392505050565b60008060008060006080868803121561298e57600080fd5b853561299981612791565b9450602086013593506129ae60408701612897565b9250606086013567ffffffffffffffff81111561295957600080fd5b600080600080600080600060c0888a0312156129e557600080fd5b87356129f081612791565b96506020880135612a0081612791565b95506040880135612a1081612791565b945060608801359350612a2560808901612897565b925060a088013567ffffffffffffffff81111561287857600080fd5b60005b83811015612a5c578181015183820152602001612a44565b838111156115535750506000910152565b60008151808452612a85816020860160208601612a41565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061218f6020830184612a6d565b60008060008060008060a08789031215612ae357600080fd5b8635612aee81612791565b95506020870135612afe81612791565b945060408701359350612b1360608801612897565b9250608087013567ffffffffffffffff811115612b2f57600080fd5b612b3b89828a016127b6565b979a9699509497509295939492505050565b60008060408385031215612b6057600080fd5b8235612b6b81612791565b91506020830135612b7b81612791565b809150509250929050565b600060208284031215612b9857600080fd5b813561218f81612791565b60008060008060608587031215612bb957600080fd5b8435612bc481612791565b9350612bd260208601612897565b9250604085013567ffffffffffffffff811115612bee57600080fd5b612bfa878288016127b6565b95989497509550505050565b600060208284031215612c1857600080fd5b815161218f81612791565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015612c6457612c64612c23565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612ca157612ca1612c23565b500290565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152612ce56080830184612a6d565b9695505050505050565b73ffffffffffffffffffffffffffffffffffffffff84168152606060208201526000612d1e6060830185612a6d565b905063ffffffff83166040830152949350505050565b60008219821115612d4757612d47612c23565b500190565b600073ffffffffffffffffffffffffffffffffffffffff80891683528088166020840152808716604084015280861660608401525083608083015260c060a0830152612d9b60c0830184612a6d565b98975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000612ddc6060830184612a6d565b95945050505050565b600060208284031215612df757600080fd5b8151801515811461218f57600080fd5b8281526040602082015260006125b06040830184612a6d565b60008251612e32818460208701612a41565b919091019291505056fea164736f6c634300080f000a000000", + "from": "0xDeaDDEaDDeAdDeAdDEAdDEaddeAddEAdDEAd0001", + "gasLimit": 3600000, + "intent": "Deploy L2StandardBridge Implementation", + "to": "0x420000000000000000000000000000000000002C" + }, + { + "data": "0xcdcb760a9b217f1b15f9c04316d04d42f550c340c5b2ee8e5ae05cab4f8cd9cb21970ca4000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000010956080604052348015600e575f80fd5b5060156019565b60c9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560685760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c65780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b610fbf806100d65f395ff3fe6080604052600436106100f2575f3560e01c80638312f14911610087578063d0e12f9011610057578063d0e12f90146102e9578063d3e5792b14610318578063d4ff9218146100fd578063dad544e01461032c575f80fd5b80638312f1491461028257806384411d651461029757806385b5b14d146102ab578063b49dc741146102ca575f80fd5b80633e47158c116100c25780633e47158c146101af57806354fd4d50146101c357806366d003ac1461021857806382356d8a14610244575f80fd5b80630d9019e1146100fd578063307f29621461014d5780633bbed4a01461016e5780633ccfd60b1461018d575f80fd5b366100f957005b5f80fd5b348015610108575f80fd5b5060025473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b348015610158575f80fd5b5061016c610167366004610d6d565b610340565b005b348015610179575f80fd5b5061016c610188366004610daa565b6103e6565b348015610198575f80fd5b506101a161046d565b604051908152602001610144565b3480156101ba575f80fd5b5061012361077b565b3480156101ce575f80fd5b5061020b6040518060400160405280600581526020017f312e362e3100000000000000000000000000000000000000000000000000000081525081565b6040516101449190610dc5565b348015610223575f80fd5b506002546101239073ffffffffffffffffffffffffffffffffffffffff1681565b34801561024f575f80fd5b506002546102759074010000000000000000000000000000000000000000900460ff1681565b6040516101449190610e7e565b34801561028d575f80fd5b506101a160015481565b3480156102a2575f80fd5b506101a15f5481565b3480156102b6575f80fd5b5061016c6102c5366004610e92565b610981565b3480156102d5575f80fd5b5061016c6102e4366004610ea9565b6109c7565b3480156102f4575f80fd5b5060025474010000000000000000000000000000000000000000900460ff16610275565b348015610323575f80fd5b506001546101a1565b348015610337575f80fd5b50610123610be3565b610348610c5d565b600280547401000000000000000000000000000000000000000080820460ff1692849290917fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909116908360018111156103a4576103a4610e18565b02179055507ff2ec44eb1c3b3acd547b76333eb2c4b27eee311860c57a9fdb04c95f62398fc881836040516103da929190610ee4565b60405180910390a15050565b6103ee610c5d565b6002805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527f62e69886a5df0ba8ffcacbfc1388754e7abd9bde24b036354c561f1acd4e459391016103da565b5f60015447101561052b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f4665655661756c743a207769746864726177616c20616d6f756e74206d75737460448201527f2062652067726561746572207468616e206d696e696d756d207769746864726160648201527f77616c20616d6f756e7400000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b479050805f8082825461053e9190610f2c565b90915550506002546040805183815273ffffffffffffffffffffffffffffffffffffffff909216602083018190523383830152905190917fc8a211cc64b6ed1b50595a9fcb1932b6d1e5a6e8ef15b60e5b1f988ea9086bba919081900360600190a16002546040517f38e04cbeb8c10f8f568618aa75be0f10b6729b8b4237743b4de20cbcde2839ee916105f39185918591339174010000000000000000000000000000000000000000900460ff1690610f3f565b60405180910390a1600160025474010000000000000000000000000000000000000000900460ff16600181111561062c5761062c610e18565b036106d0575f61063c8284610cb5565b9050806106cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4665655661756c743a206661696c656420746f2073656e642045544820746f2060448201527f4c322066656520726563697069656e74000000000000000000000000000000006064820152608401610522565b505090565b6040517fc2b3e5ac00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015262061a806024820152606060448201525f60648201527342000000000000000000000000000000000000169063c2b3e5ac9084906084015f604051808303818588803b158015610760575f80fd5b505af1158015610772573d5f803e3d5ffd5b50505050505090565b5f806107a57fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b905073ffffffffffffffffffffffffffffffffffffffff8116156107c857919050565b6040518060400160405280601a81526020017f4f564d5f4c3143726f7373446f6d61696e4d657373656e67657200000000000081525051600261080b9190610f80565b604080513060208201525f918101919091527f4f564d5f4c3143726f7373446f6d61696e4d657373656e6765720000000000009190911790610865906060015b604051602081830303815290604052805190602001205490565b1461089c576040517f54e433cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080513060208201526001918101919091525f906108bd9060600161084b565b905073ffffffffffffffffffffffffffffffffffffffff81161561094f578073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610924573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109489190610f97565b9250505090565b6040517f332144db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610989610c5d565b600180549082905560408051828152602081018490527f895a067c78583e800418fabf3da26a9496aab2ff3429cebdf7fefa642b2e420391016103da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff165f81158015610a115750825b90505f8267ffffffffffffffff166001148015610a2d5750303b155b905081158015610a3b575080155b15610a72576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610ad35784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610adb610cc8565b6002805473ffffffffffffffffffffffffffffffffffffffff8a167fffffffffffffffffffffffff000000000000000000000000000000000000000082168117835560018a81558993927fffffffffffffffffffffff000000000000000000000000000000000000000000169091179074010000000000000000000000000000000000000000908490811115610b7357610b73610e18565b02179055508315610bd95784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b5f610bec61077b565b73ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c34573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c589190610f97565b905090565b33610c66610be3565b73ffffffffffffffffffffffffffffffffffffffff1614610cb3576040517f7f12c64b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f610cc1835a84610d49565b9392505050565b33610cd161077b565b73ffffffffffffffffffffffffffffffffffffffff1614158015610d12575033610cf9610be3565b73ffffffffffffffffffffffffffffffffffffffff1614155b15610cb3576040517fc4050a2600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f805f805f858888f1949350505050565b803560028110610d68575f80fd5b919050565b5f60208284031215610d7d575f80fd5b610cc182610d5a565b73ffffffffffffffffffffffffffffffffffffffff81168114610da7575f80fd5b50565b5f60208284031215610dba575f80fd5b8135610cc181610d86565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60028110610e7a577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b9052565b60208101610e8c8284610e45565b92915050565b5f60208284031215610ea2575f80fd5b5035919050565b5f805f60608486031215610ebb575f80fd5b8335610ec681610d86565b925060208401359150610edb60408501610d5a565b90509250925092565b60408101610ef28285610e45565b610cc16020830184610e45565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115610e8c57610e8c610eff565b84815273ffffffffffffffffffffffffffffffffffffffff84811660208301528316604082015260808101610f776060830184610e45565b95945050505050565b8082028115828204841417610e8c57610e8c610eff565b5f60208284031215610fa7575f80fd5b8151610cc181610d8656fea164736f6c6343000819000a0000000000000000000000", + "from": "0xDeaDDEaDDeAdDeAdDEAdDEaddeAddEAdDEAd0001", + "gasLimit": 1300000, + "intent": "Deploy SequencerFeeVault Implementation", + "to": "0x420000000000000000000000000000000000002C" + }, + { + "data": "0xcdcb760a9b217f1b15f9c04316d04d42f550c340c5b2ee8e5ae05cab4f8cd9cb21970ca400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000002b6d608060405234801561001057600080fd5b5061001961001e565b6100de565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156100dc576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b612a80806100ed6000396000f3fe60806040523480156200001157600080fd5b5060043610620000935760003560e01c8063c4d66de81162000062578063c4d66de81462000175578063ce5ac90f146200018e578063e78cea9214620001a5578063ee9a31a214620001c657600080fd5b8063316b3739146200009857806354fd4d5014620000fb578063896f93d114620001475780638cf0629c146200015e575b600080fd5b620000d1620000a936600462000636565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b620001386040518060400160405280600681526020017f312e31302e32000000000000000000000000000000000000000000000000000081525081565b604051620000f29190620006c9565b620000d162000158366004620007c0565b620001e5565b620000d16200016f3660046200083d565b620001fc565b6200018c6200018636600462000636565b6200041b565b005b620000d16200019f366004620007c0565b620005ed565b600154620000d19073ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff16620000d1565b6000620001f4848484620005ed565b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff8516620002a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d4d696e7461626c654552433230466163746f72793a206d7560448201527f73742070726f766964652072656d6f746520746f6b656e20616464726573730060648201526084015b60405180910390fd5b600085858585604051602001620002c29493929190620008d4565b604051602081830303815290604052805190602001209050600081600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16888888886040516200031290620005fe565b620003229594939291906200092e565b8190604051809103906000f590508015801562000343573d6000803e3d6000fd5b5073ffffffffffffffffffffffffffffffffffffffff81811660008181526002602052604080822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016948d1694851790555193945090927fceeb8e7d520d7f3b65fc11a262b91066940193b05d4f93df07cfdced0eb551cf9190a360405133815273ffffffffffffffffffffffffffffffffffffffff80891691908316907f52fe89dd5930f343d25650b62fd367bae47088bcddffd2a88350a6ecdd620cdb9060200160405180910390a39695505050505050565b600054610100900460ff16158080156200043c5750600054600160ff909116105b80620004585750303b15801562000458575060005460ff166001145b620004e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016200029e565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156200054557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84161790558015620005e957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6000620001f48484846012620001fc565b6120e0806200099483390190565b803573ffffffffffffffffffffffffffffffffffffffff811681146200063157600080fd5b919050565b6000602082840312156200064957600080fd5b62000654826200060c565b9392505050565b6000815180845260005b81811015620006835760208185018101518683018201520162000665565b8181111562000696576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006200065460208301846200065b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f8301126200071f57600080fd5b813567ffffffffffffffff808211156200073d576200073d620006de565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715620007865762000786620006de565b81604052838152866020858801011115620007a057600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600060608486031215620007d657600080fd5b620007e1846200060c565b9250602084013567ffffffffffffffff80821115620007ff57600080fd5b6200080d878388016200070d565b935060408601359150808211156200082457600080fd5b5062000833868287016200070d565b9150509250925092565b600080600080608085870312156200085457600080fd5b6200085f856200060c565b9350602085013567ffffffffffffffff808211156200087d57600080fd5b6200088b888389016200070d565b94506040870135915080821115620008a257600080fd5b50620008b1878288016200070d565b925050606085013560ff81168114620008c957600080fd5b939692955090935050565b73ffffffffffffffffffffffffffffffffffffffff851681526080602082015260006200090560808301866200065b565b82810360408401526200091981866200065b565b91505060ff8316606083015295945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525060a060408301526200096960a08301866200065b565b82810360608401526200097d81866200065b565b91505060ff83166080830152969550505050505056fe6101a06040523480156200001257600080fd5b50604051620020e0380380620020e0833981016040819052620000359162000215565b6040805180820190915260018152603160f81b6020820152839081908185600362000061838262000350565b50600462000070828262000350565b5050825160208085019190912083518483012060e08290526101008190524660a0818152604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81880181905281830187905260608201869052608082019490945230818401528151808203909301835260c0019052805194019390932091935091906080523060c05261012052505050506001600160a01b0394851661014052509390921661016052505060ff16610180526200041c565b80516001600160a01b03811681146200014357600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200017057600080fd5b81516001600160401b03808211156200018d576200018d62000148565b604051601f8301601f19908116603f01168101908282118183101715620001b857620001b862000148565b81604052838152602092508683858801011115620001d557600080fd5b600091505b83821015620001f95785820183015181830184015290820190620001da565b838211156200020b5760008385830101525b9695505050505050565b600080600080600060a086880312156200022e57600080fd5b62000239866200012b565b945062000249602087016200012b565b60408701519094506001600160401b03808211156200026757600080fd5b6200027589838a016200015e565b945060608801519150808211156200028c57600080fd5b506200029b888289016200015e565b925050608086015160ff81168114620002b357600080fd5b809150509295509295909350565b600181811c90821680620002d657607f821691505b602082108103620002f757634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200034b57600081815260208120601f850160051c81016020861015620003265750805b601f850160051c820191505b81811015620003475782815560010162000332565b5050505b505050565b81516001600160401b038111156200036c576200036c62000148565b62000384816200037d8454620002c1565b84620002fd565b602080601f831160018114620003bc5760008415620003a35750858301515b600019600386901b1c1916600185901b17855562000347565b600085815260208120601f198616915b82811015620003ed57888601518255948401946001909101908401620003cc565b50858210156200040c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05160c05160e0516101005161012051610140516101605161018051611c37620004a960003960006102700152600081816103a70152818161041c0152818161064801526107aa0152600081816101d501526103cd01526000611174015260006111c30152600061119e015260006110f7015260006111210152600061114b0152611c376000f3fe608060405234801561001057600080fd5b50600436106101a35760003560e01c806370a08231116100ee578063ae1f6aaf11610097578063d6c0b2c411610071578063d6c0b2c4146103cb578063dd62ed3e14610404578063e78cea92146103a5578063ee9a31a21461041757600080fd5b8063ae1f6aaf146103a5578063c01e1bd6146103cb578063d505accf146103f157600080fd5b80639dc29fac116100c85780639dc29fac1461036c578063a457c2d71461037f578063a9059cbb1461039257600080fd5b806370a082311461031b5780637ecebe001461035157806395d89b411461036457600080fd5b8063313ce5671161015057806340c10f191161012a57806340c10f19146102b557806354fd4d50146102ca5780636afdd8501461030657600080fd5b8063313ce567146102695780633644e5151461029a57806339509351146102a257600080fd5b8063095ea7b311610181578063095ea7b31461023157806318160ddd1461024457806323b872dd1461025657600080fd5b806301ffc9a7146101a8578063033964be146101d057806306fdde031461021c575b600080fd5b6101bb6101b636600461194b565b61043e565b60405190151581526020015b60405180910390f35b6101f77f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101c7565b61022461052f565b6040516101c7919061198d565b6101bb61023f366004611a29565b6105c1565b6002545b6040519081526020016101c7565b6101bb610264366004611a53565b6105db565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016101c7565b6102486105ff565b6101bb6102b0366004611a29565b61060e565b6102c86102c3366004611a29565b610630565b005b6102246040518060400160405280600581526020017f312e342e3100000000000000000000000000000000000000000000000000000081525081565b6e22d473030f116ddee9f6b43ac78ba36101f7565b610248610329366004611a8f565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61024861035f366004611a8f565b610758565b610224610783565b6102c861037a366004611a29565b610792565b6101bb61038d366004611a29565b6108a9565b6101bb6103a0366004611a29565b610956565b7f00000000000000000000000000000000000000000000000000000000000000006101f7565b7f00000000000000000000000000000000000000000000000000000000000000006101f7565b6102c86103ff366004611aaa565b610964565b610248610412366004611b1d565b610b23565b6101f77f000000000000000000000000000000000000000000000000000000000000000081565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007f1d1d8b63000000000000000000000000000000000000000000000000000000007fec4fc8e3000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000085168314806104f757507fffffffff00000000000000000000000000000000000000000000000000000000858116908316145b8061052657507fffffffff00000000000000000000000000000000000000000000000000000000858116908216145b95945050505050565b60606003805461053e90611b50565b80601f016020809104026020016040519081016040528092919081815260200182805461056a90611b50565b80156105b75780601f1061058c576101008083540402835291602001916105b7565b820191906000526020600020905b81548152906001019060200180831161059a57829003601f168201915b5050505050905090565b6000336105cf818585610bc4565b60019150505b92915050565b6000336105e9858285610d78565b6105f4858585610e2a565b506001949350505050565b60006106096110dd565b905090565b6000336105cf8185856106218383610b23565b61062b9190611bcc565b610bc4565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146106fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f4f7074696d69736d4d696e7461626c6545524332303a206f6e6c79206272696460448201527f67652063616e206d696e7420616e64206275726e00000000000000000000000060648201526084015b60405180910390fd5b6107048282611211565b8173ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858260405161074c91815260200190565b60405180910390a25050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600560205260408120546105d5565b60606004805461053e90611b50565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f4f7074696d69736d4d696e7461626c6545524332303a206f6e6c79206272696460448201527f67652063616e206d696e7420616e64206275726e00000000000000000000000060648201526084016106f1565b6108618282611331565b8173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca58260405161074c91815260200190565b600033816108b78286610b23565b905083811015610949576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016106f1565b6105f48286868403610bc4565b6000336105cf818585610e2a565b834211156109ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e6500000060448201526064016106f1565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886109fd8c611516565b60408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610a658261154b565b90506000610a75828787876115b4565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b0c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e6174757265000060448201526064016106f1565b610b178a8a8a610bc4565b50505050505050505050565b60007fffffffffffffffffffffffffffffffffffdd2b8cfcf0ee922116094bc538745d73ffffffffffffffffffffffffffffffffffffffff831601610b8957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6105d5565b73ffffffffffffffffffffffffffffffffffffffff8084166000908152600160209081526040808320938616835292905220545b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8316610c66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016106f1565b73ffffffffffffffffffffffffffffffffffffffff8216610d09576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016106f1565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000610d848484610b23565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610e245781811015610e17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016106f1565b610e248484848403610bc4565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610ecd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016106f1565b73ffffffffffffffffffffffffffffffffffffffff8216610f70576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016106f1565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015611026576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016106f1565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526020819052604080822085850390559185168152908120805484929061106a908490611bcc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516110d091815260200190565b60405180910390a3610e24565b60003073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614801561114357507f000000000000000000000000000000000000000000000000000000000000000046145b1561116d57507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b73ffffffffffffffffffffffffffffffffffffffff821661128e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016106f1565b80600260008282546112a09190611bcc565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040812080548392906112da908490611bcc565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff82166113d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016106f1565b73ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020548181101561148a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016106f1565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604081208383039055600280548492906114c6908490611be4565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d6b565b73ffffffffffffffffffffffffffffffffffffffff811660009081526005602052604090208054600181018255905b50919050565b60006105d56115586110dd565b836040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b60008060006115c5878787876115dc565b915091506115d2816116f4565b5095945050505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561161357506000905060036116eb565b8460ff16601b1415801561162b57508460ff16601c14155b1561163c57506000905060046116eb565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611690573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166116e4576000600192509250506116eb565b9150600090505b94509492505050565b600081600481111561170857611708611bfb565b036117105750565b600181600481111561172457611724611bfb565b0361178b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016106f1565b600281600481111561179f5761179f611bfb565b03611806576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016106f1565b600381600481111561181a5761181a611bfb565b036118a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016106f1565b60048160048111156118bb576118bb611bfb565b03611948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016106f1565b50565b60006020828403121561195d57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610bbd57600080fd5b600060208083528351808285015260005b818110156119ba5785810183015185820160400152820161199e565b818111156119cc576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611a2457600080fd5b919050565b60008060408385031215611a3c57600080fd5b611a4583611a00565b946020939093013593505050565b600080600060608486031215611a6857600080fd5b611a7184611a00565b9250611a7f60208501611a00565b9150604084013590509250925092565b600060208284031215611aa157600080fd5b610bbd82611a00565b600080600080600080600060e0888a031215611ac557600080fd5b611ace88611a00565b9650611adc60208901611a00565b95506040880135945060608801359350608088013560ff81168114611b0057600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215611b3057600080fd5b611b3983611a00565b9150611b4760208401611a00565b90509250929050565b600181811c90821680611b6457607f821691505b602082108103611545577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115611bdf57611bdf611b9d565b500190565b600082821015611bf657611bf6611b9d565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c634300080f000aa164736f6c634300080f000a00000000000000000000000000000000000000", + "from": "0xDeaDDEaDDeAdDeAdDEAdDEaddeAddEAdDEAd0001", + "gasLimit": 3600000, + "intent": "Deploy OptimismMintableERC20Factory Implementation", + "to": "0x420000000000000000000000000000000000002C" + }, + { + "data": "0xcdcb760a9b217f1b15f9c04316d04d42f550c340c5b2ee8e5ae05cab4f8cd9cb21970ca400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000001aaa608060405234801561001057600080fd5b5061001961001e565b6100de565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156100dc576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6119bd806100ed6000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c80637f46ddb211610081578063c4d66de81161005b578063c4d66de8146101fa578063c89701a21461020d578063dad544e01461022d57600080fd5b80637f46ddb2146101ab578063927ede2d146101c9578063aa557452146101e757600080fd5b806354fd4d50116100b257806354fd4d50146101405780635c975abb14610189578063761f44931461019857600080fd5b80633687011a146100d95780633cb747bf146100ee5780633e47158c14610138575b600080fd5b6100ec6100e73660046115d7565b610235565b005b60015461010e9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61010e6102e6565b61017c6040518060400160405280600681526020017f312e31302e31000000000000000000000000000000000000000000000000000081525081565b60405161012f91906116c5565b6040516000815260200161012f565b6100ec6101a63660046116d8565b6104f1565b60025473ffffffffffffffffffffffffffffffffffffffff1661010e565b60015473ffffffffffffffffffffffffffffffffffffffff1661010e565b6100ec6101f5366004611770565b610a0f565b6100ec6102083660046117e7565b610acb565b60025461010e9073ffffffffffffffffffffffffffffffffffffffff1681565b61010e610c7c565b61023d610cf9565b6102ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4552433732314272696467653a206163636f756e74206973206e6f742065787460448201527f65726e616c6c79206f776e65640000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102de8686333388888888610d36565b505050505050565b6000806103117fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b905073ffffffffffffffffffffffffffffffffffffffff81161561033457919050565b6040518060400160405280601a81526020017f4f564d5f4c3143726f7373446f6d61696e4d657373656e6765720000000000008152505160026103779190611804565b604080513060208201526000918101919091527f4f564d5f4c3143726f7373446f6d61696e4d657373656e67657200000000000091909117906103d2906060015b604051602081830303815290604052805190602001205490565b14610409576040517f54e433cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805130602082015260019181019190915260009061042b906060016103b8565b905073ffffffffffffffffffffffffffffffffffffffff8116156104bf578073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610494573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b89190611868565b9250505090565b6040517f332144db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff16331480156105c65750600254600154604080517f6e296e45000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9384169390921691636e296e45916004808201926020929091908290030181865afa15801561058a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ae9190611868565b73ffffffffffffffffffffffffffffffffffffffff16145b610652576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4552433732314272696467653a2066756e6374696f6e2063616e206f6e6c792060448201527f62652063616c6c65642066726f6d20746865206f74686572206272696467650060648201526084016102c5565b3073ffffffffffffffffffffffffffffffffffffffff8816036106f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4c324552433732314272696467653a206c6f63616c20746f6b656e2063616e6e60448201527f6f742062652073656c660000000000000000000000000000000000000000000060648201526084016102c5565b610721877faecafc230000000000000000000000000000000000000000000000000000000061128c565b6107ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f4c324552433732314272696467653a206c6f63616c20746f6b656e20696e746560448201527f7266616365206973206e6f7420636f6d706c69616e740000000000000000000060648201526084016102c5565b8673ffffffffffffffffffffffffffffffffffffffff1663d6c0b2c46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081c9190611868565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16146108fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604b60248201527f4c324552433732314272696467653a2077726f6e672072656d6f746520746f6b60448201527f656e20666f72204f7074696d69736d204d696e7461626c65204552433732312060648201527f6c6f63616c20746f6b656e000000000000000000000000000000000000000000608482015260a4016102c5565b6040517fa144819400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301526024820185905288169063a144819490604401600060405180830381600087803b15801561096c57600080fd5b505af1158015610980573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f1f39bf6707b5d608453e0ae4c067b562bcc4c85c0f562ef5d2c774d2e7f131ac878787876040516109fe94939291906118ce565b60405180910390a450505050505050565b73ffffffffffffffffffffffffffffffffffffffff8516610ab2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4552433732314272696467653a206e667420726563697069656e742063616e6e60448201527f6f7420626520616464726573732830290000000000000000000000000000000060648201526084016102c5565b610ac28787338888888888610d36565b50505050505050565b600054610100900460ff1615808015610aeb5750600054600160ff909116105b80610b055750303b158015610b05575060005460ff166001145b610b91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016102c5565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610bef57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610bf76112af565b610c1573420000000000000000000000000000000000000783611332565b8015610c7857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6000610c866102e6565b73ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf49190611868565b905090565b6000323303610d085750600190565b333b601703610d3057604051602081016040526020600082333c5160e81c62ef010014905090565b50600090565b73ffffffffffffffffffffffffffffffffffffffff8716610dd9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4c324552433732314272696467653a2072656d6f746520746f6b656e2063616e60448201527f6e6f74206265206164647265737328302900000000000000000000000000000060648201526084016102c5565b6040517f6352211e0000000000000000000000000000000000000000000000000000000081526004810185905273ffffffffffffffffffffffffffffffffffffffff891690636352211e90602401602060405180830381865afa158015610e44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e689190611868565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614610f22576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4c324552433732314272696467653a205769746864726177616c206973206e6f60448201527f74206265696e6720696e69746961746564206279204e4654206f776e6572000060648201526084016102c5565b60008873ffffffffffffffffffffffffffffffffffffffff1663d6c0b2c46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f939190611868565b90508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611050576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4c324552433732314272696467653a2072656d6f746520746f6b656e20646f6560448201527f73206e6f74206d6174636820676976656e2076616c756500000000000000000060648201526084016102c5565b6040517f9dc29fac00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8881166004830152602482018790528a1690639dc29fac90604401600060405180830381600087803b1580156110c057600080fd5b505af11580156110d4573d6000803e3d6000fd5b505050506000818a89898988886040516024016110f7979695949392919061190e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f761f44930000000000000000000000000000000000000000000000000000000017905260015460025491517f3dbb202b00000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff90811692633dbb202b926111cc92169085908a9060040161196b565b600060405180830381600087803b1580156111e657600080fd5b505af11580156111fa573d6000803e3d6000fd5b505050508773ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fb7460e2a880f256ebef3406116ff3eee0cee51ebccdc2a40698f87ebb2e9c1a58a8a898960405161127894939291906118ce565b60405180910390a450505050505050505050565b60006112978361141c565b80156112a857506112a88383611481565b9392505050565b336112b86102e6565b73ffffffffffffffffffffffffffffffffffffffff16141580156112f95750336112e0610c7c565b73ffffffffffffffffffffffffffffffffffffffff1614155b15611330576040517fc4050a2600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600054610100900460ff166113c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016102c5565b6001805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560028054929093169116179055565b6000611448827f01ffc9a700000000000000000000000000000000000000000000000000000000611481565b801561147b5750611479827fffffffff00000000000000000000000000000000000000000000000000000000611481565b155b92915050565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d91506000519050828015611539575060208210155b80156115455750600081115b979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461157257600080fd5b50565b803563ffffffff8116811461158957600080fd5b919050565b60008083601f8401126115a057600080fd5b50813567ffffffffffffffff8111156115b857600080fd5b6020830191508360208285010111156115d057600080fd5b9250929050565b60008060008060008060a087890312156115f057600080fd5b86356115fb81611550565b9550602087013561160b81611550565b94506040870135935061162060608801611575565b9250608087013567ffffffffffffffff81111561163c57600080fd5b61164889828a0161158e565b979a9699509497509295939492505050565b6000815180845260005b8181101561168057602081850181015186830182015201611664565b81811115611692576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006112a8602083018461165a565b600080600080600080600060c0888a0312156116f357600080fd5b87356116fe81611550565b9650602088013561170e81611550565b9550604088013561171e81611550565b9450606088013561172e81611550565b93506080880135925060a088013567ffffffffffffffff81111561175157600080fd5b61175d8a828b0161158e565b989b979a50959850939692959293505050565b600080600080600080600060c0888a03121561178b57600080fd5b873561179681611550565b965060208801356117a681611550565b955060408801356117b681611550565b9450606088013593506117cb60808901611575565b925060a088013567ffffffffffffffff81111561175157600080fd5b6000602082840312156117f957600080fd5b81356112a881611550565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611863577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500290565b60006020828403121561187a57600080fd5b81516112a881611550565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff85168152836020820152606060408201526000611904606083018486611885565b9695505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808a1683528089166020840152808816604084015280871660608401525084608083015260c060a083015261195e60c083018486611885565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8416815260606020820152600061199a606083018561165a565b905063ffffffff8316604083015294935050505056fea164736f6c634300080f000a00000000000000000000000000000000000000000000", + "from": "0xDeaDDEaDDeAdDeAdDEAdDEaddeAddEAdDEAd0001", + "gasLimit": 1900000, + "intent": "Deploy L2ERC721Bridge Implementation", + "to": "0x420000000000000000000000000000000000002C" + }, + { + "data": "0xcdcb760a9b217f1b15f9c04316d04d42f550c340c5b2ee8e5ae05cab4f8cd9cb21970ca400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000cad608060405234801561001057600080fd5b50610c8d806100206000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80635cf24969116100f9578063c598591811610097578063e591b28211610071578063e591b28214610469578063e81b2c6d14610483578063f82061401461048c578063fe3d57101461049557600080fd5b8063c598591814610408578063d844471514610428578063dad544e01461046157600080fd5b80638381f58a116100d35780638381f58a146103c25780638b239f73146103d65780639e8c4966146103df578063b80777ea146103e857600080fd5b80635cf249691461038957806364ca23ef1461039257806368d5dca6146103a657600080fd5b80634397dfef1161016657806347af267b1161014057806347af267b146102ba5780634d5d9a2a146102dd57806354fd4d501461030e578063550fcdc91461035057600080fd5b80634397dfef14610277578063440a5e201461029f57806346a4d780146102a757600080fd5b806316d3bc7f116101a257806316d3bc7f14610202578063213268491461022f5780633db6be2b146102425780633e47158c1461024a57600080fd5b8063015d8eb9146101c9578063098999be146101de57806309bd5a60146101e6575b600080fd5b6101dc6101d7366004610ae1565b6104c6565b005b6101dc610605565b6101ef60025481565b6040519081526020015b60405180910390f35b6008546102169067ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016101f9565b60005b60405190151581526020016101f9565b6101dc610618565b610252610642565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101f9565b6040805173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee815260126020820152016101f9565b6101dc61084d565b6101dc6102b5366004610b53565b6108a4565b6102326102c8366004610b53565b60096020526000908152604090205460ff1681565b6008546102f99068010000000000000000900463ffffffff1681565b60405163ffffffff90911681526020016101f9565b60408051808201909152600581527f312e392e3000000000000000000000000000000000000000000000000000000060208201525b6040516101f99190610b6c565b60408051808201909152600381527f45544800000000000000000000000000000000000000000000000000000000006020820152610343565b6101ef60015481565b6003546102169067ffffffffffffffff1681565b6003546102f99068010000000000000000900463ffffffff1681565b6000546102169067ffffffffffffffff1681565b6101ef60055481565b6101ef60065481565b6000546102169068010000000000000000900467ffffffffffffffff1681565b6003546102f9906c01000000000000000000000000900463ffffffff1681565b60408051808201909152600581527f45746865720000000000000000000000000000000000000000000000000000006020820152610343565b6102526108b9565b73deaddeaddeaddeaddeaddeaddeaddeaddead0001610252565b6101ef60045481565b6101ef60075481565b6008546104b3906c01000000000000000000000000900461ffff1681565b60405161ffff90911681526020016101f9565b3373deaddeaddeaddeaddeaddeaddeaddeaddead00011461056d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603b60248201527f4c31426c6f636b3a206f6e6c7920746865206465706f7369746f72206163636f60448201527f756e742063616e20736574204c3120626c6f636b2076616c7565730000000000606482015260840160405180910390fd5b6000805467ffffffffffffffff98891668010000000000000000027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909116998916999099179890981790975560019490945560029290925560038054919094167fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000009190911617909255600491909155600555600655565b61060d61084d565b60a43560a01c600855565b61062061084d565b6dffff00000000000000000000000060b03560901c1660a43560a01c17600855565b60008061066d7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b905073ffffffffffffffffffffffffffffffffffffffff81161561069057919050565b6040518060400160405280601a81526020017f4f564d5f4c3143726f7373446f6d61696e4d657373656e6765720000000000008152505160026106d39190610bdf565b604080513060208201526000918101919091527f4f564d5f4c3143726f7373446f6d61696e4d657373656e676572000000000000919091179061072e906060015b604051602081830303815290604052805190602001205490565b14610765576040517f54e433cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805130602082015260019181019190915260009061078790606001610714565b905073ffffffffffffffffffffffffffffffffffffffff81161561081b578073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108149190610c43565b9250505090565b6040517f332144db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73deaddeaddeaddeaddeaddeaddeaddeaddead000133811461087757633cc50b456000526004601cfd5b60043560801c60035560143560801c60005560243560015560443560075560643560025560843560045550565b6108ad33610936565b6108b681610a13565b50565b60006108c3610642565b73ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561090d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109319190610c43565b905090565b73ffffffffffffffffffffffffffffffffffffffff811673deaddeaddeaddeaddeaddeaddeaddeaddead000114806109a057506109716108b9565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b806109dd57506109ae610642565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6108b6576040517fbe9d7ca600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008181526009602052604090205460ff1615610a5c576040517f4f45326000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008181526009602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091559051909183917fb876f6594132c89891d2fd198e925e999be741ec809abb58bfe9b966876cc06c9190a350565b803567ffffffffffffffff81168114610adc57600080fd5b919050565b600080600080600080600080610100898b031215610afe57600080fd5b610b0789610ac4565b9750610b1560208a01610ac4565b96506040890135955060608901359450610b3160808a01610ac4565b979a969950949793969560a0850135955060c08501359460e001359350915050565b600060208284031215610b6557600080fd5b5035919050565b600060208083528351808285015260005b81811015610b9957858101830151858201604001528201610b7d565b81811115610bab576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610c3e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500290565b600060208284031215610c5557600080fd5b815173ffffffffffffffffffffffffffffffffffffffff81168114610c7957600080fd5b939250505056fea164736f6c634300080f000a00000000000000000000000000000000000000", + "from": "0xDeaDDEaDDeAdDeAdDEAdDEaddeAddEAdDEAd0001", + "gasLimit": 750000, + "intent": "Deploy L1Block Implementation", + "to": "0x420000000000000000000000000000000000002C" + }, + { + "data": "0xcdcb760a9b217f1b15f9c04316d04d42f550c340c5b2ee8e5ae05cab4f8cd9cb21970ca4000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000006e9608060405234801561001057600080fd5b506106c9806100206000396000f3fe6080604052600436106100695760003560e01c806382e3702d1161004357806382e3702d14610120578063c2b3e5ac14610160578063ecc704281461017357600080fd5b80633f827a5a1461009257806344df8e70146100bf57806354fd4d50146100d457600080fd5b3661008d5761008b33620186a0604051806020016040528060008152506101d8565b005b600080fd5b34801561009e57600080fd5b506100a7600181565b60405161ffff90911681526020015b60405180910390f35b3480156100cb57600080fd5b5061008b61039c565b3480156100e057600080fd5b50604080518082018252600581527f312e322e30000000000000000000000000000000000000000000000000000000602082015290516100b691906104c7565b34801561012c57600080fd5b5061015061013b3660046104e1565b60006020819052908152604090205460ff1681565b60405190151581526020016100b6565b61008b61016e366004610529565b6101d8565b34801561017f57600080fd5b506101ca6001547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000001790565b6040519081526020016100b6565b600061026e6040518060c001604052806102326001547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000001790565b815233602082015273ffffffffffffffffffffffffffffffffffffffff871660408201523460608201526080810186905260a0018490526103d4565b600081815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055905073ffffffffffffffffffffffffffffffffffffffff8416336103096001547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000001790565b7f02a52367d10742d8032712c1bb8e0144ff1ec5ffda1ed7d70bb05a27449550543487878760405161033e949392919061062d565b60405180910390a45050600180547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8082168301167fffff0000000000000000000000000000000000000000000000000000000000009091161790555050565b476103a681610421565b60405181907f7967de617a5ac1cc7eba2d6f37570a0135afa950d8bb77cdd35f0d0b4e85a16f90600090a250565b80516020808301516040808501516060860151608087015160a0880151935160009761040497909695910161065d565b604051602081830303815290604052805190602001209050919050565b8060405161042e90610450565b6040518091039082f090508015801561044b573d6000803e3d6000fd5b505050565b6008806106b583390190565b6000815180845260005b8181101561048257602081850181015186830182015201610466565b81811115610494576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006104da602083018461045c565b9392505050565b6000602082840312156104f357600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561053e57600080fd5b833573ffffffffffffffffffffffffffffffffffffffff8116811461056257600080fd5b925060208401359150604084013567ffffffffffffffff8082111561058657600080fd5b818601915086601f83011261059a57600080fd5b8135818111156105ac576105ac6104fa565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156105f2576105f26104fa565b8160405282815289602084870101111561060b57600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b84815283602082015260806040820152600061064c608083018561045c565b905082606083015295945050505050565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a08301526106a860c083018461045c565b9897505050505050505056fe608060405230fffea164736f6c634300080f000a0000000000000000000000000000000000000000000000", + "from": "0xDeaDDEaDDeAdDeAdDEAdDEaddeAddEAdDEAd0001", + "gasLimit": 650000, + "intent": "Deploy L2ToL1MessagePasser Implementation", + "to": "0x420000000000000000000000000000000000002C" + }, + { + "data": "0xcdcb760a9b217f1b15f9c04316d04d42f550c340c5b2ee8e5ae05cab4f8cd9cb21970ca400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000003f8d608060405234801561001057600080fd5b5061001961001e565b6100de565b600154610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60015460ff90811610156100dc576001805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b613ea0806100ed6000396000f3fe60806040523480156200001157600080fd5b5060043610620000cd5760003560e01c8063d2382242116200007f578063dad544e01162000062578063dad544e014620001d6578063e78cea9214620001e0578063ee9a31a2146200020757600080fd5b8063d238224214620001b5578063d97df65214620001bf57600080fd5b80635572acae11620000b45780635572acae14620001525780637d1d0c5b1462000189578063cd6dc687146200019c57600080fd5b80633e47158c14620000d257806354fd4d501462000106575b600080fd5b620000dc6200022c565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b620001436040518060400160405280600581526020017f312e352e3100000000000000000000000000000000000000000000000000000081525081565b604051620000fd9190620009ad565b6200017862000163366004620009ef565b60006020819052908152604090205460ff1681565b6040519015158152602001620000fd565b6002545b604051908152602001620000fd565b620001b3620001ad36600462000a0f565b62000443565b005b6200018d60025481565b620000dc620001d036600462000b20565b62000628565b620000dc62000826565b600154620000dc9062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b60015462010000900473ffffffffffffffffffffffffffffffffffffffff16620000dc565b600080620002587fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b905073ffffffffffffffffffffffffffffffffffffffff8116156200027c57919050565b6040518060400160405280601a81526020017f4f564d5f4c3143726f7373446f6d61696e4d657373656e676572000000000000815250516002620002c1919062000b9f565b604080513060208201526000918101919091527f4f564d5f4c3143726f7373446f6d61696e4d657373656e67657200000000000091909117906200031d906060015b604051602081830303815290604052805190602001205490565b1462000355576040517f54e433cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051306020820152600191810191909152600090620003799060600162000303565b905073ffffffffffffffffffffffffffffffffffffffff81161562000411578073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200040a919062000c04565b9250505090565b6040517f332144db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154610100900460ff16158080156200046157506001805460ff16105b806200047c5750303b1580156200047c57506001805460ff16145b6200050e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168117905580156200056c57600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b62000576620008a8565b600180547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff861602179055600282905580156200062357600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b600073ffffffffffffffffffffffffffffffffffffffff8416620006f6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526044602482018190527f4f7074696d69736d4d696e7461626c65455243373231466163746f72793a204c908201527f3120746f6b656e20616464726573732063616e6e6f742062652061646472657360648201527f7328302900000000000000000000000000000000000000000000000000000000608482015260a40162000505565b60008484846040516020016200070f9392919062000c24565b604051602081830303815290604052805190602001209050600081600160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600254888888604051620007619062000931565b6200077195949392919062000c73565b8190604051809103906000f590508015801562000792573d6000803e3d6000fd5b5073ffffffffffffffffffffffffffffffffffffffff8181166000818152602081815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905590513381529394509189169290917fe72783bb8e0ca31286b85278da59684dd814df9762a52f0837f89edd1483b299910160405180910390a395945050505050565b6000620008326200022c565b73ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200087d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008a3919062000c04565b905090565b33620008b36200022c565b73ffffffffffffffffffffffffffffffffffffffff1614158015620008f7575033620008de62000826565b73ffffffffffffffffffffffffffffffffffffffff1614155b156200092f576040517fc4050a2600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6131bf8062000cd583390190565b6000815180845260005b81811015620009675760208185018101518683018201520162000949565b818111156200097a576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000620009c260208301846200093f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff81168114620009ec57600080fd5b50565b60006020828403121562000a0257600080fd5b8135620009c281620009c9565b6000806040838503121562000a2357600080fd5b823562000a3081620009c9565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011262000a7f57600080fd5b813567ffffffffffffffff8082111562000a9d5762000a9d62000a3e565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171562000ae65762000ae662000a3e565b8160405283815286602085880101111562000b0057600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060006060848603121562000b3657600080fd5b833562000b4381620009c9565b9250602084013567ffffffffffffffff8082111562000b6157600080fd5b62000b6f8783880162000a6d565b9350604086013591508082111562000b8657600080fd5b5062000b958682870162000a6d565b9150509250925092565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000bff577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500290565b60006020828403121562000c1757600080fd5b8151620009c281620009c9565b73ffffffffffffffffffffffffffffffffffffffff8416815260606020820152600062000c5560608301856200093f565b828103604084015262000c6981856200093f565b9695505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835286602084015280861660408401525060a0606083015262000cb460a08301856200093f565b828103608084015262000cc881856200093f565b9897505050505050505056fe60e06040523480156200001157600080fd5b50604051620031bf380380620031bf83398101604081905262000034916200062d565b8181600062000044838262000756565b50600162000053828262000756565b5050506001600160a01b038516620000d85760405162461bcd60e51b815260206004820152603360248201527f4f7074696d69736d4d696e7461626c654552433732313a20627269646765206360448201527f616e6e6f7420626520616464726573732830290000000000000000000000000060648201526084015b60405180910390fd5b83600003620001505760405162461bcd60e51b815260206004820152603660248201527f4f7074696d69736d4d696e7461626c654552433732313a2072656d6f7465206360448201527f6861696e2069642063616e6e6f74206265207a65726f000000000000000000006064820152608401620000cf565b6001600160a01b038316620001ce5760405162461bcd60e51b815260206004820152603960248201527f4f7074696d69736d4d696e7461626c654552433732313a2072656d6f7465207460448201527f6f6b656e2063616e6e6f742062652061646472657373283029000000000000006064820152608401620000cf565b60808490526001600160a01b0383811660a081905290861660c0526200020290601462000256602090811b62000eed17901c565b62000218856200041660201b620011301760201c565b6040516020016200022b92919062000822565b604051602081830303815290604052600a90816200024a919062000756565b50505050505062000993565b6060600062000267836002620008ac565b62000274906002620008ce565b6001600160401b038111156200028e576200028e62000553565b6040519080825280601f01601f191660200182016040528015620002b9576020820181803683370190505b509050600360fc1b81600081518110620002d757620002d7620008e9565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110620003095762000309620008e9565b60200101906001600160f81b031916908160001a90535060006200032f846002620008ac565b6200033c906001620008ce565b90505b6001811115620003be576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110620003745762000374620008e9565b1a60f81b8282815181106200038d576200038d620008e9565b60200101906001600160f81b031916908160001a90535060049490941c93620003b681620008ff565b90506200033f565b5083156200040f5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401620000cf565b9392505050565b6060816000036200043e5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156200046e5780620004558162000919565b9150620004669050600a836200094b565b915062000442565b6000816001600160401b038111156200048b576200048b62000553565b6040519080825280601f01601f191660200182016040528015620004b6576020820181803683370190505b5090505b84156200052e57620004ce60018362000962565b9150620004dd600a866200097c565b620004ea906030620008ce565b60f81b818381518110620005025762000502620008e9565b60200101906001600160f81b031916908160001a90535062000526600a866200094b565b9450620004ba565b949350505050565b80516001600160a01b03811681146200054e57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620005865781810151838201526020016200056c565b8381111562000596576000848401525b50505050565b600082601f830112620005ae57600080fd5b81516001600160401b0380821115620005cb57620005cb62000553565b604051601f8301601f19908116603f01168101908282118183101715620005f657620005f662000553565b816040528381528660208588010111156200061057600080fd5b6200062384602083016020890162000569565b9695505050505050565b600080600080600060a086880312156200064657600080fd5b620006518662000536565b945060208601519350620006686040870162000536565b60608701519093506001600160401b03808211156200068657600080fd5b6200069489838a016200059c565b93506080880151915080821115620006ab57600080fd5b50620006ba888289016200059c565b9150509295509295909350565b600181811c90821680620006dc57607f821691505b602082108103620006fd57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200075157600081815260208120601f850160051c810160208610156200072c5750805b601f850160051c820191505b818110156200074d5782815560010162000738565b5050505b505050565b81516001600160401b0381111562000772576200077262000553565b6200078a81620007838454620006c7565b8462000703565b602080601f831160018114620007c25760008415620007a95750858301515b600019600386901b1c1916600185901b1785556200074d565b600085815260208120601f198616915b82811015620007f357888601518255948401946001909101908401620007d2565b5085821015620008125787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6832ba3432b932bab69d60b91b8152600083516200084881600985016020880162000569565b600160fe1b60099184019182015283516200086b81600a84016020880162000569565b712f746f6b656e5552493f75696e743235363d60701b600a9290910191820152601c01949350505050565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615620008c957620008c962000896565b500290565b60008219821115620008e457620008e462000896565b500190565b634e487b7160e01b600052603260045260246000fd5b60008162000911576200091162000896565b506000190190565b6000600182016200092e576200092e62000896565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826200095d576200095d62000935565b500490565b60008282101562000977576200097762000896565b500390565b6000826200098e576200098e62000935565b500690565b60805160a05160c0516127d9620009e6600039600081816103e20152818161047a01528181610b210152610c430152600081816101e001526103bc015260008181610329015261040801526127d96000f3fe608060405234801561001057600080fd5b50600436106101ae5760003560e01c80637d1d0c5b116100ee578063c87b56dd11610097578063e78cea9211610071578063e78cea92146103e0578063e951819614610406578063e985e9c51461042c578063ee9a31a21461047557600080fd5b8063c87b56dd1461039f578063d547cfb7146103b2578063d6c0b2c4146103ba57600080fd5b8063a1448194116100c8578063a144819414610366578063a22cb46514610379578063b88d4fde1461038c57600080fd5b80637d1d0c5b1461032457806395d89b411461034b5780639dc29fac1461035357600080fd5b806323b872dd1161015b5780634f6ccce7116101355780634f6ccce7146102af57806354fd4d50146102c25780636352211e146102fe57806370a082311461031157600080fd5b806323b872dd146102765780632f745c591461028957806342842e0e1461029c57600080fd5b8063081812fc1161018c578063081812fc1461023c578063095ea7b31461024f57806318160ddd1461026457600080fd5b806301ffc9a7146101b3578063033964be146101db57806306fdde0314610227575b600080fd5b6101c66101c1366004612226565b61049c565b60405190151581526020015b60405180910390f35b6102027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d2565b61022f6104fa565b6040516101d291906122b9565b61020261024a3660046122cc565b61058c565b61026261025d36600461230e565b6105c0565b005b6008545b6040519081526020016101d2565b610262610284366004612338565b610751565b61026861029736600461230e565b6107f2565b6102626102aa366004612338565b6108c1565b6102686102bd3660046122cc565b6108dc565b61022f6040518060400160405280600581526020017f312e332e3200000000000000000000000000000000000000000000000000000081525081565b61020261030c3660046122cc565b61099a565b61026861031f366004612374565b610a2c565b6102687f000000000000000000000000000000000000000000000000000000000000000081565b61022f610afa565b61026261036136600461230e565b610b09565b61026261037436600461230e565b610c2b565b61026261038736600461238f565b610d42565b61026261039a3660046123fa565b610d51565b61022f6103ad3660046122cc565b610df9565b61022f610e5f565b7f0000000000000000000000000000000000000000000000000000000000000000610202565b7f0000000000000000000000000000000000000000000000000000000000000000610202565b7f0000000000000000000000000000000000000000000000000000000000000000610268565b6101c661043a3660046124f4565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b6102027f000000000000000000000000000000000000000000000000000000000000000081565b60007faecafc23000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083168114806104f357506104f38361126d565b9392505050565b60606000805461050990612527565b80601f016020809104026020016040519081016040528092919081815260200182805461053590612527565b80156105825780601f1061055757610100808354040283529160200191610582565b820191906000526020600020905b81548152906001019060200180831161056557829003601f168201915b5050505050905090565b6000610597826112c3565b5060009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006105cb8261099a565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361068d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff821614806106b657506106b6813361043a565b610742576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c00006064820152608401610684565b61074c8383611351565b505050565b61075b33826113f1565b6107e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206e6f7220617070726f7665640000000000000000000000000000000000006064820152608401610684565b61074c8383836114b0565b60006107fd83610a2c565b821061088b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201527f74206f6620626f756e64730000000000000000000000000000000000000000006064820152608401610684565b5073ffffffffffffffffffffffffffffffffffffffff919091166000908152600660209081526040808320938352929052205490565b61074c83838360405180602001604052806000815250610d51565b60006108e760085490565b8210610975576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201527f7574206f6620626f756e647300000000000000000000000000000000000000006064820152608401610684565b600882815481106109885761098861257a565b90600052602060002001549050919050565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610a26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610684565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff8216610ad1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e657200000000000000000000000000000000000000000000006064820152608401610684565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b60606001805461050990612527565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610bce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4f7074696d69736d4d696e7461626c654552433732313a206f6e6c792062726960448201527f6467652063616e2063616c6c20746869732066756e6374696f6e0000000000006064820152608401610684565b610bd781611722565b8173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca582604051610c1f91815260200190565b60405180910390a25050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610cf0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4f7074696d69736d4d696e7461626c654552433732313a206f6e6c792062726960448201527f6467652063616e2063616c6c20746869732066756e6374696f6e0000000000006064820152608401610684565b610cfa82826117fb565b8173ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688582604051610c1f91815260200190565b610d4d338383611815565b5050565b610d5b33836113f1565b610de7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206e6f7220617070726f7665640000000000000000000000000000000000006064820152608401610684565b610df384848484611942565b50505050565b6060610e04826112c3565b6000610e0e6119e5565b90506000815111610e2e57604051806020016040528060008152506104f3565b80610e3884611130565b604051602001610e499291906125a9565b6040516020818303038152906040529392505050565b600a8054610e6c90612527565b80601f0160208091040260200160405190810160405280929190818152602001828054610e9890612527565b8015610ee55780601f10610eba57610100808354040283529160200191610ee5565b820191906000526020600020905b815481529060010190602001808311610ec857829003601f168201915b505050505081565b60606000610efc836002612607565b610f07906002612644565b67ffffffffffffffff811115610f1f57610f1f6123cb565b6040519080825280601f01601f191660200182016040528015610f49576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110610f8057610f8061257a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110610fe357610fe361257a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600061101f846002612607565b61102a906001612644565b90505b60018111156110c7577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061106b5761106b61257a565b1a60f81b8282815181106110815761108161257a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c936110c08161265c565b905061102d565b5083156104f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610684565b60608160000361117357505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561119d578061118781612691565b91506111969050600a836126f8565b9150611177565b60008167ffffffffffffffff8111156111b8576111b86123cb565b6040519080825280601f01601f1916602001820160405280156111e2576020820181803683370190505b5090505b8415611265576111f760018361270c565b9150611204600a86612723565b61120f906030612644565b60f81b8183815181106112245761122461257a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061125e600a866126f8565b94506111e6565b949350505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780e9d63000000000000000000000000000000000000000000000000000000001480610a265750610a26826119f4565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1661134e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610684565b50565b600081815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841690811790915581906113ab8261099a565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806113fd8361099a565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061146b575073ffffffffffffffffffffffffffffffffffffffff80821660009081526005602090815260408083209388168352929052205460ff165b8061126557508373ffffffffffffffffffffffffffffffffffffffff166114918461058c565b73ffffffffffffffffffffffffffffffffffffffff1614949350505050565b8273ffffffffffffffffffffffffffffffffffffffff166114d08261099a565b73ffffffffffffffffffffffffffffffffffffffff1614611573576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610684565b73ffffffffffffffffffffffffffffffffffffffff8216611615576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610684565b611620838383611ad7565b61162b600082611351565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080546001929061166190849061270c565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040812080546001929061169c908490612644565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600061172d8261099a565b905061173b81600084611ad7565b611746600083611351565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260036020526040812080546001929061177c90849061270c565b909155505060008281526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555183919073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b610d4d828260405180602001604052806000815250611bdd565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610684565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61194d8484846114b0565b61195984848484611c80565b610df3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610684565b6060600a805461050990612527565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd000000000000000000000000000000000000000000000000000000001480611a8757507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b80610a2657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610a26565b73ffffffffffffffffffffffffffffffffffffffff8316611b3f57611b3a81600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b611b7c565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611b7c57611b7c8382611e73565b73ffffffffffffffffffffffffffffffffffffffff8216611ba05761074c81611f2a565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461074c5761074c8282611fd9565b611be7838361202a565b611bf46000848484611c80565b61074c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610684565b600073ffffffffffffffffffffffffffffffffffffffff84163b15611e68576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290611cf7903390899088908890600401612737565b6020604051808303816000875af1925050508015611d50575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611d4d91810190612780565b60015b611e1d573d808015611d7e576040519150601f19603f3d011682016040523d82523d6000602084013e611d83565b606091505b508051600003611e15576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610684565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050611265565b506001949350505050565b60006001611e8084610a2c565b611e8a919061270c565b600083815260076020526040902054909150808214611eea5773ffffffffffffffffffffffffffffffffffffffff841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b50600091825260076020908152604080842084905573ffffffffffffffffffffffffffffffffffffffff9094168352600681528383209183525290812055565b600854600090611f3c9060019061270c565b60008381526009602052604081205460088054939450909284908110611f6457611f6461257a565b906000526020600020015490508060088381548110611f8557611f8561257a565b6000918252602080832090910192909255828152600990915260408082208490558582528120556008805480611fbd57611fbd61279d565b6001900381819060005260206000200160009055905550505050565b6000611fe483610a2c565b73ffffffffffffffffffffffffffffffffffffffff9093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b73ffffffffffffffffffffffffffffffffffffffff82166120a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610684565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1615612133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610684565b61213f60008383611ad7565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805460019290612175908490612644565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461134e57600080fd5b60006020828403121561223857600080fd5b81356104f3816121f8565b60005b8381101561225e578181015183820152602001612246565b83811115610df35750506000910152565b60008151808452612287816020860160208601612243565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006104f3602083018461226f565b6000602082840312156122de57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461230957600080fd5b919050565b6000806040838503121561232157600080fd5b61232a836122e5565b946020939093013593505050565b60008060006060848603121561234d57600080fd5b612356846122e5565b9250612364602085016122e5565b9150604084013590509250925092565b60006020828403121561238657600080fd5b6104f3826122e5565b600080604083850312156123a257600080fd5b6123ab836122e5565b9150602083013580151581146123c057600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806000806080858703121561241057600080fd5b612419856122e5565b9350612427602086016122e5565b925060408501359150606085013567ffffffffffffffff8082111561244b57600080fd5b818701915087601f83011261245f57600080fd5b813581811115612471576124716123cb565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156124b7576124b76123cb565b816040528281528a60208487010111156124d057600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561250757600080fd5b612510836122e5565b915061251e602084016122e5565b90509250929050565b600181811c9082168061253b57607f821691505b602082108103612574577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600083516125bb818460208801612243565b8351908301906125cf818360208801612243565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561263f5761263f6125d8565b500290565b60008219821115612657576126576125d8565b500190565b60008161266b5761266b6125d8565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036126c2576126c26125d8565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082612707576127076126c9565b500490565b60008282101561271e5761271e6125d8565b500390565b600082612732576127326126c9565b500690565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152612776608083018461226f565b9695505050505050565b60006020828403121561279257600080fd5b81516104f3816121f8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea164736f6c634300080f000aa164736f6c634300080f000a00000000000000000000000000000000000000", + "from": "0xDeaDDEaDDeAdDeAdDEAdDEaddeAddEAdDEAd0001", + "gasLimit": 4900000, + "intent": "Deploy OptimismMintableERC721Factory Implementation", + "to": "0x420000000000000000000000000000000000002C" + }, + { + "data": "0xcdcb760a9b217f1b15f9c04316d04d42f550c340c5b2ee8e5ae05cab4f8cd9cb21970ca400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000001c9d608060405234801561001057600080fd5b50600061001c3361002b565b6100258161002b565b5061007b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b611c138061008a6000396000f3fe6080604052600436106101445760003560e01c80637eff275e116100c057806399a88ec411610074578063b794726211610059578063b7947262146103c8578063f2fde38b14610403578063f3b7dead1461042357600080fd5b806399a88ec4146103885780639b2ea4bd146103a857600080fd5b80638d52d4a0116100a55780638d52d4a01461032a5780638da5cb5b1461034a5780639623609d1461037557600080fd5b80637eff275e146102ea578063860f7cda1461030a57600080fd5b80633ab76e9f116101175780636bd9f516116100fc5780636bd9f51614610278578063715018a6146102b55780637c36f37e146102ca57600080fd5b80633ab76e9f1461020257806354fd4d501461022f57600080fd5b80630652b57a1461014957806307c8f7b01461016b578063204e1c7a1461018b578063238181ae146101d5575b600080fd5b34801561015557600080fd5b50610169610164366004611490565b610443565b005b34801561017757600080fd5b506101696101863660046114ad565b610492565b34801561019757600080fd5b506101ab6101a6366004611490565b6104e4565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101e157600080fd5b506101f56101f0366004611490565b61070a565b6040516101cc9190611545565b34801561020e57600080fd5b506003546101ab9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561023b57600080fd5b506101f56040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b34801561028457600080fd5b506102a8610293366004611490565b60016020526000908152604090205460ff1681565b6040516101cc9190611587565b3480156102c157600080fd5b506101696107a4565b3480156102d657600080fd5b506101696102e5366004611490565b6107b8565b3480156102f657600080fd5b506101696103053660046115c8565b6109b0565b34801561031657600080fd5b50610169610325366004611723565b610b63565b34801561033657600080fd5b50610169610345366004611773565b610b9a565b34801561035657600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166101ab565b6101696103833660046117a5565b610c0e565b34801561039457600080fd5b506101696103a33660046115c8565b610e25565b3480156103b457600080fd5b506101696103c336600461181b565b6110b5565b3480156103d457600080fd5b5060035474010000000000000000000000000000000000000000900460ff1660405190151581526020016101cc565b34801561040f57600080fd5b5061016961041e366004611490565b61114b565b34801561042f57600080fd5b506101ab61043e366004611490565b611202565b61044b611378565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61049a611378565b6003805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604081205460ff168181600281111561052057610520611558565b0361059b578273ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610570573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105949190611862565b9392505050565b60018160028111156105af576105af611558565b036105ff578273ffffffffffffffffffffffffffffffffffffffff1663aaf10f426040518163ffffffff1660e01b8152600401602060405180830381865afa158015610570573d6000803e3d6000fd5b600281600281111561061357610613611558565b0361069d5760035473ffffffffffffffffffffffffffffffffffffffff8481166000908152600260205260409081902090517fbf40fac1000000000000000000000000000000000000000000000000000000008152919092169163bf40fac19161068091906004016118cc565b602060405180830381865afa158015610570573d6000803e3d6000fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f50726f787941646d696e3a20756e6b6e6f776e2070726f78792074797065000060448201526064015b60405180910390fd5b50919050565b600260205260009081526040902080546107239061187f565b80601f016020809104026020016040519081016040528092919081815260200182805461074f9061187f565b801561079c5780601f106107715761010080835404028352916020019161079c565b820191906000526020600020905b81548152906001019060200180831161077f57829003601f168201915b505050505081565b6107ac611378565b6107b660006113f9565b565b3373deaddeaddeaddeaddeaddeaddeaddeaddead000114610805576040517fcde661e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163b60000361086e576040517fe1e56d9d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024016106fb565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd55ec697000000000000000000000000000000000000000000000000000000001790529051600091829173ffffffffffffffffffffffffffffffffffffffff8516916108ec91611975565b600060405180830381855af49150503d8060008114610927576040519150601f19603f3d011682016040523d82523d6000602084013e61092c565b606091505b50915091508161096a57806040517f1c0a89cc0000000000000000000000000000000000000000000000000000000081526004016106fb9190611545565b60405173ffffffffffffffffffffffffffffffffffffffff8416907f14e22d69ea30aab5b2220164345b33bdb5125e9c77a7d5fe12e23a1c691bd13990600090a2505050565b6109b8611378565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604081205460ff16908160028111156109f4576109f4611558565b03610a80576040517f8f28397000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152841690638f283970906024015b600060405180830381600087803b158015610a6357600080fd5b505af1158015610a77573d6000803e3d6000fd5b50505050505050565b6001816002811115610a9457610a94611558565b03610aed576040517f13af403500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301528416906313af403590602401610a49565b6002816002811115610b0157610b01611558565b0361069d576003546040517ff2fde38b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301529091169063f2fde38b90602401610a49565b505050565b610b6b611378565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600260205260409020610b5e82826119d7565b610ba2611378565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600160208190526040909120805483927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090911690836002811115610c0557610c05611558565b02179055505050565b610c16611378565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081205460ff1690816002811115610c5257610c52611558565b03610d18576040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851690634f1ef286903490610cad9087908790600401611af1565b60006040518083038185885af1158015610ccb573d6000803e3d6000fd5b50505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610d129190810190611b28565b50610e1f565b610d228484610e25565b60008473ffffffffffffffffffffffffffffffffffffffff163484604051610d4a9190611975565b60006040518083038185875af1925050503d8060008114610d87576040519150601f19603f3d011682016040523d82523d6000602084013e610d8c565b606091505b5050905080610e1d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f50726f787941646d696e3a2063616c6c20746f2070726f78792061667465722060448201527f75706772616465206661696c656400000000000000000000000000000000000060648201526084016106fb565b505b50505050565b610e2d611378565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604081205460ff1690816002811115610e6957610e69611558565b03610ec2576040517f3659cfe600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152841690633659cfe690602401610a49565b6001816002811115610ed657610ed6611558565b03610f55576040517f9b0b0fda0000000000000000000000000000000000000000000000000000000081527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc600482015273ffffffffffffffffffffffffffffffffffffffff8381166024830152841690639b0b0fda90604401610a49565b6002816002811115610f6957610f69611558565b036110ad5773ffffffffffffffffffffffffffffffffffffffff831660009081526002602052604081208054610f9e9061187f565b80601f0160208091040260200160405190810160405280929190818152602001828054610fca9061187f565b80156110175780601f10610fec57610100808354040283529160200191611017565b820191906000526020600020905b815481529060010190602001808311610ffa57829003601f168201915b50506003546040517f9b2ea4bd00000000000000000000000000000000000000000000000000000000815294955073ffffffffffffffffffffffffffffffffffffffff1693639b2ea4bd935061107592508591508790600401611b9f565b600060405180830381600087803b15801561108f57600080fd5b505af11580156110a3573d6000803e3d6000fd5b5050505050505050565b610b5e611bd7565b6110bd611378565b6003546040517f9b2ea4bd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690639b2ea4bd906111159085908590600401611b9f565b600060405180830381600087803b15801561112f57600080fd5b505af1158015611143573d6000803e3d6000fd5b505050505050565b611153611378565b73ffffffffffffffffffffffffffffffffffffffff81166111f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016106fb565b6111ff816113f9565b50565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604081205460ff168181600281111561123e5761123e611558565b0361128e578273ffffffffffffffffffffffffffffffffffffffff1663f851a4406040518163ffffffff1660e01b8152600401602060405180830381865afa158015610570573d6000803e3d6000fd5b60018160028111156112a2576112a2611558565b036112f2578273ffffffffffffffffffffffffffffffffffffffff1663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610570573d6000803e3d6000fd5b600281600281111561130657611306611558565b0361069d57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610570573d6000803e3d6000fd5b60005473ffffffffffffffffffffffffffffffffffffffff1633146107b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106fb565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff811681146111ff57600080fd5b6000602082840312156114a257600080fd5b81356105948161146e565b6000602082840312156114bf57600080fd5b8135801515811461059457600080fd5b60005b838110156114ea5781810151838201526020016114d2565b83811115610e1f5750506000910152565b600081518084526115138160208601602086016114cf565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061059460208301846114fb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60208101600383106115c2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b600080604083850312156115db57600080fd5b82356115e68161146e565b915060208301356115f68161146e565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561167757611677611601565b604052919050565b600067ffffffffffffffff82111561169957611699611601565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60006116d86116d38461167f565b611630565b90508281528383830111156116ec57600080fd5b828260208301376000602084830101529392505050565b600082601f83011261171457600080fd5b610594838335602085016116c5565b6000806040838503121561173657600080fd5b82356117418161146e565b9150602083013567ffffffffffffffff81111561175d57600080fd5b61176985828601611703565b9150509250929050565b6000806040838503121561178657600080fd5b82356117918161146e565b91506020830135600381106115f657600080fd5b6000806000606084860312156117ba57600080fd5b83356117c58161146e565b925060208401356117d58161146e565b9150604084013567ffffffffffffffff8111156117f157600080fd5b8401601f8101861361180257600080fd5b611811868235602084016116c5565b9150509250925092565b6000806040838503121561182e57600080fd5b823567ffffffffffffffff81111561184557600080fd5b61185185828601611703565b92505060208301356115f68161146e565b60006020828403121561187457600080fd5b81516105948161146e565b600181811c9082168061189357607f821691505b602082108103610704577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006020808352600084546118e08161187f565b80848701526040600180841660008114611901576001811461193957611967565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008516838a01528284151560051b8a01019550611967565b896000528660002060005b8581101561195f5781548b8201860152908301908801611944565b8a0184019650505b509398975050505050505050565b600082516119878184602087016114cf565b9190910192915050565b601f821115610b5e57600081815260208120601f850160051c810160208610156119b85750805b601f850160051c820191505b81811015611143578281556001016119c4565b815167ffffffffffffffff8111156119f1576119f1611601565b611a05816119ff845461187f565b84611991565b602080601f831160018114611a585760008415611a225750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555611143565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015611aa557888601518255948401946001909101908401611a86565b5085821015611ae157878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000611b2060408301846114fb565b949350505050565b600060208284031215611b3a57600080fd5b815167ffffffffffffffff811115611b5157600080fd5b8201601f81018413611b6257600080fd5b8051611b706116d38261167f565b818152856020838501011115611b8557600080fd5b611b968260208301602086016114cf565b95945050505050565b604081526000611bb260408301856114fb565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fdfea164736f6c634300080f000a000000", + "from": "0xDeaDDEaDDeAdDeAdDEAdDEaddeAddEAdDEAd0001", + "gasLimit": 2400000, + "intent": "Deploy L2ProxyAdmin Implementation", + "to": "0x420000000000000000000000000000000000002C" + }, + { + "data": "0xcdcb760a9b217f1b15f9c04316d04d42f550c340c5b2ee8e5ae05cab4f8cd9cb21970ca40000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000108a6080604052348015600e575f80fd5b5060156019565b60c9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560685760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c65780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b610fb4806100d65f395ff3fe6080604052600436106100e7575f3560e01c806382356d8a11610087578063b49dc74111610057578063b49dc741146102bf578063d0e12f90146102de578063d3e5792b1461030d578063dad544e014610321575f80fd5b806382356d8a146102395780638312f1491461027757806384411d651461028c57806385b5b14d146102a0575f80fd5b80633ccfd60b116100c25780633ccfd60b146101825780633e47158c146101a457806354fd4d50146101b857806366d003ac1461020d575f80fd5b80630d9019e1146100f2578063307f2962146101425780633bbed4a014610163575f80fd5b366100ee57005b5f80fd5b3480156100fd575f80fd5b5060025473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561014d575f80fd5b5061016161015c366004610d62565b610335565b005b34801561016e575f80fd5b5061016161017d366004610d9f565b6103db565b34801561018d575f80fd5b50610196610462565b604051908152602001610139565b3480156101af575f80fd5b50610118610770565b3480156101c3575f80fd5b506102006040518060400160405280600581526020017f312e362e3100000000000000000000000000000000000000000000000000000081525081565b6040516101399190610dba565b348015610218575f80fd5b506002546101189073ffffffffffffffffffffffffffffffffffffffff1681565b348015610244575f80fd5b5060025461026a9074010000000000000000000000000000000000000000900460ff1681565b6040516101399190610e73565b348015610282575f80fd5b5061019660015481565b348015610297575f80fd5b506101965f5481565b3480156102ab575f80fd5b506101616102ba366004610e87565b610976565b3480156102ca575f80fd5b506101616102d9366004610e9e565b6109bc565b3480156102e9575f80fd5b5060025474010000000000000000000000000000000000000000900460ff1661026a565b348015610318575f80fd5b50600154610196565b34801561032c575f80fd5b50610118610bd8565b61033d610c52565b600280547401000000000000000000000000000000000000000080820460ff1692849290917fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff9091169083600181111561039957610399610e0d565b02179055507ff2ec44eb1c3b3acd547b76333eb2c4b27eee311860c57a9fdb04c95f62398fc881836040516103cf929190610ed9565b60405180910390a15050565b6103e3610c52565b6002805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527f62e69886a5df0ba8ffcacbfc1388754e7abd9bde24b036354c561f1acd4e459391016103cf565b5f600154471015610520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f4665655661756c743a207769746864726177616c20616d6f756e74206d75737460448201527f2062652067726561746572207468616e206d696e696d756d207769746864726160648201527f77616c20616d6f756e7400000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b479050805f808282546105339190610f21565b90915550506002546040805183815273ffffffffffffffffffffffffffffffffffffffff909216602083018190523383830152905190917fc8a211cc64b6ed1b50595a9fcb1932b6d1e5a6e8ef15b60e5b1f988ea9086bba919081900360600190a16002546040517f38e04cbeb8c10f8f568618aa75be0f10b6729b8b4237743b4de20cbcde2839ee916105e89185918591339174010000000000000000000000000000000000000000900460ff1690610f34565b60405180910390a1600160025474010000000000000000000000000000000000000000900460ff16600181111561062157610621610e0d565b036106c5575f6106318284610caa565b9050806106c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4665655661756c743a206661696c656420746f2073656e642045544820746f2060448201527f4c322066656520726563697069656e74000000000000000000000000000000006064820152608401610517565b505090565b6040517fc2b3e5ac00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015262061a806024820152606060448201525f60648201527342000000000000000000000000000000000000169063c2b3e5ac9084906084015f604051808303818588803b158015610755575f80fd5b505af1158015610767573d5f803e3d5ffd5b50505050505090565b5f8061079a7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b905073ffffffffffffffffffffffffffffffffffffffff8116156107bd57919050565b6040518060400160405280601a81526020017f4f564d5f4c3143726f7373446f6d61696e4d657373656e6765720000000000008152505160026108009190610f75565b604080513060208201525f918101919091527f4f564d5f4c3143726f7373446f6d61696e4d657373656e676572000000000000919091179061085a906060015b604051602081830303815290604052805190602001205490565b14610891576040517f54e433cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080513060208201526001918101919091525f906108b290606001610840565b905073ffffffffffffffffffffffffffffffffffffffff811615610944578073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610919573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061093d9190610f8c565b9250505090565b6040517f332144db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61097e610c52565b600180549082905560408051828152602081018490527f895a067c78583e800418fabf3da26a9496aab2ff3429cebdf7fefa642b2e420391016103cf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff165f81158015610a065750825b90505f8267ffffffffffffffff166001148015610a225750303b155b905081158015610a30575080155b15610a67576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610ac85784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610ad0610cbd565b6002805473ffffffffffffffffffffffffffffffffffffffff8a167fffffffffffffffffffffffff000000000000000000000000000000000000000082168117835560018a81558993927fffffffffffffffffffffff000000000000000000000000000000000000000000169091179074010000000000000000000000000000000000000000908490811115610b6857610b68610e0d565b02179055508315610bce5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b5f610be1610770565b73ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c29573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c4d9190610f8c565b905090565b33610c5b610bd8565b73ffffffffffffffffffffffffffffffffffffffff1614610ca8576040517f7f12c64b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f610cb6835a84610d3e565b9392505050565b33610cc6610770565b73ffffffffffffffffffffffffffffffffffffffff1614158015610d07575033610cee610bd8565b73ffffffffffffffffffffffffffffffffffffffff1614155b15610ca8576040517fc4050a2600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f805f805f858888f1949350505050565b803560028110610d5d575f80fd5b919050565b5f60208284031215610d72575f80fd5b610cb682610d4f565b73ffffffffffffffffffffffffffffffffffffffff81168114610d9c575f80fd5b50565b5f60208284031215610daf575f80fd5b8135610cb681610d7b565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60028110610e6f577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b9052565b60208101610e818284610e3a565b92915050565b5f60208284031215610e97575f80fd5b5035919050565b5f805f60608486031215610eb0575f80fd5b8335610ebb81610d7b565b925060208401359150610ed060408501610d4f565b90509250925092565b60408101610ee78285610e3a565b610cb66020830184610e3a565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115610e8157610e81610ef4565b84815273ffffffffffffffffffffffffffffffffffffffff84811660208301528316604082015260808101610f6c6060830184610e3a565b95945050505050565b8082028115828204841417610e8157610e81610ef4565b5f60208284031215610f9c575f80fd5b8151610cb681610d7b56fea164736f6c6343000819000a00000000000000000000000000000000000000000000", + "from": "0xDeaDDEaDDeAdDeAdDEAdDEaddeAddEAdDEAd0001", + "gasLimit": 1300000, + "intent": "Deploy BaseFeeVault Implementation", + "to": "0x420000000000000000000000000000000000002C" + }, + { + "data": "0xcdcb760a9b217f1b15f9c04316d04d42f550c340c5b2ee8e5ae05cab4f8cd9cb21970ca40000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000108a6080604052348015600e575f80fd5b5060156019565b60c9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560685760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c65780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b610fb4806100d65f395ff3fe6080604052600436106100e7575f3560e01c806382356d8a11610087578063b49dc74111610057578063b49dc741146102bf578063d0e12f90146102de578063d3e5792b1461030d578063dad544e014610321575f80fd5b806382356d8a146102395780638312f1491461027757806384411d651461028c57806385b5b14d146102a0575f80fd5b80633ccfd60b116100c25780633ccfd60b146101825780633e47158c146101a457806354fd4d50146101b857806366d003ac1461020d575f80fd5b80630d9019e1146100f2578063307f2962146101425780633bbed4a014610163575f80fd5b366100ee57005b5f80fd5b3480156100fd575f80fd5b5060025473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561014d575f80fd5b5061016161015c366004610d62565b610335565b005b34801561016e575f80fd5b5061016161017d366004610d9f565b6103db565b34801561018d575f80fd5b50610196610462565b604051908152602001610139565b3480156101af575f80fd5b50610118610770565b3480156101c3575f80fd5b506102006040518060400160405280600581526020017f312e362e3100000000000000000000000000000000000000000000000000000081525081565b6040516101399190610dba565b348015610218575f80fd5b506002546101189073ffffffffffffffffffffffffffffffffffffffff1681565b348015610244575f80fd5b5060025461026a9074010000000000000000000000000000000000000000900460ff1681565b6040516101399190610e73565b348015610282575f80fd5b5061019660015481565b348015610297575f80fd5b506101965f5481565b3480156102ab575f80fd5b506101616102ba366004610e87565b610976565b3480156102ca575f80fd5b506101616102d9366004610e9e565b6109bc565b3480156102e9575f80fd5b5060025474010000000000000000000000000000000000000000900460ff1661026a565b348015610318575f80fd5b50600154610196565b34801561032c575f80fd5b50610118610bd8565b61033d610c52565b600280547401000000000000000000000000000000000000000080820460ff1692849290917fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff9091169083600181111561039957610399610e0d565b02179055507ff2ec44eb1c3b3acd547b76333eb2c4b27eee311860c57a9fdb04c95f62398fc881836040516103cf929190610ed9565b60405180910390a15050565b6103e3610c52565b6002805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527f62e69886a5df0ba8ffcacbfc1388754e7abd9bde24b036354c561f1acd4e459391016103cf565b5f600154471015610520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f4665655661756c743a207769746864726177616c20616d6f756e74206d75737460448201527f2062652067726561746572207468616e206d696e696d756d207769746864726160648201527f77616c20616d6f756e7400000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b479050805f808282546105339190610f21565b90915550506002546040805183815273ffffffffffffffffffffffffffffffffffffffff909216602083018190523383830152905190917fc8a211cc64b6ed1b50595a9fcb1932b6d1e5a6e8ef15b60e5b1f988ea9086bba919081900360600190a16002546040517f38e04cbeb8c10f8f568618aa75be0f10b6729b8b4237743b4de20cbcde2839ee916105e89185918591339174010000000000000000000000000000000000000000900460ff1690610f34565b60405180910390a1600160025474010000000000000000000000000000000000000000900460ff16600181111561062157610621610e0d565b036106c5575f6106318284610caa565b9050806106c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4665655661756c743a206661696c656420746f2073656e642045544820746f2060448201527f4c322066656520726563697069656e74000000000000000000000000000000006064820152608401610517565b505090565b6040517fc2b3e5ac00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015262061a806024820152606060448201525f60648201527342000000000000000000000000000000000000169063c2b3e5ac9084906084015f604051808303818588803b158015610755575f80fd5b505af1158015610767573d5f803e3d5ffd5b50505050505090565b5f8061079a7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b905073ffffffffffffffffffffffffffffffffffffffff8116156107bd57919050565b6040518060400160405280601a81526020017f4f564d5f4c3143726f7373446f6d61696e4d657373656e6765720000000000008152505160026108009190610f75565b604080513060208201525f918101919091527f4f564d5f4c3143726f7373446f6d61696e4d657373656e676572000000000000919091179061085a906060015b604051602081830303815290604052805190602001205490565b14610891576040517f54e433cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080513060208201526001918101919091525f906108b290606001610840565b905073ffffffffffffffffffffffffffffffffffffffff811615610944578073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610919573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061093d9190610f8c565b9250505090565b6040517f332144db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61097e610c52565b600180549082905560408051828152602081018490527f895a067c78583e800418fabf3da26a9496aab2ff3429cebdf7fefa642b2e420391016103cf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff165f81158015610a065750825b90505f8267ffffffffffffffff166001148015610a225750303b155b905081158015610a30575080155b15610a67576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610ac85784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610ad0610cbd565b6002805473ffffffffffffffffffffffffffffffffffffffff8a167fffffffffffffffffffffffff000000000000000000000000000000000000000082168117835560018a81558993927fffffffffffffffffffffff000000000000000000000000000000000000000000169091179074010000000000000000000000000000000000000000908490811115610b6857610b68610e0d565b02179055508315610bce5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b5f610be1610770565b73ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c29573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c4d9190610f8c565b905090565b33610c5b610bd8565b73ffffffffffffffffffffffffffffffffffffffff1614610ca8576040517f7f12c64b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f610cb6835a84610d3e565b9392505050565b33610cc6610770565b73ffffffffffffffffffffffffffffffffffffffff1614158015610d07575033610cee610bd8565b73ffffffffffffffffffffffffffffffffffffffff1614155b15610ca8576040517fc4050a2600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f805f805f858888f1949350505050565b803560028110610d5d575f80fd5b919050565b5f60208284031215610d72575f80fd5b610cb682610d4f565b73ffffffffffffffffffffffffffffffffffffffff81168114610d9c575f80fd5b50565b5f60208284031215610daf575f80fd5b8135610cb681610d7b565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60028110610e6f577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b9052565b60208101610e818284610e3a565b92915050565b5f60208284031215610e97575f80fd5b5035919050565b5f805f60608486031215610eb0575f80fd5b8335610ebb81610d7b565b925060208401359150610ed060408501610d4f565b90509250925092565b60408101610ee78285610e3a565b610cb66020830184610e3a565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115610e8157610e81610ef4565b84815273ffffffffffffffffffffffffffffffffffffffff84811660208301528316604082015260808101610f6c6060830184610e3a565b95945050505050565b8082028115828204841417610e8157610e81610ef4565b5f60208284031215610f9c575f80fd5b8151610cb681610d7b56fea164736f6c6343000819000a00000000000000000000000000000000000000000000", + "from": "0xDeaDDEaDDeAdDeAdDEAdDEaddeAddEAdDEAd0001", + "gasLimit": 50000, + "intent": "Deploy L1FeeVault Implementation", + "to": "0x420000000000000000000000000000000000002C" + }, + { + "data": "0xcdcb760a9b217f1b15f9c04316d04d42f550c340c5b2ee8e5ae05cab4f8cd9cb21970ca40000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000108a6080604052348015600e575f80fd5b5060156019565b60c9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560685760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c65780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b610fb4806100d65f395ff3fe6080604052600436106100e7575f3560e01c806382356d8a11610087578063b49dc74111610057578063b49dc741146102bf578063d0e12f90146102de578063d3e5792b1461030d578063dad544e014610321575f80fd5b806382356d8a146102395780638312f1491461027757806384411d651461028c57806385b5b14d146102a0575f80fd5b80633ccfd60b116100c25780633ccfd60b146101825780633e47158c146101a457806354fd4d50146101b857806366d003ac1461020d575f80fd5b80630d9019e1146100f2578063307f2962146101425780633bbed4a014610163575f80fd5b366100ee57005b5f80fd5b3480156100fd575f80fd5b5060025473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561014d575f80fd5b5061016161015c366004610d62565b610335565b005b34801561016e575f80fd5b5061016161017d366004610d9f565b6103db565b34801561018d575f80fd5b50610196610462565b604051908152602001610139565b3480156101af575f80fd5b50610118610770565b3480156101c3575f80fd5b506102006040518060400160405280600581526020017f312e312e3100000000000000000000000000000000000000000000000000000081525081565b6040516101399190610dba565b348015610218575f80fd5b506002546101189073ffffffffffffffffffffffffffffffffffffffff1681565b348015610244575f80fd5b5060025461026a9074010000000000000000000000000000000000000000900460ff1681565b6040516101399190610e73565b348015610282575f80fd5b5061019660015481565b348015610297575f80fd5b506101965f5481565b3480156102ab575f80fd5b506101616102ba366004610e87565b610976565b3480156102ca575f80fd5b506101616102d9366004610e9e565b6109bc565b3480156102e9575f80fd5b5060025474010000000000000000000000000000000000000000900460ff1661026a565b348015610318575f80fd5b50600154610196565b34801561032c575f80fd5b50610118610bd8565b61033d610c52565b600280547401000000000000000000000000000000000000000080820460ff1692849290917fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff9091169083600181111561039957610399610e0d565b02179055507ff2ec44eb1c3b3acd547b76333eb2c4b27eee311860c57a9fdb04c95f62398fc881836040516103cf929190610ed9565b60405180910390a15050565b6103e3610c52565b6002805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527f62e69886a5df0ba8ffcacbfc1388754e7abd9bde24b036354c561f1acd4e459391016103cf565b5f600154471015610520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f4665655661756c743a207769746864726177616c20616d6f756e74206d75737460448201527f2062652067726561746572207468616e206d696e696d756d207769746864726160648201527f77616c20616d6f756e7400000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b479050805f808282546105339190610f21565b90915550506002546040805183815273ffffffffffffffffffffffffffffffffffffffff909216602083018190523383830152905190917fc8a211cc64b6ed1b50595a9fcb1932b6d1e5a6e8ef15b60e5b1f988ea9086bba919081900360600190a16002546040517f38e04cbeb8c10f8f568618aa75be0f10b6729b8b4237743b4de20cbcde2839ee916105e89185918591339174010000000000000000000000000000000000000000900460ff1690610f34565b60405180910390a1600160025474010000000000000000000000000000000000000000900460ff16600181111561062157610621610e0d565b036106c5575f6106318284610caa565b9050806106c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4665655661756c743a206661696c656420746f2073656e642045544820746f2060448201527f4c322066656520726563697069656e74000000000000000000000000000000006064820152608401610517565b505090565b6040517fc2b3e5ac00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015262061a806024820152606060448201525f60648201527342000000000000000000000000000000000000169063c2b3e5ac9084906084015f604051808303818588803b158015610755575f80fd5b505af1158015610767573d5f803e3d5ffd5b50505050505090565b5f8061079a7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b905073ffffffffffffffffffffffffffffffffffffffff8116156107bd57919050565b6040518060400160405280601a81526020017f4f564d5f4c3143726f7373446f6d61696e4d657373656e6765720000000000008152505160026108009190610f75565b604080513060208201525f918101919091527f4f564d5f4c3143726f7373446f6d61696e4d657373656e676572000000000000919091179061085a906060015b604051602081830303815290604052805190602001205490565b14610891576040517f54e433cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080513060208201526001918101919091525f906108b290606001610840565b905073ffffffffffffffffffffffffffffffffffffffff811615610944578073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610919573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061093d9190610f8c565b9250505090565b6040517f332144db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61097e610c52565b600180549082905560408051828152602081018490527f895a067c78583e800418fabf3da26a9496aab2ff3429cebdf7fefa642b2e420391016103cf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff165f81158015610a065750825b90505f8267ffffffffffffffff166001148015610a225750303b155b905081158015610a30575080155b15610a67576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610ac85784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610ad0610cbd565b6002805473ffffffffffffffffffffffffffffffffffffffff8a167fffffffffffffffffffffffff000000000000000000000000000000000000000082168117835560018a81558993927fffffffffffffffffffffff000000000000000000000000000000000000000000169091179074010000000000000000000000000000000000000000908490811115610b6857610b68610e0d565b02179055508315610bce5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b5f610be1610770565b73ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c29573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c4d9190610f8c565b905090565b33610c5b610bd8565b73ffffffffffffffffffffffffffffffffffffffff1614610ca8576040517f7f12c64b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f610cb6835a84610d3e565b9392505050565b33610cc6610770565b73ffffffffffffffffffffffffffffffffffffffff1614158015610d07575033610cee610bd8565b73ffffffffffffffffffffffffffffffffffffffff1614155b15610ca8576040517fc4050a2600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f805f805f858888f1949350505050565b803560028110610d5d575f80fd5b919050565b5f60208284031215610d72575f80fd5b610cb682610d4f565b73ffffffffffffffffffffffffffffffffffffffff81168114610d9c575f80fd5b50565b5f60208284031215610daf575f80fd5b8135610cb681610d7b565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60028110610e6f577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b9052565b60208101610e818284610e3a565b92915050565b5f60208284031215610e97575f80fd5b5035919050565b5f805f60608486031215610eb0575f80fd5b8335610ebb81610d7b565b925060208401359150610ed060408501610d4f565b90509250925092565b60408101610ee78285610e3a565b610cb66020830184610e3a565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115610e8157610e81610ef4565b84815273ffffffffffffffffffffffffffffffffffffffff84811660208301528316604082015260808101610f6c6060830184610e3a565b95945050505050565b8082028115828204841417610e8157610e81610ef4565b5f60208284031215610f9c575f80fd5b8151610cb681610d7b56fea164736f6c6343000819000a00000000000000000000000000000000000000000000", + "from": "0xDeaDDEaDDeAdDeAdDEAdDEaddeAddEAdDEAd0001", + "gasLimit": 1300000, + "intent": "Deploy OperatorFeeVault Implementation", + "to": "0x420000000000000000000000000000000000002C" + }, + { + "data": "0xcdcb760a9b217f1b15f9c04316d04d42f550c340c5b2ee8e5ae05cab4f8cd9cb21970ca40000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000081e608060405234801561001057600080fd5b506107fe806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806354fd4d501461004657806360d7a27814610098578063a2ea7c6e146100b9575b600080fd5b6100826040518060400160405280600c81526020017f312e332e312d626574612e32000000000000000000000000000000000000000081525081565b60405161008f9190610473565b60405180910390f35b6100ab6100a636600461048d565b6100d9565b60405190815260200161008f565b6100cc6100c736600461053f565b61029d565b60405161008f9190610558565b60008060405180608001604052806000801b81526020018573ffffffffffffffffffffffffffffffffffffffff168152602001841515815260200187878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509390945250929350915061015b9050826103c5565b600081815260208190526040902054909150156101a4576040517f23369fa600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80825260008181526020818152604091829020845181559084015160018201805493860151151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00000000000000000000000000000000000000000090941673ffffffffffffffffffffffffffffffffffffffff9092169190911792909217909155606083015183919060028201906102409082610682565b509050503373ffffffffffffffffffffffffffffffffffffffff16817fd0b86852e21f9e5fa4bc3b0cff9757ffe243d50c4b43968a42202153d651ea5e8460405161028b9190610558565b60405180910390a39695505050505050565b604080516080810182526000808252602082018190529181019190915260608082015260008281526020818152604091829020825160808101845281548152600182015473ffffffffffffffffffffffffffffffffffffffff8116938201939093527401000000000000000000000000000000000000000090920460ff1615159282019290925260028201805491929160608401919061033c906105e0565b80601f0160208091040260200160405190810160405280929190818152602001828054610368906105e0565b80156103b55780601f1061038a576101008083540402835291602001916103b5565b820191906000526020600020905b81548152906001019060200180831161039857829003601f168201915b5050505050815250509050919050565b60008160600151826020015183604001516040516020016103e89392919061079c565b604051602081830303815290604052805190602001209050919050565b60005b83811015610420578181015183820152602001610408565b50506000910152565b60008151808452610441816020860160208601610405565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006104866020830184610429565b9392505050565b600080600080606085870312156104a357600080fd5b843567ffffffffffffffff808211156104bb57600080fd5b818701915087601f8301126104cf57600080fd5b8135818111156104de57600080fd5b8860208285010111156104f057600080fd5b6020928301965094505085013573ffffffffffffffffffffffffffffffffffffffff8116811461051f57600080fd5b91506040850135801515811461053457600080fd5b939692955090935050565b60006020828403121561055157600080fd5b5035919050565b602081528151602082015273ffffffffffffffffffffffffffffffffffffffff6020830151166040820152604082015115156060820152600060608301516080808401526105a960a0840182610429565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600181811c908216806105f457607f821691505b60208210810361062d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f82111561067d57600081815260208120601f850160051c8101602086101561065a5750805b601f850160051c820191505b8181101561067957828155600101610666565b5050505b505050565b815167ffffffffffffffff81111561069c5761069c6105b1565b6106b0816106aa84546105e0565b84610633565b602080601f83116001811461070357600084156106cd5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555610679565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561075057888601518255948401946001909101908401610731565b508582101561078c57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b600084516107ae818460208901610405565b60609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169190930190815290151560f81b60148201526015019291505056fea164736f6c6343000813000a0000", + "from": "0xDeaDDEaDDeAdDeAdDEAdDEaddeAddEAdDEAd0001", + "gasLimit": 700000, + "intent": "Deploy SchemaRegistry Implementation", + "to": "0x420000000000000000000000000000000000002C" + }, + { + "data": "0xcdcb760a9b217f1b15f9c04316d04d42f550c340c5b2ee8e5ae05cab4f8cd9cb21970ca4000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000046c961016060405234801561001157600080fd5b50604080518082018252600381526245415360e81b60208083019182528351808501855260058152640312e332e360dc1b908201529151812060e08190527f6a08c3e203132c561752255a4d52ffae85bb9c5d33cb3291520dea1b843563896101008190524660a081815286517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818801819052818901959095526060810193909352608080840192909252308382018190528751808503909201825260c093840190975280519501949094209093529290915261012091909152516101405260805160a05160c05160e05161010051610120516101405161457e61014b600039600061073701526000612784015260006127d3015260006127ae01526000612707015260006127310152600061275b015261457e6000f3fe60806040526004361061018b5760003560e01c806395411525116100d6578063d45c44351161007f578063ed24911d11610059578063ed24911d146104fd578063f10b5cc814610512578063f17325e71461054157600080fd5b8063d45c443514610467578063e30bb5631461049e578063e71ff365146104dd57600080fd5b8063b469318d116100b0578063b469318d146103ba578063b83010d314610414578063cf190f341461044757600080fd5b80639541152514610367578063a3112a641461037a578063a6d4dbc7146103a757600080fd5b806344adc90e116101385780634d003070116101125780634d003070146102de57806354fd4d50146102fe57806379f7573a1461034757600080fd5b806344adc90e1461029857806346926267146102b85780634cb7e9e5146102cb57600080fd5b806317d7de7c1161016957806317d7de7c146102205780632d0335ab146102425780633c0427151461028557600080fd5b80630eabf6601461019057806312b11a17146101a557806313893f61146101e7575b600080fd5b6101a361019e3660046134c8565b610554565b005b3480156101b157600080fd5b507ffeb2925a02bae3dae48d424a0437a2b6ac939aa9230ddc55a1a76f065d9880765b6040519081526020015b60405180910390f35b3480156101f357600080fd5b506102076102023660046134c8565b6106eb565b60405167ffffffffffffffff90911681526020016101de565b34801561022c57600080fd5b50610235610730565b6040516101de9190613578565b34801561024e57600080fd5b506101d461025d3660046135bd565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101d46102933660046135da565b610760565b6102ab6102a63660046134c8565b610863565b6040516101de9190613615565b6101a36102c6366004613659565b6109e4565b6101a36102d93660046134c8565b610a68565b3480156102ea57600080fd5b506102076102f9366004613671565b610b4b565b34801561030a57600080fd5b506102356040518060400160405280600c81526020017f312e342e312d626574612e33000000000000000000000000000000000000000081525081565b34801561035357600080fd5b506101a3610362366004613671565b610b58565b6102ab6103753660046134c8565b610bef565b34801561038657600080fd5b5061039a610395366004613671565b610e62565b6040516101de9190613771565b6101a36103b5366004613784565b611025565b3480156103c657600080fd5b506102076103d5366004613797565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152603460209081526040808320938352929052205467ffffffffffffffff1690565b34801561042057600080fd5b507fb5d556f07587ec0f08cf386545cc4362c702a001650c2058002615ee5c9d1e756101d4565b34801561045357600080fd5b50610207610462366004613671565b6110ca565b34801561047357600080fd5b50610207610482366004613671565b60009081526033602052604090205467ffffffffffffffff1690565b3480156104aa57600080fd5b506104cd6104b9366004613671565b600090815260326020526040902054151590565b60405190151581526020016101de565b3480156104e957600080fd5b506102076104f83660046134c8565b6110d8565b34801561050957600080fd5b506101d4611110565b34801561051e57600080fd5b5060405173420000000000000000000000000000000000002081526020016101de565b6101d461054f3660046137c3565b61111a565b348160005b818110156106e4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82018114600086868481811061059a5761059a6137fe565b90506020028101906105ac919061382d565b6105b590613ac3565b60208101518051919250908015806105d257508260400151518114155b15610609576040517f947d5a8400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b818110156106ad576106a56040518060a001604052808660000151815260200185848151811061063e5761063e6137fe565b6020026020010151815260200186604001518481518110610661576106616137fe565b60200260200101518152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152602001866080015167ffffffffffffffff168152506111d8565b60010161060c565b506106c383600001518385606001518a886113e9565b6106cd9088613bed565b9650505050506106dd8160010190565b9050610559565b5050505050565b60004282825b818110156107245761071c3387878481811061070f5761070f6137fe565b9050602002013585611a18565b6001016106f1565b50909150505b92915050565b606061075b7f0000000000000000000000000000000000000000000000000000000000000000611b17565b905090565b600061077361076e83613d22565b611ca5565b604080516001808252818301909252600091816020015b6040805160c081018252600080825260208083018290529282018190526060808301829052608083015260a082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161078a5790505090506107f86020840184613d9d565b61080190613dd1565b81600081518110610814576108146137fe565b602090810291909101015261083d83358261083560c0870160a088016135bd565b346001611e2f565b60200151600081518110610853576108536137fe565b6020026020010151915050919050565b60608160008167ffffffffffffffff8111156108815761088161386b565b6040519080825280602002602001820160405280156108b457816020015b606081526020019060019003908161089f5790505b509050600034815b848110156109ce577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85018114368989848181106108fc576108fc6137fe565b905060200281019061090e9190613ddd565b905061091d6020820182613e11565b9050600003610958576040517f947d5a8400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061097d823561096c6020850185613e11565b61097591613e79565b338887611e2f565b805190915061098c9086613bed565b945080602001518785815181106109a5576109a56137fe565b6020026020010181905250806020015151860195505050506109c78160010190565b90506108bc565b506109d98383612541565b979650505050505050565b604080516001808252818301909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816109fb579050509050610a3636839003830160208401613eed565b81600081518110610a4957610a496137fe565b6020908102919091010152610a63823582333460016113e9565b505050565b348160005b818110156106e4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8201811436868684818110610aad57610aad6137fe565b9050602002810190610abf9190613ddd565b9050610b2c8135610ad36020840184613f09565b808060200260200160405190810160405280939291908181526020016000905b82821015610b1f57610b1060408302860136819003810190613eed565b81526020019060010190610af3565b50505050503388866113e9565b610b369086613bed565b94505050610b448160010190565b9050610a6d565b60004261072a838261262b565b33600090815260208190526040902054808211610ba1576040517f756688fe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152602081815260409182902084905581518381529081018490527f57b09af877df9068fd60a69d7b21f5576b8b38955812d6ae4ac52942f1e38fb7910160405180910390a15050565b60608160008167ffffffffffffffff811115610c0d57610c0d61386b565b604051908082528060200260200182016040528015610c4057816020015b6060815260200190600190039081610c2b5790505b509050600034815b848110156109ce577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8501811436898984818110610c8857610c886137fe565b9050602002810190610c9a919061382d565b9050366000610cac6020840184613e11565b909250905080801580610ccd5750610cc76040850185613f71565b90508114155b15610d04576040517f947d5a8400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015610de557610ddd6040518060a0016040528087600001358152602001868685818110610d3957610d396137fe565b9050602002810190610d4b9190613d9d565b610d5490613dd1565b8152602001610d666040890189613f71565b85818110610d7657610d766137fe565b905060600201803603810190610d8c9190613fd8565b8152602001610da16080890160608a016135bd565b73ffffffffffffffffffffffffffffffffffffffff168152602001610dcc60a0890160808a01613ff4565b67ffffffffffffffff169052611ca5565b600101610d07565b506000610e0e8535610df78587613e79565b610e076080890160608a016135bd565b8b8a611e2f565b8051909150610e1d9089613bed565b975080602001518a8881518110610e3657610e366137fe565b602002602001018190525080602001515189019850505050505050610e5b8160010190565b9050610c48565b604080516101408101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082019290925261012081019190915260008281526032602090815260409182902082516101408101845281548152600182015492810192909252600281015467ffffffffffffffff808216948401949094526801000000000000000081048416606084015270010000000000000000000000000000000090049092166080820152600382015460a0820152600482015473ffffffffffffffffffffffffffffffffffffffff90811660c0830152600583015490811660e083015274010000000000000000000000000000000000000000900460ff16151561010082015260068201805491929161012084019190610f9c9061400f565b80601f0160208091040260200160405190810160405280929190818152602001828054610fc89061400f565b80156110155780601f10610fea57610100808354040283529160200191611015565b820191906000526020600020905b815481529060010190602001808311610ff857829003601f168201915b5050505050815250509050919050565b61103c6110373683900383018361405c565b6111d8565b604080516001808252818301909252600091816020015b604080518082019091526000808252602082015281526020019060019003908161105357905050905061108e36839003830160208401613eed565b816000815181106110a1576110a16137fe565b6020908102919091010152610a638235826110c260e0860160c087016135bd565b3460016113e9565b60004261072a338483611a18565b60004282825b81811015610724576111088686838181106110fb576110fb6137fe565b905060200201358461262b565b6001016110de565b600061075b6126ed565b604080516001808252818301909252600091829190816020015b6040805160c081018252600080825260208083018290529282018190526060808301829052608083015260a082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816111345790505090506111a26020840184613d9d565b6111ab90613dd1565b816000815181106111be576111be6137fe565b602090810291909101015261083d83358233346001611e2f565b608081015167ffffffffffffffff161580159061120c57504267ffffffffffffffff16816080015167ffffffffffffffff16105b15611243576040517f1ab7da6b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808201516040808401516060850151855184518587015173ffffffffffffffffffffffffffffffffffffffff84166000908152978890529487208054969794969495611337957fb5d556f07587ec0f08cf386545cc4362c702a001650c2058002615ee5c9d1e7595949392886112ba836140ca565b909155506080808c015160408051602081019990995273ffffffffffffffffffffffffffffffffffffffff9097169688019690965260608701949094529285019190915260a084015260c083015267ffffffffffffffff1660e0820152610100015b60405160208183030381529060405280519060200120612821565b90506113ad84606001518284602001518560400151866000015160405160200161139993929190928352602083019190915260f81b7fff0000000000000000000000000000000000000000000000000000000000000016604082015260410190565b604051602081830303815290604052612834565b6113e3576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6040517fa2ea7c6e0000000000000000000000000000000000000000000000000000000081526004810186905260009081907342000000000000000000000000000000000000209063a2ea7c6e90602401600060405180830381865afa158015611457573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261149d9190810190614102565b80519091506114d8576040517fbf37b20e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b855160008167ffffffffffffffff8111156114f5576114f561386b565b60405190808252806020026020018201604052801561159457816020015b60408051610140810182526000808252602080830182905292820181905260608083018290526080830182905260a0830182905260c0830182905260e0830182905261010083019190915261012082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816115135790505b50905060008267ffffffffffffffff8111156115b2576115b261386b565b6040519080825280602002602001820160405280156115db578160200160208202803683370190505b50905060005b838110156119fa5760008a82815181106115fd576115fd6137fe565b6020908102919091018101518051600090815260329092526040909120805491925090611656576040517fc5723b5100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8c816001015414611693576040517fbf37b20e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600581015473ffffffffffffffffffffffffffffffffffffffff8c81169116146116e9576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600581015474010000000000000000000000000000000000000000900460ff1661173f576040517f157bd4c300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002810154700100000000000000000000000000000000900467ffffffffffffffff1615611799576040517f905e710700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b426002820180547fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff811670010000000000000000000000000000000067ffffffffffffffff948516810291821793849055604080516101408101825287548152600188015460208201529386169286169290921791830191909152680100000000000000008304841660608301529091049091166080820152600382015460a0820152600482015473ffffffffffffffffffffffffffffffffffffffff90811660c0830152600583015490811660e083015274010000000000000000000000000000000000000000900460ff16151561010082015260068201805483916101208401916118a59061400f565b80601f01602080910402602001604051908101604052809291908181526020018280546118d19061400f565b801561191e5780601f106118f35761010080835404028352916020019161191e565b820191906000526020600020905b81548152906001019060200180831161190157829003601f168201915b505050505081525050858481518110611939576119396137fe565b6020026020010181905250816020015184848151811061195b5761195b6137fe565b6020026020010181815250508c8b73ffffffffffffffffffffffffffffffffffffffff16868581518110611991576119916137fe565b602002602001015160c0015173ffffffffffffffffffffffffffffffffffffffff167ff930a6e2523c9cc298691873087a740550b8fc85a0680830414c148ed927f61585600001516040516119e891815260200190565b60405180910390a450506001016115e1565b50611a0a84838360018b8b612a03565b9a9950505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603460209081526040808320858452918290529091205467ffffffffffffffff1615611a8c576040517fec9d6eeb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008381526020829052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff861690811790915590519091859173ffffffffffffffffffffffffffffffffffffffff8816917f92a1f7a41a7c585a8b09e25b195e225b1d43248daca46b0faf9e0792777a222991a450505050565b604080516020808252818301909252606091600091906020820181803683370190505090506000805b6020811015611be2576000858260208110611b5d57611b5d6137fe565b1a60f81b90507fff000000000000000000000000000000000000000000000000000000000000008116600003611b935750611be2565b80848481518110611ba657611ba66137fe565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505060019182019101611b40565b5060008167ffffffffffffffff811115611bfe57611bfe61386b565b6040519080825280601f01601f191660200182016040528015611c28576020820181803683370190505b50905060005b82811015611c9c57838181518110611c4857611c486137fe565b602001015160f81c60f81b828281518110611c6557611c656137fe565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600101611c2e565b50949350505050565b608081015167ffffffffffffffff1615801590611cd957504267ffffffffffffffff16816080015167ffffffffffffffff16105b15611d10576040517f1ab7da6b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808201516040808401516060808601518651855186880151868801519488015160808901518051908b012060a08a015173ffffffffffffffffffffffffffffffffffffffff871660009081529b8c9052988b2080549a9b989a9899611337997ffeb2925a02bae3dae48d424a0437a2b6ac939aa9230ddc55a1a76f065d988076999493928c611da0836140ca565b919050558e6080015160405160200161131c9b9a999897969594939291909a8b5273ffffffffffffffffffffffffffffffffffffffff998a1660208c015260408b019890985295909716606089015267ffffffffffffffff938416608089015291151560a088015260c087015260e0860152610100850193909352610120840152166101408201526101600190565b60408051808201909152600081526060602082015284516040805180820190915260008152606060208201528167ffffffffffffffff811115611e7457611e7461386b565b604051908082528060200260200182016040528015611e9d578160200160208202803683370190505b5060208201526040517fa2ea7c6e000000000000000000000000000000000000000000000000000000008152600481018990526000907342000000000000000000000000000000000000209063a2ea7c6e90602401600060405180830381865afa158015611f0f573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611f559190810190614102565b8051909150611f90576040517fbf37b20e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008367ffffffffffffffff811115611fab57611fab61386b565b60405190808252806020026020018201604052801561204a57816020015b60408051610140810182526000808252602080830182905292820181905260608083018290526080830182905260a0830182905260c0830182905260e0830182905261010083019190915261012082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181611fc95790505b50905060008467ffffffffffffffff8111156120685761206861386b565b604051908082528060200260200182016040528015612091578160200160208202803683370190505b50905060005b858110156125205760008b82815181106120b3576120b36137fe565b60200260200101519050600067ffffffffffffffff16816020015167ffffffffffffffff16141580156120fe57504267ffffffffffffffff16816020015167ffffffffffffffff1611155b15612135576040517f08e8b93700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8460400151158015612148575080604001515b1561217f576040517f157bd4c300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518061014001604052806000801b81526020018f81526020016121a34290565b67ffffffffffffffff168152602001836020015167ffffffffffffffff168152602001600067ffffffffffffffff16815260200183606001518152602001836000015173ffffffffffffffffffffffffffffffffffffffff1681526020018d73ffffffffffffffffffffffffffffffffffffffff16815260200183604001511515815260200183608001518152509050600080600090505b6122458382612df4565b600081815260326020526040902054909250156122645760010161223b565b81835260008281526032602090815260409182902085518155908501516001820155908401516002820180546060870151608088015167ffffffffffffffff908116700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff92821668010000000000000000027fffffffffffffffffffffffffffffffff000000000000000000000000000000009094169190951617919091171691909117905560a0840151600382015560c084015160048201805473ffffffffffffffffffffffffffffffffffffffff9283167fffffffffffffffffffffffff000000000000000000000000000000000000000090911617905560e0850151600583018054610100880151151574010000000000000000000000000000000000000000027fffffffffffffffffffffff000000000000000000000000000000000000000000909116929093169190911791909117905561012084015184919060068201906123e49082614228565b50505060608401511561243b57606084015160009081526032602052604090205461243b576040517fc5723b5100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8287868151811061244e5761244e6137fe565b60200260200101819052508360a00151868681518110612470576124706137fe565b6020026020010181815250508189602001518681518110612493576124936137fe565b6020026020010181815250508f8e73ffffffffffffffffffffffffffffffffffffffff16856000015173ffffffffffffffffffffffffffffffffffffffff167f8bf46bf4cfd674fa735a3d63ec1c9ad4153f033c290341f3a588b75685141b358560405161250391815260200190565b60405180910390a4505050506125198160010190565b9050612097565b5061253083838360008c8c612a03565b845250919998505050505050505050565b606060008267ffffffffffffffff81111561255e5761255e61386b565b604051908082528060200260200182016040528015612587578160200160208202803683370190505b508451909150600090815b818110156126205760008782815181106125ae576125ae6137fe565b6020026020010151905060008151905060005b8181101561260c578281815181106125db576125db6137fe565b60200260200101518787815181106125f5576125f56137fe565b6020908102919091010152600195860195016125c1565b5050506126198160010190565b9050612592565b509195945050505050565b60008281526033602052604090205467ffffffffffffffff161561267b576040517f2e26794600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526033602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff85169081179091559051909184917f5aafceeb1c7ad58e4a84898bdee37c02c0fc46e7d24e6b60e8209449f183459f9190a35050565b60003073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614801561275357507f000000000000000000000000000000000000000000000000000000000000000046145b1561277d57507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b600061072a61282e6126ed565b83612e53565b60008060006128438585612e95565b9092509050600081600481111561285c5761285c614342565b14801561289457508573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b156128a4576001925050506129fc565b6000808773ffffffffffffffffffffffffffffffffffffffff16631626ba7e60e01b88886040516024016128d9929190614371565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009094169390931790925290516129629190614392565b600060405180830381855afa9150503d806000811461299d576040519150601f19603f3d011682016040523d82523d6000602084013e6129a2565b606091505b50915091508180156129b5575080516020145b80156129f5575080517f1626ba7e00000000000000000000000000000000000000000000000000000000906129f390830160209081019084016143a4565b145b9450505050505b9392505050565b84516000906001819003612a5b57612a538888600081518110612a2857612a286137fe565b602002602001015188600081518110612a4357612a436137fe565b6020026020010151888888612eda565b915050612dea565b602088015173ffffffffffffffffffffffffffffffffffffffff8116612afc5760005b82811015612ae157878181518110612a9857612a986137fe565b6020026020010151600014612ad9576040517f1574f9f300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101612a7e565b508315612af157612af1856131f9565b600092505050612dea565b6000808273ffffffffffffffffffffffffffffffffffffffff1663ce46e0466040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b6e91906143bd565b905060005b84811015612c2b5760008a8281518110612b8f57612b8f6137fe565b6020026020010151905080600003612ba75750612c23565b82612bde576040517f1574f9f300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b88811115612c18576040517f1101129400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b978890039792909201915b600101612b73565b508715612d06576040517f88e5b2d900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416906388e5b2d9908490612c88908e908e906004016143da565b60206040518083038185885af1158015612ca6573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612ccb91906143bd565b612d01576040517fbf2f3a8b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612dd5565b6040517f91db0b7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416906391db0b7e908490612d5c908e908e906004016143da565b60206040518083038185885af1158015612d7a573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d9f91906143bd565b612dd5576040517fe8bee83900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8515612de457612de4876131f9565b50925050505b9695505050505050565b60208083015160c084015160e0850151604080870151606088015161010089015160a08a01516101208b01519451600099612e3599989796918c9101614493565b60405160208183030381529060405280519060200120905092915050565b6040517f190100000000000000000000000000000000000000000000000000000000000060208201526022810183905260428101829052600090606201612e35565b6000808251604103612ecb5760208301516040840151606085015160001a612ebf8782858561320c565b94509450505050612ed3565b506000905060025b9250929050565b602086015160009073ffffffffffffffffffffffffffffffffffffffff8116612f4e578515612f35576040517f1574f9f300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8215612f4457612f44846131f9565b6000915050612dea565b8515613039578073ffffffffffffffffffffffffffffffffffffffff1663ce46e0466040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fc391906143bd565b612ff9576040517f1574f9f300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83861115613033576040517f1101129400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85840393505b8415613111576040517fe49617e100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063e49617e1908890613093908b90600401613771565b60206040518083038185885af11580156130b1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906130d691906143bd565b61310c576040517fccf3bb2700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6131de565b6040517fe60c350500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063e60c3505908890613165908b90600401613771565b60206040518083038185885af1158015613183573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906131a891906143bd565b6131de576040517fbd8ba84d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82156131ed576131ed846131f9565b50939695505050505050565b8015613209576132093382613324565b50565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115613243575060009050600361331b565b8460ff16601b1415801561325b57508460ff16601c14155b1561326c575060009050600461331b565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156132c0573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166133145760006001925092505061331b565b9150600090505b94509492505050565b80471015613393576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064015b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d80600081146133ed576040519150601f19603f3d011682016040523d82523d6000602084013e6133f2565b606091505b5050905080610a63576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161338a565b60008083601f84011261349557600080fd5b50813567ffffffffffffffff8111156134ad57600080fd5b6020830191508360208260051b8501011115612ed357600080fd5b600080602083850312156134db57600080fd5b823567ffffffffffffffff8111156134f257600080fd5b6134fe85828601613483565b90969095509350505050565b60005b8381101561352557818101518382015260200161350d565b50506000910152565b6000815180845261354681602086016020860161350a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006129fc602083018461352e565b73ffffffffffffffffffffffffffffffffffffffff8116811461320957600080fd5b80356135b88161358b565b919050565b6000602082840312156135cf57600080fd5b81356129fc8161358b565b6000602082840312156135ec57600080fd5b813567ffffffffffffffff81111561360357600080fd5b820160e081850312156129fc57600080fd5b6020808252825182820181905260009190848201906040850190845b8181101561364d57835183529284019291840191600101613631565b50909695505050505050565b60006060828403121561366b57600080fd5b50919050565b60006020828403121561368357600080fd5b5035919050565b6000610140825184526020830151602085015260408301516136b8604086018267ffffffffffffffff169052565b5060608301516136d4606086018267ffffffffffffffff169052565b5060808301516136f0608086018267ffffffffffffffff169052565b5060a083015160a085015260c083015161372260c086018273ffffffffffffffffffffffffffffffffffffffff169052565b5060e083015161374a60e086018273ffffffffffffffffffffffffffffffffffffffff169052565b506101008381015115159085015261012080840151818601839052612dea8387018261352e565b6020815260006129fc602083018461368a565b6000610100828403121561366b57600080fd5b600080604083850312156137aa57600080fd5b82356137b58161358b565b946020939093013593505050565b6000602082840312156137d557600080fd5b813567ffffffffffffffff8111156137ec57600080fd5b8201604081850312156129fc57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6183360301811261386157600080fd5b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160a0810167ffffffffffffffff811182821017156138bd576138bd61386b565b60405290565b60405160c0810167ffffffffffffffff811182821017156138bd576138bd61386b565b6040516080810167ffffffffffffffff811182821017156138bd576138bd61386b565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156139505761395061386b565b604052919050565b600067ffffffffffffffff8211156139725761397261386b565b5060051b60200190565b60006040828403121561398e57600080fd5b6040516040810181811067ffffffffffffffff821117156139b1576139b161386b565b604052823581526020928301359281019290925250919050565b6000606082840312156139dd57600080fd5b6040516060810181811067ffffffffffffffff82111715613a0057613a0061386b565b604052905080823560ff81168114613a1757600080fd5b8082525060208301356020820152604083013560408201525092915050565b600082601f830112613a4757600080fd5b81356020613a5c613a5783613958565b613909565b82815260609283028501820192828201919087851115613a7b57600080fd5b8387015b85811015613a9e57613a9189826139cb565b8452928401928101613a7f565b5090979650505050505050565b803567ffffffffffffffff811681146135b857600080fd5b600060a08236031215613ad557600080fd5b613add61389a565b8235815260208084013567ffffffffffffffff80821115613afd57600080fd5b9085019036601f830112613b1057600080fd5b8135613b1e613a5782613958565b81815260069190911b83018401908481019036831115613b3d57600080fd5b938501935b82851015613b6657613b54368661397c565b82528582019150604085019450613b42565b80868801525050506040860135925080831115613b8257600080fd5b5050613b9036828601613a36565b604083015250613ba2606084016135ad565b6060820152613bb360808401613aab565b608082015292915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561072a5761072a613bbe565b801515811461320957600080fd5b600067ffffffffffffffff821115613c2857613c2861386b565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600060c08284031215613c6657600080fd5b613c6e6138c3565b90508135613c7b8161358b565b81526020613c8a838201613aab565b818301526040830135613c9c81613c00565b604083015260608381013590830152608083013567ffffffffffffffff811115613cc557600080fd5b8301601f81018513613cd657600080fd5b8035613ce4613a5782613c0e565b8181528684838501011115613cf857600080fd5b818484018583013760008483830101528060808601525050505060a082013560a082015292915050565b600060e08236031215613d3457600080fd5b613d3c61389a565b82358152602083013567ffffffffffffffff811115613d5a57600080fd5b613d6636828601613c54565b602083015250613d7936604085016139cb565b604082015260a0830135613d8c8161358b565b6060820152613bb360c08401613aab565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4183360301811261386157600080fd5b600061072a3683613c54565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261386157600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613e4657600080fd5b83018035915067ffffffffffffffff821115613e6157600080fd5b6020019150600581901b3603821315612ed357600080fd5b6000613e87613a5784613958565b80848252602080830192508560051b850136811115613ea557600080fd5b855b81811015613ee157803567ffffffffffffffff811115613ec75760008081fd5b613ed336828a01613c54565b865250938201938201613ea7565b50919695505050505050565b600060408284031215613eff57600080fd5b6129fc838361397c565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613f3e57600080fd5b83018035915067ffffffffffffffff821115613f5957600080fd5b6020019150600681901b3603821315612ed357600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613fa657600080fd5b83018035915067ffffffffffffffff821115613fc157600080fd5b6020019150606081023603821315612ed357600080fd5b600060608284031215613fea57600080fd5b6129fc83836139cb565b60006020828403121561400657600080fd5b6129fc82613aab565b600181811c9082168061402357607f821691505b60208210810361366b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000610100828403121561406f57600080fd5b61407761389a565b82358152614088846020850161397c565b602082015261409a84606085016139cb565b604082015260c08301356140ad8161358b565b60608201526140be60e08401613aab565b60808201529392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036140fb576140fb613bbe565b5060010190565b6000602080838503121561411557600080fd5b825167ffffffffffffffff8082111561412d57600080fd5b908401906080828703121561414157600080fd5b6141496138e6565b825181528383015161415a8161358b565b81850152604083015161416c81613c00565b604082015260608301518281111561418357600080fd5b80840193505086601f84011261419857600080fd5b825191506141a8613a5783613c0e565b82815287858486010111156141bc57600080fd5b6141cb8386830187870161350a565b60608201529695505050505050565b601f821115610a6357600081815260208120601f850160051c810160208610156142015750805b601f850160051c820191505b818110156142205782815560010161420d565b505050505050565b815167ffffffffffffffff8111156142425761424261386b565b61425681614250845461400f565b846141da565b602080601f8311600181146142a957600084156142735750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555614220565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156142f6578886015182559484019460019091019084016142d7565b508582101561433257878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b82815260406020820152600061438a604083018461352e565b949350505050565b6000825161386181846020870161350a565b6000602082840312156143b657600080fd5b5051919050565b6000602082840312156143cf57600080fd5b81516129fc81613c00565b6000604082016040835280855180835260608501915060608160051b8601019250602080880160005b8381101561444f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa088870301855261443d86835161368a565b95509382019390820190600101614403565b50508584038187015286518085528782019482019350915060005b828110156144865784518452938101939281019260010161446a565b5091979650505050505050565b89815260007fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808b60601b166020840152808a60601b166034840152507fffffffffffffffff000000000000000000000000000000000000000000000000808960c01b166048840152808860c01b1660508401525085151560f81b6058830152846059830152835161452c81607985016020880161350a565b80830190507fffffffff000000000000000000000000000000000000000000000000000000008460e01b166079820152607d81019150509a995050505050505050505056fea164736f6c6343000813000a0000000000000000000000000000000000000000000000", + "from": "0xDeaDDEaDDeAdDeAdDEAdDEaddeAddEAdDEAd0001", + "gasLimit": 5800000, + "intent": "Deploy EAS Implementation", + "to": "0x420000000000000000000000000000000000002C" + }, + { + "data": "0xcdcb760a9b217f1b15f9c04316d04d42f550c340c5b2ee8e5ae05cab4f8cd9cb21970ca4000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000017586080604052348015600e575f80fd5b5060156019565b60d4565b5f54610100900460ff161560835760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff908116101560d2575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b611677806100e15f395ff3fe6080604052600436106100bb575f3560e01c80637dfbd04911610071578063c4d66de81161004c578063c4d66de8146102f6578063d61a398b14610315578063dad544e014610346575f80fd5b80637dfbd049146102ac5780637fc81bb7146102c3578063b87ea8d4146102e2575f80fd5b8063394d2731116100a1578063394d2731146101f65780633e47158c1461021e57806354fd4d5014610257575f80fd5b80630a7617b3146101735780630c0544a314610194575f80fd5b3661016f573373ffffffffffffffffffffffffffffffffffffffff7f21346dddac42cc163a6523eefc19df981df7352c870dc3b0b17a6a92fc6fe8135c1614610130576040517f14885cf900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805134815247602082018190529133917f213e72af0d3613bd643cff3059f872c1015e6541624e37872bf95eefbaf220a8910160405180910390a2005b5f80fd5b34801561017e575f80fd5b5061019261018d3660046112a1565b61035a565b005b34801561019f575f80fd5b506001546101d09070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1681565b6040516fffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b348015610201575f80fd5b506001546101d0906fffffffffffffffffffffffffffffffff1681565b348015610229575f80fd5b5061023261051c565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101ed565b348015610262575f80fd5b5061029f6040518060400160405280600581526020017f312e302e3100000000000000000000000000000000000000000000000000000081525081565b6040516101ed91906112bc565b3480156102b7575f80fd5b506101d06301e1338081565b3480156102ce575f80fd5b506101926102dd36600461130f565b610722565b3480156102ed575f80fd5b50610192610915565b348015610301575f80fd5b506101926103103660046112a1565b610ced565b348015610320575f80fd5b505f546102329062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b348015610351575f80fd5b50610232610ee9565b73420000000000000000000000000000000000001873ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103b7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103db919061133e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461043f576040517f38bac74200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811661048c576040517f99c6ec0800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f805473ffffffffffffffffffffffffffffffffffffffff838116620100008181027fffffffffffffffffffff0000000000000000000000000000000000000000ffff85161790945560408051949093049091168084526020840191909152917f16417cc372deec0caee5f52e2ad77a5f07b4591fd56b4ff31b6e20f817d4daeb91015b60405180910390a15050565b5f806105467fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b905073ffffffffffffffffffffffffffffffffffffffff81161561056957919050565b6040518060400160405280601a81526020017f4f564d5f4c3143726f7373446f6d61696e4d657373656e6765720000000000008152505160026105ac9190611386565b604080513060208201525f918101919091527f4f564d5f4c3143726f7373446f6d61696e4d657373656e6765720000000000009190911790610606906060015b604051602081830303815290604052805190602001205490565b1461063d576040517f54e433cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080513060208201526001918101919091525f9061065e906060016105ec565b905073ffffffffffffffffffffffffffffffffffffffff8116156106f0578073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106c5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106e9919061133e565b9250505090565b6040517f332144db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73420000000000000000000000000000000000001873ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561077f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107a3919061133e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610807576040517f38bac74200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806fffffffffffffffffffffffffffffffff165f03610852576040517fcf85916100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6301e133806fffffffffffffffffffffffffffffffff821611156108a2576040517f30b9f35e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180546fffffffffffffffffffffffffffffffff8381167001000000000000000000000000000000008181028385161790945560408051949093049091168084526020840191909152917f4492086b630ed3846eec0979dd87a71c814ceb1c6dab80ab81e3450b21e4de289101610510565b60015461094a906fffffffffffffffffffffffffffffffff7001000000000000000000000000000000008204811691166113a3565b6fffffffffffffffffffffffffffffffff16421015610995576040517f1e4a9f3a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016426fffffffffffffffffffffffffffffffff161790555f6109ef734200000000000000000000000000000000000011610f63565b90505f610a0f734200000000000000000000000000000000000019610f63565b90505f610a2f73420000000000000000000000000000000000001a610f63565b90505f610a4f73420000000000000000000000000000000000001b610f63565b9050610a5a5f6111b0565b5f8282610a6786886113d3565b610a7191906113d3565b610a7b91906113d3565b9050805f03610ab6576040517fc8972e5200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80546040517f54e7f42d000000000000000000000000000000000000000000000000000000008152600481018890526024810187905260448101859052606481018690526201000090910473ffffffffffffffffffffffffffffffffffffffff16906354e7f42d906084015f60405180830381865afa158015610b3c573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610b81919081019061148b565b80519091505f819003610bc0576040517f763970d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f805b82811015610c70575f848281518110610bde57610bde61155a565b6020026020010151602001519050805f03610bf95750610c68565b5f610c20868481518110610c0f57610c0f61155a565b60200260200101515f0151836111d6565b905080610c59576040517fd68d1b1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c6382856113d3565b935050505b600101610bc3565b50838114610caa576040517f9c01eac000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f73f9a13241a1848ec157967f3a85601709353e616f1f2605d818c0f2d21774df8385604051610cdb929190611587565b60405180910390a15050505050505050565b5f54610100900460ff1615808015610d0b57505f54600160ff909116105b80610d245750303b158015610d2457505f5460ff166001145b610db4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840160405180910390fd5b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610e10575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610e186111e9565b5f80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff85160217905572015180000000000000000000000000000000006fffffffffffffffffffffffffffffffff4216176001558015610ee5575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610510565b5050565b5f610ef261051c565b73ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f3a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f5e919061133e565b905090565b5f60018273ffffffffffffffffffffffffffffffffffffffff166382356d8a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610faf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fd39190611622565b6001811115610fe457610fe46115f5565b1461101b576040517fb4726cbe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff166366d003ac6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561107b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061109f919061133e565b73ffffffffffffffffffffffffffffffffffffffff16146110ec576040517fc3380cef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b476110f6836111b0565b8273ffffffffffffffffffffffffffffffffffffffff16633ccfd60b6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015611140573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111649190611640565b915047826111728383611657565b146111a9576040517f87c91c5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050919050565b807f21346dddac42cc163a6523eefc19df981df7352c870dc3b0b17a6a92fc6fe8135d50565b5f6111e2835a8461126c565b9392505050565b336111f261051c565b73ffffffffffffffffffffffffffffffffffffffff161415801561123357503361121a610ee9565b73ffffffffffffffffffffffffffffffffffffffff1614155b1561126a576040517fc4050a2600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f805f805f858888f1949350505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461129e575f80fd5b50565b5f602082840312156112b1575f80fd5b81356111e28161127d565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f6020828403121561131f575f80fd5b81356fffffffffffffffffffffffffffffffff811681146111e2575f80fd5b5f6020828403121561134e575f80fd5b81516111e28161127d565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808202811582820484141761139d5761139d611359565b92915050565b6fffffffffffffffffffffffffffffffff8181168382160190808211156113cc576113cc611359565b5092915050565b8082018082111561139d5761139d611359565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715611436576114366113e6565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611483576114836113e6565b604052919050565b5f602080838503121561149c575f80fd5b825167ffffffffffffffff808211156114b3575f80fd5b818501915085601f8301126114c6575f80fd5b8151818111156114d8576114d86113e6565b6114e6848260051b0161143c565b818152848101925060069190911b830184019087821115611505575f80fd5b928401925b8184101561154f5760408489031215611521575f80fd5b611529611413565b84516115348161127d565b8152848601518682015283526040909301929184019161150a565b979650505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b604080825283518282018190525f91906020906060850190828801855b828110156115df578151805173ffffffffffffffffffffffffffffffffffffffff1685528501518585015292850192908401906001016115a4565b5050508093505050508260208301529392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f60208284031215611632575f80fd5b8151600281106111e2575f80fd5b5f60208284031215611650575f80fd5b5051919050565b8181038181111561139d5761139d61135956fea164736f6c6343000819000a0000000000000000", + "from": "0xDeaDDEaDDeAdDeAdDEAdDEaddeAddEAdDEAd0001", + "gasLimit": 1700000, + "intent": "Deploy FeeSplitter Implementation", + "to": "0x420000000000000000000000000000000000002C" + }, + { + "data": "0xcdcb760a9b217f1b15f9c04316d04d42f550c340c5b2ee8e5ae05cab4f8cd9cb21970ca4000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000005d8608060405234801561001057600080fd5b506105b8806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806354fd4d5014610046578063cdcb760a14610098578063e0145f5c146100d0575b600080fd5b6100826040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161008f91906103f7565b60405180910390f35b6100ab6100a6366004610440565b6100ea565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161008f565b734e59b44847b379578588920ca78fbf26c0b4956c6100ab565b8051602080830191909120604080517fff00000000000000000000000000000000000000000000000000000000000000818501527f4e59b44847b379578588920ca78fbf26c0b4956c000000000000000000000000602182015260358101869052605580820184905282518083039091018152607590910190915280519201919091206000919073ffffffffffffffffffffffffffffffffffffffff81163b156101d85760405173ffffffffffffffffffffffffffffffffffffffff8216907ffbe57d889a7f75a4e0c7da304cd158fcaddc4b925cdd9f4cfb115c0f9e48009b90600090a291506103779050565b600080734e59b44847b379578588920ca78fbf26c0b4956c73ffffffffffffffffffffffffffffffffffffffff168787604051602001610219929190610519565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526102519161053f565b6000604051808303816000865af19150503d806000811461028e576040519150601f19603f3d011682016040523d82523d6000602084013e610293565b606091505b5091509150806102a29061055b565b60601c94508115806102e057508273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561032257806040517fcb0fc6f700000000000000000000000000000000000000000000000000000000815260040161031991906103f7565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff167f9b7318127ed899f286ea9ddd7925ed8ad24a682b6a825c3b5b3d88a3f00bc1d28860405161036a91815260200190565b60405180910390a2505050505b92915050565b60005b83811015610398578181015183820152602001610380565b838111156103a7576000848401525b50505050565b600081518084526103c581602086016020860161037d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061040a60208301846103ad565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561045357600080fd5b82359150602083013567ffffffffffffffff8082111561047257600080fd5b818501915085601f83011261048657600080fd5b81358181111561049857610498610411565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156104de576104de610411565b816040528281528860208487010111156104f757600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b8281526000825161053181602085016020870161037d565b919091016020019392505050565b6000825161055181846020870161037d565b9190910192915050565b6000815160208301517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808216935060148310156105a35780818460140360031b1b83161693505b50505091905056fea164736f6c634300080f000a0000000000000000", + "from": "0xDeaDDEaDDeAdDeAdDEAdDEaddeAddEAdDEAd0001", + "gasLimit": 600000, + "intent": "Deploy ConditionalDeployer Implementation", + "to": "0x420000000000000000000000000000000000002C" + }, + { + "data": "0xcdcb760a9b217f1b15f9c04316d04d42f550c340c5b2ee8e5ae05cab4f8cd9cb21970ca400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000283608060405234801561001057600080fd5b50610263806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80631bec9d65146100515780631d8a4e921461006657806354fd4d501461009b57806378ecabce146100e4575b600080fd5b61006461005f3660046101ca565b610107565b005b7fc8bc8f9195cfb2d040744aac63412d02ffc186ea9bd519039edc4666ee9032bc546040519081526020015b60405180910390f35b6100d76040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161009291906101e3565b6100f76100f23660046101ca565b610178565b6040519015158152602001610092565b3373deaddeaddeaddeaddeaddeaddeaddeaddead000114610154576040517fee37fa8500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8bc8f9195cfb2d040744aac63412d02ffc186ea9bd519039edc4666ee9032bc55565b60006101ab6101a57fc8bc8f9195cfb2d040744aac63412d02ffc186ea9bd519039edc4666ee9032bc5490565b836101b1565b92915050565b600081158015906101c3575081828416145b9392505050565b6000602082840312156101dc57600080fd5b5035919050565b600060208083528351808285015260005b81811015610210578581018301518582016040015282016101f4565b81811115610222576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01692909201604001939250505056fea164736f6c634300080f000a0000000000000000000000000000000000000000000000000000000000", + "from": "0xDeaDDEaDDeAdDeAdDEAdDEaddeAddEAdDEAd0001", + "gasLimit": 300000, + "intent": "Deploy L2DevFeatureFlags Implementation", + "to": "0x420000000000000000000000000000000000002C" + }, + { + "data": "0xcdcb760a9b217f1b15f9c04316d04d42f550c340c5b2ee8e5ae05cab4f8cd9cb21970ca40000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000069e6080604052348015600e575f80fd5b506106828061001c5f395ff3fe608060405234801561000f575f80fd5b506004361061003f575f3560e01c8063331b637f1461004357806354fd4d5014610069578063ab4d6f75146100b2575b5f80fd5b610056610051366004610512565b6100c7565b6040519081526020015b60405180910390f35b6100a56040518060400160405280600581526020017f312e302e3200000000000000000000000000000000000000000000000000000081525081565b604051610060919061053b565b6100c56100c036600461058e565b61039e565b005b5f67ffffffffffffffff801683602001511115610110576040517fd1f79e8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604083015163ffffffff1015610152576040517f94338eba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606083015167ffffffffffffffff1015610198576040517f596a19a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82516040515f916101dd91859060200160609290921b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000168252601482015260340190565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181528282528051602091820120878201516060890151898501515f9487018590527fffffffffffffffff00000000000000000000000000000000000000000000000060c084811b8216602c8a015283901b1660348801527fffffffff0000000000000000000000000000000000000000000000000000000060e082901b16603c88015292965090949093919291016040516020818303038152906040526102ac906105bc565b90505f85826040516020016102cb929190918252602082015260400190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012060808d01519184018190529183015291505f90606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0300000000000000000000000000000000000000000000000000000000000000179a9950505050505050505050565b5f6103b76103b136859003850185610601565b836100c7565b90505f6103c38261043b565b509050806103fd576040517fe3c0081600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b827f5c37832d2e8d10e346e55ad62071a6a2f9fa5130614ef2ec6617555c6f467ba78560405161042d9190610622565b60405180910390a250505050565b5f805a835491505a6103e891031115939092509050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610475575f80fd5b919050565b5f60a0828403121561048a575f80fd5b60405160a0810181811067ffffffffffffffff821117156104d2577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040529050806104e183610452565b8152602083013560208201526040830135604082015260608301356060820152608083013560808201525092915050565b5f8060c08385031215610523575f80fd5b61052d848461047a565b9460a0939093013593505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f8082840360c08112156105a0575f80fd5b60a08112156105ad575f80fd5b50919360a08501359350915050565b805160208083015191908110156105fb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8160200360031b1b821691505b50919050565b5f60a08284031215610611575f80fd5b61061b838361047a565b9392505050565b60a0810173ffffffffffffffffffffffffffffffffffffffff61064484610452565b168252602083013560208301526040830135604083015260608301356060830152608083013560808301529291505056fea164736f6c6343000819000a0000", + "from": "0xDeaDDEaDDeAdDeAdDEAdDEaddeAddEAdDEAd0001", + "gasLimit": 600000, + "intent": "Deploy CrossL2Inbox Implementation", + "to": "0x420000000000000000000000000000000000002C" + }, + { + "data": "0xcdcb760a9b217f1b15f9c04316d04d42f550c340c5b2ee8e5ae05cab4f8cd9cb21970ca4000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000011836080604052348015600e575f80fd5b506111678061001c5f395ff3fe6080604052600436106100b8575f3560e01c80637056f41f11610071578063b1b1b2091161004c578063b1b1b20914610228578063bc294d7d14610266578063ecc7042814610291575f80fd5b80637056f41f146101b65780637936cbee146101d55780638d1d298f14610215575f80fd5b806352617f3c116100a157806352617f3c1461011c57806354fd4d50146101425780636b0c3c5e14610197575f80fd5b806324794462146100bc57806338ffde18146100e3575b5f80fd5b3480156100c7575f80fd5b506100d06102c5565b6040519081526020015b60405180910390f35b3480156100ee575f80fd5b506100f7610344565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100da565b348015610127575f80fd5b5061012f5f81565b60405161ffff90911681526020016100da565b34801561014d575f80fd5b5061018a6040518060400160405280600581526020017f312e332e3000000000000000000000000000000000000000000000000000000081525081565b6040516100da9190610c7e565b3480156101a2575f80fd5b506100d06101b1366004610d00565b6103c3565b3480156101c1575f80fd5b506100d06101d0366004610d77565b6104ae565b3480156101e0575f80fd5b506101e96106ba565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016100da565b61018a610223366004610dcf565b61075e565b348015610233575f80fd5b50610256610242366004610e25565b5f6020819052908152604090205460ff1681565b60405190151581526020016100da565b348015610271575f80fd5b506100d0610280366004610e25565b60026020525f908152604090205481565b34801561029c575f80fd5b506001547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff166100d0565b5f7ff13569814868ede994184d5a425471fb19e869768a33421cb701a2ba3d420c0a5c61031e576040517fbca35af600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b507f711dfa3259c842fffc17d6e1f1e0fc5927756133a2345ca56b4cb8178589fee75c90565b5f7ff13569814868ede994184d5a425471fb19e869768a33421cb701a2ba3d420c0a5c61039d576040517fbca35af600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b507fb83444d07072b122e2e72a669ce32857d892345c19856f4e7142d06a167ab3f35c90565b5f610407874688888888888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610ae192505050565b5f878152600260205260409020549091508114610450576040517f6eca2e4b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b858473ffffffffffffffffffffffffffffffffffffffff16887f382409ac69001e11931a28435afef442cbfd20d9891907e8fa373ba7d351f32088878760405161049c93929190610e3c565b60405180910390a49695505050505050565b5f4685036104e8576040517f8ed9a95d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffffffffffffffffffffbdffffffffffffffffffffffffffffffffffffdd73ffffffffffffffffffffffffffffffffffffffff851601610557576040517f4faa250900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6105816001547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b90506105c6864683338989898080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610ae192505050565b5f828152600260205260408120829055600180549294507dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909216919061060a83610ea5565b91906101000a8154817dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16021790555050808573ffffffffffffffffffffffffffffffffffffffff16877f382409ac69001e11931a28435afef442cbfd20d9891907e8fa373ba7d351f3203388886040516106a993929190610e3c565b60405180910390a450949350505050565b5f807ff13569814868ede994184d5a425471fb19e869768a33421cb701a2ba3d420c0a5c610714576040517fbca35af600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50507fb83444d07072b122e2e72a669ce32857d892345c19856f4e7142d06a167ab3f35c907f711dfa3259c842fffc17d6e1f1e0fc5927756133a2345ca56b4cb8178589fee75c90565b60607ff13569814868ede994184d5a425471fb19e869768a33421cb701a2ba3d420c0a5c156107b9576040517f37ed32e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60017ff13569814868ede994184d5a425471fb19e869768a33421cb701a2ba3d420c0a5d7342000000000000000000000000000000000000236107ff6020860186610f06565b73ffffffffffffffffffffffffffffffffffffffff161461084c576040517f7987c15700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73420000000000000000000000000000000000002273ffffffffffffffffffffffffffffffffffffffff1663ab4d6f7585858560405161088d929190610f21565b6040519081900381207fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1682526108cc9291600401610f30565b5f604051808303815f87803b1580156108e3575f80fd5b505af11580156108f5573d5f803e3d5ffd5b505050505f805f805f6109088888610b1f565b9450945094509450945046851461094b576040517f31ac221100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60808901355f61095f878387878a88610ae1565b5f8181526020819052604090205490915060ff16156109aa576040517f9ca9480b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f81815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556109ea8285610be8565b5f8673ffffffffffffffffffffffffffffffffffffffff163485604051610a119190610f89565b5f6040518083038185875af1925050503d805f8114610a4b576040519150601f19603f3d011682016040523d82523d5f602084013e610a50565b606091505b509950905080610a6257885189602001fd5b8186847fc270d73e26d2d39dee7ef92093555927e344e243415547ecc350b2b5385b68a28c80519060200120604051610a9d91815260200190565b60405180910390a4610aaf5f80610be8565b50505050505050505f7ff13569814868ede994184d5a425471fb19e869768a33421cb701a2ba3d420c0a5d9392505050565b5f868686868686604051602001610afd96959493929190610f9f565b6040516020818303038152906040528051906020012090509695505050505050565b5f808080606081610b33602082898b610ff5565b810190610b409190610e25565b90507f382409ac69001e11931a28435afef442cbfd20d9891907e8fa373ba7d351f3208114610b9b576040517fdf1eb58600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ba960806020898b610ff5565b810190610bb6919061101c565b91975095509350610bca876080818b610ff5565b810190610bd7919061107e565b969995985093965092949392505050565b817f711dfa3259c842fffc17d6e1f1e0fc5927756133a2345ca56b4cb8178589fee75d807fb83444d07072b122e2e72a669ce32857d892345c19856f4e7142d06a167ab3f35d5050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f610c906020830184610c32565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610cb8575f80fd5b50565b5f8083601f840112610ccb575f80fd5b50813567ffffffffffffffff811115610ce2575f80fd5b602083019150836020828501011115610cf9575f80fd5b9250929050565b5f805f805f8060a08789031215610d15575f80fd5b86359550602087013594506040870135610d2e81610c97565b93506060870135610d3e81610c97565b9250608087013567ffffffffffffffff811115610d59575f80fd5b610d6589828a01610cbb565b979a9699509497509295939492505050565b5f805f8060608587031215610d8a575f80fd5b843593506020850135610d9c81610c97565b9250604085013567ffffffffffffffff811115610db7575f80fd5b610dc387828801610cbb565b95989497509550505050565b5f805f83850360c0811215610de2575f80fd5b60a0811215610def575f80fd5b5083925060a084013567ffffffffffffffff811115610e0c575f80fd5b610e1886828701610cbb565b9497909650939450505050565b5f60208284031215610e35575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301375f818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b5f7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808316818103610efc577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6001019392505050565b5f60208284031215610f16575f80fd5b8135610c9081610c97565b818382375f9101908152919050565b60c081018335610f3f81610c97565b73ffffffffffffffffffffffffffffffffffffffff1682526020848101359083015260408085013590830152606080850135908301526080938401359382019390935260a0015290565b5f82518060208501845e5f920191825250919050565b8681528560208201528460408201525f73ffffffffffffffffffffffffffffffffffffffff808616606084015280851660808401525060c060a0830152610fe960c0830184610c32565b98975050505050505050565b5f8085851115611003575f80fd5b8386111561100f575f80fd5b5050820193919092039150565b5f805f6060848603121561102e575f80fd5b83359250602084013561104081610c97565b929592945050506040919091013590565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f806040838503121561108f575f80fd5b823561109a81610c97565b9150602083013567ffffffffffffffff808211156110b6575f80fd5b818501915085601f8301126110c9575f80fd5b8135818111156110db576110db611051565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561112157611121611051565b81604052828152886020848701011115611139575f80fd5b826020860160208301375f602084830101528095505050505050925092905056fea164736f6c6343000819000a0000000000000000000000000000000000000000000000000000000000", + "from": "0xDeaDDEaDDeAdDeAdDEAdDEaddeAddEAdDEAd0001", + "gasLimit": 1500000, + "intent": "Deploy L2ToL2CrossDomainMessenger Implementation", + "to": "0x420000000000000000000000000000000000002C" + }, + { + "data": "0xcdcb760a9b217f1b15f9c04316d04d42f550c340c5b2ee8e5ae05cab4f8cd9cb21970ca4000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000007ab608060405234801561001057600080fd5b5061078b806100206000396000f3fe6080604052600436106100345760003560e01c80634f0edcc91461003957806354fd4d501461005b57806364a197f3146100ba575b600080fd5b34801561004557600080fd5b506100596100543660046105ae565b6100db565b005b34801561006757600080fd5b506100a46040518060400160405280600581526020017f312e302e3100000000000000000000000000000000000000000000000000000081525081565b6040516100b1919061065a565b60405180910390f35b6100cd6100c8366004610674565b610340565b6040519081526020016100b1565b3373420000000000000000000000000000000000002314610128576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008073420000000000000000000000000000000000002373ffffffffffffffffffffffffffffffffffffffff16637936cbee6040518163ffffffff1660e01b81526004016040805180830381865afa158015610189573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ad91906106a0565b909250905073ffffffffffffffffffffffffffffffffffffffff82163014610201576040517fbc22e2aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fa0712d68000000000000000000000000000000000000000000000000000000008152600481018490527342000000000000000000000000000000000000259063a0712d6890602401600060405180830381600087803b15801561026757600080fd5b505af115801561027b573d6000803e3d6000fd5b50505050828460405161028d9061057d565b73ffffffffffffffffffffffffffffffffffffffff90911681526020016040518091039082f09050801580156102c7573d6000803e3d6000fd5b50508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fe5479bb8ebad3b9ac81f55f424a6289cf0a54ff2641708f41dcb2b26f264d3598584604051610331929190918252602082015260400190565b60405180910390a35050505050565b600073ffffffffffffffffffffffffffffffffffffffff831661038f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73420000000000000000000000000000000000002573ffffffffffffffffffffffffffffffffffffffff166344df8e70346040518263ffffffff1660e01b81526004016000604051808303818588803b1580156103eb57600080fd5b505af11580156103ff573d6000803e3d6000fd5b50506040805133602482015273ffffffffffffffffffffffffffffffffffffffff881660448201523460648083019190915282518083039091018152608490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f4f0edcc90000000000000000000000000000000000000000000000000000000017905290517f7056f41f0000000000000000000000000000000000000000000000000000000081527342000000000000000000000000000000000000239450637056f41f93506104de9250869130916004016106ce565b6020604051808303816000875af11580156104fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610521919061070c565b604080513481526020810185905291925073ffffffffffffffffffffffffffffffffffffffff85169133917fed98a2ff78833375c368471a747cdf0633024dde3f870feb08a934ac5be83402910160405180910390a392915050565b60598061072683390190565b73ffffffffffffffffffffffffffffffffffffffff811681146105ab57600080fd5b50565b6000806000606084860312156105c357600080fd5b83356105ce81610589565b925060208401356105de81610589565b929592945050506040919091013590565b6000815180845260005b81811015610615576020818501810151868301820152016105f9565b81811115610627576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061066d60208301846105ef565b9392505050565b6000806040838503121561068757600080fd5b823561069281610589565b946020939093013593505050565b600080604083850312156106b357600080fd5b82516106be81610589565b6020939093015192949293505050565b83815273ffffffffffffffffffffffffffffffffffffffff8316602082015260606040820152600061070360608301846105ef565b95945050505050565b60006020828403121561071e57600080fd5b505191905056fe608060405260405160593803806059833981016040819052601e91602a565b806001600160a01b0316ff5b600060208284031215603b57600080fd5b81516001600160a01b0381168114605157600080fd5b939250505056fea164736f6c634300080f000a000000000000000000000000000000000000000000", + "from": "0xDeaDDEaDDeAdDeAdDEAdDEaddeAddEAdDEAd0001", + "gasLimit": 700000, + "intent": "Deploy SuperchainETHBridge Implementation", + "to": "0x420000000000000000000000000000000000002C" + }, + { + "data": "0xcdcb760a9b217f1b15f9c04316d04d42f550c340c5b2ee8e5ae05cab4f8cd9cb21970ca4000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000003b3608060405234801561001057600080fd5b50610393806100206000396000f3fe60806040526004361061003f5760003560e01c806344df8e701461004457806354fd4d501461004e578063a0712d68146100ad578063b60d4288146100cd575b600080fd5b61004c6100d5565b005b34801561005a57600080fd5b506100976040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a491906102a1565b60405180910390f35b3480156100b957600080fd5b5061004c6100c8366004610314565b61015a565b61004c610229565b3373420000000000000000000000000000000000002414610122576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405134815233907f875e07afd7ce17c6531b1a6b7b34829dcd8b7e6639448afbd6a8e29fa1422b82906020015b60405180910390a2565b33734200000000000000000000000000000000000024146101a7576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80336040516101b590610295565b73ffffffffffffffffffffffffffffffffffffffff90911681526020016040518091039082f09050801580156101ef573d6000803e3d6000fd5b505060405181815233907f85719716ac5bd2744ae7ed3d16702129383049b97123b506320e7a5826ebbbba9060200160405180910390a250565b34600003610263576040517f2c5211c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405134815233907fbb9e497a5b82d1a37f9496dd70c6efb97ba0d98c66c3422d05010105d063359890602001610150565b60598061032e83390190565b600060208083528351808285015260005b818110156102ce578581018301518582016040015282016102b2565b818111156102e0576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60006020828403121561032657600080fd5b503591905056fe608060405260405160593803806059833981016040819052601e91602a565b806001600160a01b0316ff5b600060208284031215603b57600080fd5b81516001600160a01b0381168114605157600080fd5b939250505056fea164736f6c634300080f000a00000000000000000000000000", + "from": "0xDeaDDEaDDeAdDeAdDEAdDEaddeAddEAdDEAd0001", + "gasLimit": 400000, + "intent": "Deploy ETHLiquidity Implementation", + "to": "0x420000000000000000000000000000000000002C" + }, + { + "data": "0xcdcb760a9b217f1b15f9c04316d04d42f550c340c5b2ee8e5ae05cab4f8cd9cb21970ca4000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000010b1608060405234801561001057600080fd5b50611091806100206000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80635cf24969116100f9578063c598591811610097578063e591b28211610071578063e591b28214610434578063e81b2c6d1461044e578063f820614014610457578063fe3d57101461046057600080fd5b8063c598591814610404578063d844471514610424578063dad544e01461042c57600080fd5b80638381f58a116100d35780638381f58a146103be5780638b239f73146103d25780639e8c4966146103db578063b80777ea146103e457600080fd5b80635cf249691461038557806364ca23ef1461038e57806368d5dca6146103a257600080fd5b80634397dfef1161016657806347af267b1161014057806347af267b146103145780634d5d9a2a1461033757806354fd4d5014610368578063550fcdc91461037d57600080fd5b80634397dfef146102c3578063440a5e20146102f957806346a4d7801461030157600080fd5b806316d3bc7f116101a257806316d3bc7f14610202578063213268491461022f5780633db6be2b1461028e5780633e47158c1461029657600080fd5b8063015d8eb9146101c9578063098999be146101de57806309bd5a60146101e6575b600080fd5b6101dc6101d7366004610d9c565b610491565b005b6101dc6105d1565b6101ef60025481565b6040519081526020015b60405180910390f35b6008546102169067ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016101f9565b7f435553544f4d5f4741535f544f4b454e0000000000000000000000000000000060005260096020527f4ad9936a67aeb1898ef7b848aecdf71a1f8999fbf63ff2f5b5691cb14bedfe4d5460ff165b60405190151581526020016101f9565b6101dc6105e4565b61029e61060e565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101f9565b6102cb610819565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835260ff9091166020830152016101f9565b6101dc610880565b6101dc61030f366004610e0e565b6108d7565b61027e610322366004610e0e565b60096020526000908152604090205460ff1681565b6008546103539068010000000000000000900463ffffffff1681565b60405163ffffffff90911681526020016101f9565b6103706108ec565b6040516101f99190610e57565b61037061094c565b6101ef60015481565b6003546102169067ffffffffffffffff1681565b6003546103539068010000000000000000900463ffffffff1681565b6000546102169067ffffffffffffffff1681565b6101ef60055481565b6101ef60065481565b6000546102169068010000000000000000900467ffffffffffffffff1681565b600354610353906c01000000000000000000000000900463ffffffff1681565b610370610a88565b61029e610b79565b73deaddeaddeaddeaddeaddeaddeaddeaddead000161029e565b6101ef60045481565b6101ef60075481565b60085461047e906c01000000000000000000000000900461ffff1681565b60405161ffff90911681526020016101f9565b3373deaddeaddeaddeaddeaddeaddeaddeaddead000114610539576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603b60248201527f4c31426c6f636b3a206f6e6c7920746865206465706f7369746f72206163636f60448201527f756e742063616e20736574204c3120626c6f636b2076616c756573000000000060648201526084015b60405180910390fd5b6000805467ffffffffffffffff98891668010000000000000000027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909116998916999099179890981790975560019490945560029290925560038054919094167fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000009190911617909255600491909155600555600655565b6105d9610880565b60a43560a01c600855565b6105ec610880565b6dffff00000000000000000000000060b03560901c1660a43560a01c17600855565b6000806106397fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b905073ffffffffffffffffffffffffffffffffffffffff81161561065c57919050565b6040518060400160405280601a81526020017f4f564d5f4c3143726f7373446f6d61696e4d657373656e67657200000000000081525051600261069f9190610ea8565b604080513060208201526000918101919091527f4f564d5f4c3143726f7373446f6d61696e4d657373656e67657200000000000091909117906106fa906060015b604051602081830303815290604052805190602001205490565b14610731576040517f54e433cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051306020820152600191810191909152600090610753906060016106e0565b905073ffffffffffffffffffffffffffffffffffffffff8116156107e7578073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e09190610f0c565b9250505090565b6040517f332144db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c31426c6f636b4347543a20646570726563617465640000000000000000000060448201526000908190606401610530565b73deaddeaddeaddeaddeaddeaddeaddeaddead00013381146108aa57633cc50b456000526004601cfd5b60043560801c60035560143560801c60005560243560015560443560075560643560025560843560045550565b6108e033610bf1565b6108e981610cce565b50565b606061092860408051808201909152600581527f312e392e30000000000000000000000000000000000000000000000000000000602082015290565b6040516020016109389190610f49565b604051602081830303815290604052905090565b60606109a27f435553544f4d5f4741535f544f4b454e0000000000000000000000000000000060005260096020527f4ad9936a67aeb1898ef7b848aecdf71a1f8999fbf63ff2f5b5691cb14bedfe4d5460ff1690565b6109de575060408051808201909152600381527f4554480000000000000000000000000000000000000000000000000000000000602082015290565b73420000000000000000000000000000000000002a73ffffffffffffffffffffffffffffffffffffffff1663550fcdc96040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a3d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610a839190810190610fb9565b905090565b6060610ade7f435553544f4d5f4741535f544f4b454e0000000000000000000000000000000060005260096020527f4ad9936a67aeb1898ef7b848aecdf71a1f8999fbf63ff2f5b5691cb14bedfe4d5460ff1690565b610b1a575060408051808201909152600581527f4574686572000000000000000000000000000000000000000000000000000000602082015290565b73420000000000000000000000000000000000002a73ffffffffffffffffffffffffffffffffffffffff1663d84447156040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a3d573d6000803e3d6000fd5b6000610b8361060e565b73ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a839190610f0c565b73ffffffffffffffffffffffffffffffffffffffff811673deaddeaddeaddeaddeaddeaddeaddeaddead00011480610c5b5750610c2c610b79565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b80610c985750610c6961060e565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6108e9576040517fbe9d7ca600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008181526009602052604090205460ff1615610d17576040517f4f45326000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008181526009602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091559051909183917fb876f6594132c89891d2fd198e925e999be741ec809abb58bfe9b966876cc06c9190a350565b803567ffffffffffffffff81168114610d9757600080fd5b919050565b600080600080600080600080610100898b031215610db957600080fd5b610dc289610d7f565b9750610dd060208a01610d7f565b96506040890135955060608901359450610dec60808a01610d7f565b979a969950949793969560a0850135955060c08501359460e001359350915050565b600060208284031215610e2057600080fd5b5035919050565b60005b83811015610e42578181015183820152602001610e2a565b83811115610e51576000848401525b50505050565b6020815260008251806020840152610e76816040850160208701610e27565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610f07577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500290565b600060208284031215610f1e57600080fd5b815173ffffffffffffffffffffffffffffffffffffffff81168114610f4257600080fd5b9392505050565b60008251610f5b818460208701610e27565b7f2b637573746f6d2d6761732d746f6b656e2e3100000000000000000000000000920191825250601301919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060208284031215610fcb57600080fd5b815167ffffffffffffffff80821115610fe357600080fd5b818401915084601f830112610ff757600080fd5b81518181111561100957611009610f8a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561104f5761104f610f8a565b8160405282815287602084870101111561106857600080fd5b611079836020830160208801610e27565b97965050505050505056fea164736f6c634300080f000a000000000000000000000000000000", + "from": "0xDeaDDEaDDeAdDeAdDEAdDEaddeAddEAdDEAd0001", + "gasLimit": 1100000, + "intent": "Deploy L1BlockCGT Implementation", + "to": "0x420000000000000000000000000000000000002C" + }, + { + "data": "0xcdcb760a9b217f1b15f9c04316d04d42f550c340c5b2ee8e5ae05cab4f8cd9cb21970ca400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000862608060405234801561001057600080fd5b50610842806100206000396000f3fe6080604052600436106100695760003560e01c806382e3702d1161004357806382e3702d146100f6578063c2b3e5ac14610136578063ecc704281461014957600080fd5b80633f827a5a1461009257806344df8e70146100bf57806354fd4d50146100d457600080fd5b3661008d5761008b33620186a0604051806020016040528060008152506101ae565b005b600080fd5b34801561009e57600080fd5b506100a7600181565b60405161ffff90911681526020015b60405180910390f35b3480156100cb57600080fd5b5061008b610284565b3480156100e057600080fd5b506100e96102bc565b6040516100b691906105dd565b34801561010257600080fd5b506101266101113660046105f7565b60006020819052908152604090205460ff1681565b60405190151581526020016100b6565b61008b61014436600461063f565b6101ae565b34801561015557600080fd5b506101a06001547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000001790565b6040519081526020016100b6565b73420000000000000000000000000000000000001573ffffffffffffffffffffffffffffffffffffffff1663213268496040518163ffffffff1660e01b8152600401602060405180830381865afa15801561020d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102319190610743565b801561023d5750600034115b15610274576040517fcdfaa11100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61027f83838361031c565b505050565b4761028e816104e0565b60405181907f7967de617a5ac1cc7eba2d6f37570a0135afa950d8bb77cdd35f0d0b4e85a16f90600090a250565b60606102f860408051808201909152600581527f312e322e30000000000000000000000000000000000000000000000000000000602082015290565b6040516020016103089190610765565b604051602081830303815290604052905090565b60006103b26040518060c001604052806103766001547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000001790565b815233602082015273ffffffffffffffffffffffffffffffffffffffff871660408201523460608201526080810186905260a00184905261050a565b600081815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055905073ffffffffffffffffffffffffffffffffffffffff84163361044d6001547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000001790565b7f02a52367d10742d8032712c1bb8e0144ff1ec5ffda1ed7d70bb05a27449550543487878760405161048294939291906107a6565b60405180910390a45050600180547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8082168301167fffff0000000000000000000000000000000000000000000000000000000000009091161790555050565b806040516104ed90610557565b6040518091039082f090508015801561027f573d6000803e3d6000fd5b80516020808301516040808501516060860151608087015160a0880151935160009761053a9790969591016107d6565b604051602081830303815290604052805190602001209050919050565b60088061082e83390190565b60005b8381101561057e578181015183820152602001610566565b8381111561058d576000848401525b50505050565b600081518084526105ab816020860160208601610563565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006105f06020830184610593565b9392505050565b60006020828403121561060957600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561065457600080fd5b833573ffffffffffffffffffffffffffffffffffffffff8116811461067857600080fd5b925060208401359150604084013567ffffffffffffffff8082111561069c57600080fd5b818601915086601f8301126106b057600080fd5b8135818111156106c2576106c2610610565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561070857610708610610565b8160405282815289602084870101111561072157600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b60006020828403121561075557600080fd5b815180151581146105f057600080fd5b60008251610777818460208701610563565b7f2b637573746f6d2d6761732d746f6b656e000000000000000000000000000000920191825250601101919050565b8481528360208201526080604082015260006107c56080830185610593565b905082606083015295945050505050565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a083015261082160c0830184610593565b9897505050505050505056fe608060405230fffea164736f6c634300080f000a000000000000000000000000000000000000000000000000000000000000", + "from": "0xDeaDDEaDDeAdDeAdDEAdDEaddeAddEAdDEAd0001", + "gasLimit": 750000, + "intent": "Deploy L2ToL1MessagePasserCGT Implementation", + "to": "0x420000000000000000000000000000000000002C" + }, + { + "data": "0xcdcb760a9b217f1b15f9c04316d04d42f550c340c5b2ee8e5ae05cab4f8cd9cb21970ca40000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000146a608060405234801561001057600080fd5b5061001961001e565b6100de565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156100dc576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61137d806100ed6000396000f3fe6080604052600436106100dd5760003560e01c80638da5cb5b1161007f578063d844471511610059578063d844471514610256578063dad544e01461026b578063f2fde38b14610280578063f46eccc4146102a057600080fd5b80638da5cb5b146101eb5780639065714714610216578063c6f69fbb1461023657600080fd5b806344df8e70116100bb57806344df8e701461016357806354fd4d501461016b578063550fcdc9146101c1578063715018a6146101d657600080fd5b80630c984832146100e25780633e47158c1461010457806340c10f1914610143575b600080fd5b3480156100ee57600080fd5b506101026100fd366004610ec7565b6102e0565b005b34801561011057600080fd5b5061011961035f565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561014f57600080fd5b5061010261015e366004610eeb565b61056a565b6101026106cc565b34801561017757600080fd5b506101b46040518060400160405280600581526020017f312e302e3100000000000000000000000000000000000000000000000000000081525081565b60405161013a9190610f17565b3480156101cd57600080fd5b506101b46107c2565b3480156101e257600080fd5b50610102610850565b3480156101f757600080fd5b5060335473ffffffffffffffffffffffffffffffffffffffff16610119565b34801561022257600080fd5b50610102610231366004611064565b610864565b34801561024257600080fd5b50610102610251366004610ec7565b610a29565b34801561026257600080fd5b506101b4610aa5565b34801561027757600080fd5b50610119610ab2565b34801561028c57600080fd5b5061010261029b366004610ec7565b610b2f565b3480156102ac57600080fd5b506102d06102bb366004610ec7565b60656020526000908152604090205460ff1681565b604051901515815260200161013a565b6102e8610be6565b73ffffffffffffffffffffffffffffffffffffffff811660008181526065602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055517f83b05b6735acd4b85e3bded8e72c851d1a87718f81e3c8e6f0c9d9a2baa88e469190a250565b60008061038a7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b905073ffffffffffffffffffffffffffffffffffffffff8116156103ad57919050565b6040518060400160405280601a81526020017f4f564d5f4c3143726f7373446f6d61696e4d657373656e6765720000000000008152505160026103f091906110da565b604080513060208201526000918101919091527f4f564d5f4c3143726f7373446f6d61696e4d657373656e676572000000000000919091179061044b906060015b604051602081830303815290604052805190602001205490565b14610482576040517f54e433cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080513060208201526001918101919091526000906104a490606001610431565b905073ffffffffffffffffffffffffffffffffffffffff811615610538578073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561050d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610531919061113e565b9250505090565b6040517f332144db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526065602052604090205460ff166105b3576040517f5fbc4ede00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081526004810182905273420000000000000000000000000000000000002990632e1a7d4d90602401600060405180830381600087803b15801561061957600080fd5b505af115801561062d573d6000803e3d6000fd5b50505050808260405161063f90610e99565b73ffffffffffffffffffffffffffffffffffffffff90911681526020016040518091039082f0905080158015610679573d6000803e3d6000fd5b505060405181815273ffffffffffffffffffffffffffffffffffffffff83169033907fec89d80a36947288037745287dde87d62cd8c141d5323130b3d26d97d84004c79060200160405180910390a35050565b3360009081526065602052604090205460ff16610715576040517f5fbc4ede00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73420000000000000000000000000000000000002973ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561077157600080fd5b505af1158015610785573d6000803e3d6000fd5b50506040513481523393507f875e07afd7ce17c6531b1a6b7b34829dcd8b7e6639448afbd6a8e29fa1422b829250602001905060405180910390a2565b606780546107cf9061115b565b80601f01602080910402602001604051908101604052809291908181526020018280546107fb9061115b565b80156108485780601f1061081d57610100808354040283529160200191610848565b820191906000526020600020905b81548152906001019060200180831161082b57829003601f168201915b505050505081565b610858610be6565b6108626000610c67565b565b600054610100900460ff16158080156108845750600054600160ff909116105b8061089e5750303b15801561089e575060005460ff166001145b61092f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561098d57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610995610cde565b61099d610d5f565b6109a684610b2f565b60666109b284826111fd565b5060676109bf83826111fd565b508015610a2357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b610a31610be6565b73ffffffffffffffffffffffffffffffffffffffff811660008181526065602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055517fdf6bf03dfab5b4ccec3ba95544b98d7ecc9d4b9293d8673e86cb6edb5ac0cb629190a250565b606680546107cf9061115b565b6000610abc61035f565b73ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2a919061113e565b905090565b610b37610be6565b73ffffffffffffffffffffffffffffffffffffffff8116610bda576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610926565b610be381610c67565b50565b60335473ffffffffffffffffffffffffffffffffffffffff163314610862576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610926565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b33610ce761035f565b73ffffffffffffffffffffffffffffffffffffffff1614158015610d28575033610d0f610ab2565b73ffffffffffffffffffffffffffffffffffffffff1614155b15610862576040517fc4050a2600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610100900460ff16610df6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610926565b610862600054610100900460ff16610e90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610926565b61086233610c67565b60598061131883390190565b73ffffffffffffffffffffffffffffffffffffffff81168114610be357600080fd5b600060208284031215610ed957600080fd5b8135610ee481610ea5565b9392505050565b60008060408385031215610efe57600080fd5b8235610f0981610ea5565b946020939093013593505050565b600060208083528351808285015260005b81811015610f4457858101830151858201604001528201610f28565b81811115610f56576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112610fca57600080fd5b813567ffffffffffffffff80821115610fe557610fe5610f8a565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561102b5761102b610f8a565b8160405283815286602085880101111561104457600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060006060848603121561107957600080fd5b833561108481610ea5565b9250602084013567ffffffffffffffff808211156110a157600080fd5b6110ad87838801610fb9565b935060408601359150808211156110c357600080fd5b506110d086828701610fb9565b9150509250925092565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611139577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500290565b60006020828403121561115057600080fd5b8151610ee481610ea5565b600181811c9082168061116f57607f821691505b6020821081036111a8577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f8211156111f857600081815260208120601f850160051c810160208610156111d55750805b601f850160051c820191505b818110156111f4578281556001016111e1565b5050505b505050565b815167ffffffffffffffff81111561121757611217610f8a565b61122b81611225845461115b565b846111ae565b602080601f83116001811461127e57600084156112485750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b1785556111f4565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156112cb578886015182559484019460019091019084016112ac565b508582101561130757878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b0190555056fe608060405260405160593803806059833981016040819052601e91602a565b806001600160a01b0316ff5b600060208284031215603b57600080fd5b81516001600160a01b0381168114605157600080fd5b939250505056fea164736f6c634300080f000a00000000000000000000000000000000000000000000", + "from": "0xDeaDDEaDDeAdDeAdDEAdDEaddeAddEAdDEAd0001", + "gasLimit": 1400000, + "intent": "Deploy LiquidityController Implementation", + "to": "0x420000000000000000000000000000000000002C" + }, + { + "data": "0xcdcb760a9b217f1b15f9c04316d04d42f550c340c5b2ee8e5ae05cab4f8cd9cb21970ca40000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000036d608060405234801561001057600080fd5b5061034d806100206000396000f3fe6080604052600436106100345760003560e01c80632e1a7d4d1461003957806354fd4d501461005b578063d0e30db0146100ba575b600080fd5b34801561004557600080fd5b5061005961005436600461025b565b6100c2565b005b34801561006757600080fd5b506100a46040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100b19190610274565b60405180910390f35b6100596101cb565b3373420000000000000000000000000000000000002a1461010f576040517f565369fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b47811115610149576040517f7b7f21e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80336040516101579061024f565b73ffffffffffffffffffffffffffffffffffffffff90911681526020016040518091039082f0905080158015610191573d6000803e3d6000fd5b505060405181815233907fb1cce8684b4ffa8667b4577654e61ee3480d661ee9c27522ac80e211f6bd4d259060200160405180910390a250565b3373420000000000000000000000000000000000002a14610218576040517f565369fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405134815233907f7ff07ce9a287649537e4b012e45cf012d90228b12e2b56bb03515a6b5436fcdf9060200160405180910390a2565b6059806102e883390190565b60006020828403121561026d57600080fd5b5035919050565b600060208083528351808285015260005b818110156102a157858101830151858201604001528201610285565b818111156102b3576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01692909201604001939250505056fe608060405260405160593803806059833981016040819052601e91602a565b806001600160a01b0316ff5b600060208284031215603b57600080fd5b81516001600160a01b0381168114605157600080fd5b939250505056fea164736f6c634300080f000a00000000000000000000000000000000000000", + "from": "0xDeaDDEaDDeAdDeAdDEAdDEaddeAddEAdDEAd0001", + "gasLimit": 400000, + "intent": "Deploy NativeAssetLiquidity Implementation", + "to": "0x420000000000000000000000000000000000002C" + }, + { + "data": "0x3659cfe6000000000000000000000000893c2ceeb71d38514daf67728d3ff1b213fc4b5f", + "from": "0x0000000000000000000000000000000000000000", + "gasLimit": 50000, + "intent": "Upgrade L2ProxyAdmin Implementation", + "to": "0x4200000000000000000000000000000000000018" + }, + { + "data": "0xcdcb760a9b217f1b15f9c04316d04d42f550c340c5b2ee8e5ae05cab4f8cd9cb21970ca400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000003f6c6104006040523480156200001257600080fd5b5060405162003c0c38038062003c0c8339810160408190526200003591620001d4565b30608090815281516001600160a01b0390811660a09081526020840151821660e09081526040850151831660c0908152606086015184166101009081529486015184166101209081529286015184166101409081529086015184166101609081529186015184166101809081529486015184166101a09081529286015184166101c09081529086015184166101e09081529186015184166102009081529486015184166102209081529286015184166102409081529086015184166102609081529186015184166102809081529486015184166102a09081529286015184166102c09081529086015184166102e090815291860151841661030090815294860151841661032090815292860151841661034090815290860151841661036052908501518316610380529284015182166103a05283015181166103c052910151166103e05262000407565b60405161036081016001600160401b0381118282101715620001b157634e487b7160e01b600052604160045260246000fd5b60405290565b80516001600160a01b0381168114620001cf57600080fd5b919050565b60006103608284031215620001e857600080fd5b620001f26200017f565b620001fd83620001b7565b81526200020d60208401620001b7565b60208201526200022060408401620001b7565b60408201526200023360608401620001b7565b60608201526200024660808401620001b7565b60808201526200025960a08401620001b7565b60a08201526200026c60c08401620001b7565b60c08201526200027f60e08401620001b7565b60e082015261010062000294818501620001b7565b90820152610120620002a8848201620001b7565b90820152610140620002bc848201620001b7565b90820152610160620002d0848201620001b7565b90820152610180620002e4848201620001b7565b908201526101a0620002f8848201620001b7565b908201526101c06200030c848201620001b7565b908201526101e062000320848201620001b7565b9082015261020062000334848201620001b7565b9082015261022062000348848201620001b7565b908201526102406200035c848201620001b7565b9082015261026062000370848201620001b7565b9082015261028062000384848201620001b7565b908201526102a062000398848201620001b7565b908201526102c0620003ac848201620001b7565b908201526102e0620003c0848201620001b7565b90820152610300620003d4848201620001b7565b90820152610320620003e8848201620001b7565b90820152610340620003fc848201620001b7565b908201529392505050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c0516102e05161030051610320516103405161036051610380516103a0516103c0516103e0516135c26200064a600039600081816104d801526119530152600081816104af0152611b10015260008181610486015261145301526000818161045d015261130501526000818161043401526113ec01526000818161040b0152611a560152600081816103e20152611a180152600081816103b901526119da015260008181610390015261199c0152600081816103670152611ad201526000818161033e0152611a9401526000818161031501526116e90152600081816102ec01526116690152600081816102c301526115ea01526000818161029a0152611915015260008181610271015261120501526000818161024801526118d701526000818161021f01526118b10152600081816101f601526117c00152600081816101ce015261179a0152600081816101a601526110e101526000818161017e015261116d01526000818161015601526114cd01526000818161012e0152610fdb01526000818160df0152610ed5015260008181610107015261175201526000818160ba01528181610ef701528181610ffd015281816111030152818161118f015281816112270152818161132701528181611475015281816114ef0152818161160c0152818161168b015261170b0152600061052b01526135c26000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806354fd4d5014610046578063615f64fe14610098578063d55ec6971461050a575b600080fd5b6100826040518060400160405280600581526020017f312e352e3000000000000000000000000000000000000000000000000000000081525081565b60405161008f9190612fd5565b60405180910390f35b604080516103608101825273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811682527f0000000000000000000000000000000000000000000000000000000000000000811660208301527f00000000000000000000000000000000000000000000000000000000000000008116828401527f0000000000000000000000000000000000000000000000000000000000000000811660608301527f0000000000000000000000000000000000000000000000000000000000000000811660808301527f0000000000000000000000000000000000000000000000000000000000000000811660a08301527f0000000000000000000000000000000000000000000000000000000000000000811660c08301527f0000000000000000000000000000000000000000000000000000000000000000811660e08301527f000000000000000000000000000000000000000000000000000000000000000081166101008301527f000000000000000000000000000000000000000000000000000000000000000081166101208301527f000000000000000000000000000000000000000000000000000000000000000081166101408301527f000000000000000000000000000000000000000000000000000000000000000081166101608301527f000000000000000000000000000000000000000000000000000000000000000081166101808301527f000000000000000000000000000000000000000000000000000000000000000081166101a08301527f000000000000000000000000000000000000000000000000000000000000000081166101c08301527f000000000000000000000000000000000000000000000000000000000000000081166101e08301527f000000000000000000000000000000000000000000000000000000000000000081166102008301527f000000000000000000000000000000000000000000000000000000000000000081166102208301527f000000000000000000000000000000000000000000000000000000000000000081166102408301527f000000000000000000000000000000000000000000000000000000000000000081166102608301527f000000000000000000000000000000000000000000000000000000000000000081166102808301527f000000000000000000000000000000000000000000000000000000000000000081166102a08301527f000000000000000000000000000000000000000000000000000000000000000081166102c08301527f000000000000000000000000000000000000000000000000000000000000000081166102e08301527f000000000000000000000000000000000000000000000000000000000000000081166103008301527f000000000000000000000000000000000000000000000000000000000000000081166103208301527f000000000000000000000000000000000000000000000000000000000000000016610340820152905161008f9190612fe8565b610512610514565b005b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163003610583576040517fada337cf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061058d61059b565b905061059881610e96565b50565b6105a3612e1f565b73420000000000000000000000000000000000001573ffffffffffffffffffffffffffffffffffffffff1663213268496040518163ffffffff1660e01b8152600401602060405180830381865afa158015610602573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106269190613236565b15156101608201526040517f47af267b0000000000000000000000000000000000000000000000000000000081527f494e5445524f50000000000000000000000000000000000000000000000000006004820152734200000000000000000000000000000000000015906347af267b90602401602060405180830381865afa9250505080156106f0575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526106ed91810190613236565b60015b61070157600061018082015261070a565b15156101808201525b806101800151801561072357506107216001611b34565b155b1561075a576040517fa27dcc8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051806020016040528073420000000000000000000000000000000000000773ffffffffffffffffffffffffffffffffffffffff16639fce812c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e8919061327a565b73ffffffffffffffffffffffffffffffffffffffff16905281526040805160208082018084527f7f46ddb200000000000000000000000000000000000000000000000000000000905291519091829173420000000000000000000000000000000000001091637f46ddb29160248086019291908187030181865afa158015610874573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610898919061327a565b73ffffffffffffffffffffffffffffffffffffffff168152508160200181905250604051806020016040528073420000000000000000000000000000000000001473ffffffffffffffffffffffffffffffffffffffff16637f46ddb26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610923573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610947919061327a565b73ffffffffffffffffffffffffffffffffffffffff168152508160400181905250604051806020016040528073420000000000000000000000000000000000001273ffffffffffffffffffffffffffffffffffffffff1663ee9a31a26040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f6919061327a565b73ffffffffffffffffffffffffffffffffffffffff1690526060820152604080518082018083527fee9a31a2000000000000000000000000000000000000000000000000000000009052905181907342000000000000000000000000000000000000179063ee9a31a2906044808501916020918187030181865afa158015610a82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa6919061327a565b73ffffffffffffffffffffffffffffffffffffffff16815260200173420000000000000000000000000000000000001773ffffffffffffffffffffffffffffffffffffffff16637d1d0c5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b449190613297565b90526080820152610b68734200000000000000000000000000000000000011611c97565b60a0820152610b8a734200000000000000000000000000000000000019611c97565b60c0820152610bac73420000000000000000000000000000000000001a611c97565b60e0820152610bce73420000000000000000000000000000000000001b611c97565b61010082015261016081015115610dbe57600073420000000000000000000000000000000000002a905060405180606001604052808273ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c72919061327a565b73ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1663d84447156040518163ffffffff1660e01b8152600401600060405180830381865afa158015610cd8573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610d1e9190810190613371565b81526020018273ffffffffffffffffffffffffffffffffffffffff1663550fcdc96040518163ffffffff1660e01b8152600401600060405180830381865afa158015610d6e573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610db49190810190613371565b9052610120830152505b600073420000000000000000000000000000000000002b73ffffffffffffffffffffffffffffffffffffffff1663d61a398b6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610e59575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610e569181019061327a565b60015b610e6557506000610e68565b90505b604080516020810190915273ffffffffffffffffffffffffffffffffffffffff909116815261014082015290565b80515160405173ffffffffffffffffffffffffffffffffffffffff9091166024820152610f9990734200000000000000000000000000000000000007907f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000090604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de80000000000000000000000000000000000000000000000000000000017905260006014611e78565b60208101515160405173ffffffffffffffffffffffffffffffffffffffff909116602482015261109f90734200000000000000000000000000000000000010907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000906044015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de800000000000000000000000000000000000000000000000000000000179052600080611e78565b60408082015151905173ffffffffffffffffffffffffffffffffffffffff909116602482015261112b90734200000000000000000000000000000000000014907f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000090604401611021565b60608101515160405173ffffffffffffffffffffffffffffffffffffffff90911660248201526111b790734200000000000000000000000000000000000012907f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000090604401611021565b6080810151805160209091015160405173ffffffffffffffffffffffffffffffffffffffff909216602483015260448201526112c990734200000000000000000000000000000000000017907f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000090606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fcd6dc6870000000000000000000000000000000000000000000000000000000017905260016000611e78565b80610160015115611410576101208101518051602082015160409283015192516113d29373420000000000000000000000000000000000002a937f0000000000000000000000000000000000000000000000000000000000000000937f00000000000000000000000000000000000000000000000000000000000000009361135493906024016133c2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9065714700000000000000000000000000000000000000000000000000000000179052600080611e78565b6114107342000000000000000000000000000000000000297f00000000000000000000000000000000000000000000000000000000000000006125d4565b6101408101515160405173ffffffffffffffffffffffffffffffffffffffff909116602482015261149d9073420000000000000000000000000000000000002b907f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000090604401611021565b60a08101518051602082015160409283015192516115ba93734200000000000000000000000000000000000011937f0000000000000000000000000000000000000000000000000000000000000000937f00000000000000000000000000000000000000000000000000000000000000009361151c939060240161343c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fb49dc741000000000000000000000000000000000000000000000000000000001790527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a006000611e78565b60c081015180516020820151604092830151925161163993734200000000000000000000000000000000000019937f0000000000000000000000000000000000000000000000000000000000000000937f00000000000000000000000000000000000000000000000000000000000000009361151c939060240161343c565b60e08101518051602082015160409283015192516116b89373420000000000000000000000000000000000001a937f0000000000000000000000000000000000000000000000000000000000000000937f00000000000000000000000000000000000000000000000000000000000000009361151c939060240161343c565b6101008101518051602082015160409283015192516117389373420000000000000000000000000000000000001b937f0000000000000000000000000000000000000000000000000000000000000000937f00000000000000000000000000000000000000000000000000000000000000009361151c939060240161343c565b61177673420000000000000000000000000000000000000f7f00000000000000000000000000000000000000000000000000000000000000006125d4565b6117e47342000000000000000000000000000000000000158261016001516117be577f00000000000000000000000000000000000000000000000000000000000000006125d4565b7f00000000000000000000000000000000000000000000000000000000000000006125d4565b8061016001511561188d576040517f46a4d7800000000000000000000000000000000000000000000000000000000081527f435553544f4d5f4741535f544f4b454e000000000000000000000000000000006004820152734200000000000000000000000000000000000015906346a4d78090602401600060405180830381600087803b15801561187457600080fd5b505af1158015611888573d6000803e3d6000fd5b505050505b6118fb7342000000000000000000000000000000000000168261016001516118d5577f00000000000000000000000000000000000000000000000000000000000000006125d4565b7f00000000000000000000000000000000000000000000000000000000000000006125d4565b6119397342000000000000000000000000000000000000187f00000000000000000000000000000000000000000000000000000000000000006125d4565b61197773420000000000000000000000000000000000002d7f00000000000000000000000000000000000000000000000000000000000000006125d4565b80610180015115611a7a576119c07342000000000000000000000000000000000000227f00000000000000000000000000000000000000000000000000000000000000006125d4565b6119fe7342000000000000000000000000000000000000237f00000000000000000000000000000000000000000000000000000000000000006125d4565b611a3c7342000000000000000000000000000000000000247f00000000000000000000000000000000000000000000000000000000000000006125d4565b611a7a7342000000000000000000000000000000000000257f00000000000000000000000000000000000000000000000000000000000000006125d4565b611ab87342000000000000000000000000000000000000207f00000000000000000000000000000000000000000000000000000000000000006125d4565b611af67342000000000000000000000000000000000000217f00000000000000000000000000000000000000000000000000000000000000006125d4565b61059873420000000000000000000000000000000000002c7f00000000000000000000000000000000000000000000000000000000000000006125d4565b6040517f204e1c7a00000000000000000000000000000000000000000000000000000000815273420000000000000000000000000000000000002d600482015260009081907342000000000000000000000000000000000000189063204e1c7a90602401602060405180830381865afa158015611bb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd9919061327a565b90508073ffffffffffffffffffffffffffffffffffffffff163b600003611c035750600092915050565b6040517f78ecabce0000000000000000000000000000000000000000000000000000000081526004810184905273420000000000000000000000000000000000002d906378ecabce90602401602060405180830381865afa158015611c6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c909190613236565b9392505050565b611cb860408051606081018252600080825260208201819052909182015290565b60008273ffffffffffffffffffffffffffffffffffffffff1663d0e12f906040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611d3f575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611d3c918101906134a5565b60015b611d4b57506000611d4e565b90505b600083905060405180606001604052808273ffffffffffffffffffffffffffffffffffffffff16630d9019e16040518163ffffffff1660e01b8152600401602060405180830381865afa158015611da9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dcd919061327a565b73ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1663d3e5792b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e579190613297565b8152602001836001811115611e6e57611e6e61340d565b9052949350505050565b611e81866128a7565b611ed4576040517fc3fe4a6600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871660048201526024015b60405180910390fd5b6040517f204e1c7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871660048201526000907342000000000000000000000000000000000000189063204e1c7a90602401602060405180830381865afa158015611f55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f79919061327a565b905073ffffffffffffffffffffffffffffffffffffffff81163b158015906120c657506120c68773ffffffffffffffffffffffffffffffffffffffff166354fd4d506040518163ffffffff1660e01b8152600401600060405180830381865afa158015611fea573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526120309190810190613371565b8773ffffffffffffffffffffffffffffffffffffffff166354fd4d506040518163ffffffff1660e01b8152600401600060405180830381865afa15801561207b573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526120c19190810190613371565b6128f0565b15612115576040517ff8ce5d1600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88166004820152602401611ecb565b6040517f3659cfe600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152881690633659cfe690602401600060405180830381600087803b15801561217e57600080fd5b505af1158015612192573d6000803e3d6000fd5b507ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009250505083811480156121c9575060ff831615155b15612200576040517f10415a2900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808414612394576040517fa6ed563e0000000000000000000000000000000000000000000000000000000081526004810185905260009073ffffffffffffffffffffffffffffffffffffffff8a169063a6ed563e90602401602060405180830381865afa158015612275573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122999190613297565b90506122a68460016134f5565b6122b49060ff16600861351a565b81901c60ff16156122f1576040517fc996d78400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061230160ff8616600861351a565b6040517f4e91db080000000000000000000000000000000000000000000000000000000081526004810188905260ff90911b198381166024830152915073ffffffffffffffffffffffffffffffffffffffff8b1690634e91db0890604401600060405180830381600087803b15801561237957600080fd5b505af115801561238d573d6000803e3d6000fd5b5050505050505b6040517fa6ed563e0000000000000000000000000000000000000000000000000000000081526004810182905260009073ffffffffffffffffffffffffffffffffffffffff8a169063a6ed563e90602401602060405180830381865afa158015612402573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124269190613297565b905060ff604082901c1615612467576040517fc996d78400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f4e91db08000000000000000000000000000000000000000000000000000000008152600481018390527fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008216602482015273ffffffffffffffffffffffffffffffffffffffff8a1690634e91db0890604401600060405180830381600087803b1580156124f757600080fd5b505af115801561250b573d6000803e3d6000fd5b50506040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c169250634f1ef2869150612563908b908a90600401613557565b6000604051808303816000875af1158015612582573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526125c89190810190613371565b50505050505050505050565b6125dd826128a7565b61262b576040517fc3fe4a6600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83166004820152602401611ecb565b6040517f204e1c7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831660048201526000907342000000000000000000000000000000000000189063204e1c7a90602401602060405180830381865afa1580156126ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d0919061327a565b905073ffffffffffffffffffffffffffffffffffffffff81163b158015906127d257506127d28373ffffffffffffffffffffffffffffffffffffffff166354fd4d506040518163ffffffff1660e01b8152600401600060405180830381865afa158015612741573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526127879190810190613371565b8373ffffffffffffffffffffffffffffffffffffffff166354fd4d506040518163ffffffff1660e01b8152600401600060405180830381865afa15801561207b573d6000803e3d6000fd5b15612821576040517ff8ce5d1600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401611ecb565b6040517f3659cfe600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152841690633659cfe690602401600060405180830381600087803b15801561288a57600080fd5b505af115801561289e573d6000803e3d6000fd5b50505050505050565b60007208400000000000000000000000000000000000600b83901c721fffffffffffffffffffffffffffffffffffff161480156128ea57506128e882612916565b155b92915050565b60006128fc838361297e565b158015611c90575061290e83836129ce565b159392505050565b600073ffffffffffffffffffffffffffffffffffffffff821673420000000000000000000000000000000000004214806128ea575073ffffffffffffffffffffffffffffffffffffffff82167342000000000000000000000000000000000000061492915050565b60008061298a84612a43565b9050600061299784612a43565b805183519192501480156129b2575080602001518260200151145b80156129c5575080604001518260400151145b95945050505050565b6000806129da84612a43565b905060006129e784612a43565b805183519192501180612a0d575080518251148015612a0d575080602001518260200151105b806129c5575080518251148015612a2b575080602001518260200151145b80156129c55750604090810151910151109392505050565b612a6760405180606001604052806000815260200160008152602001600081525090565b6000612aa8836040518060400160405280600181526020017f2e00000000000000000000000000000000000000000000000000000000000000815250612c0f565b9050600381511015612ae6576040517f9eda858c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612b4182600281518110612afe57612afe613586565b60200260200101516040518060400160405280600181526020017f2d00000000000000000000000000000000000000000000000000000000000000815250612c0f565b90506000612b9e82600081518110612b5b57612b5b613586565b60200260200101516040518060400160405280600181526020017f2b00000000000000000000000000000000000000000000000000000000000000815250612c0f565b90506040518060600160405280612bce85600081518110612bc157612bc1613586565b6020026020010151612cba565b8152602001612be985600181518110612bc157612bc1613586565b8152602001612c0483600081518110612bc157612bc1613586565b905295945050505050565b60606000612c1d8484612d32565b9050601f1960208201600183510160051b81018651838201526001845101845260005b825160608452818114612c855760405182820380825286601f8201165b8b850181015183820152870180612c5d5750600082820160200152603f018616810160405284525b875160209490940193019050818310612c4057505050508091508251612cb357602081019150600281510382525b5092915050565b80516000907f1999999999999999999999999999999999999999999999999999999999999999825b600181019050603060ff82870151160382851185600a028281019650600983118188108317171586029550505050828110612ce257505080612d2c5763101827966000526004601cfd5b50919050565b606082518251818111612e17576020850194506020840193506020604051019250846001828488010301600060208410612d6b57508286205b601f841660200360031b87515b8951818118831c612dcd578315612dab5783878c2014612dab5760018b019a50848b10612da55750612ddc565b50612d78565b858b038952998601996020909801978615612dcd57848b10612da55750612ddc565b5060018a019950838a10612d78575b5050604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08189030160051c8152602090970190525050505b505092915050565b604080516101c08101825260006101a08201818152825282516020808201855282825280840191909152835180820185528281528385015283518082018552828152606084015283518085019094528184528301529060808201908152602001612ea060408051606081018252600080825260208201819052909182015290565b8152602001612ec660408051606081018252600080825260208201819052909182015290565b8152602001612eec60408051606081018252600080825260208201819052909182015290565b8152602001612f1260408051606081018252600080825260208201819052909182015290565b8152604080516060808201835260008252602082810182905292820152910190815260408051602081810190925260008152910190815260006020820181905260409091015290565b60005b83811015612f76578181015183820152602001612f5e565b83811115612f85576000848401525b50505050565b60008151808452612fa3816020860160208601612f5b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611c906020830184612f8b565b815173ffffffffffffffffffffffffffffffffffffffff1681526103608101602083015161302e602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151613056604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015161307e606084018273ffffffffffffffffffffffffffffffffffffffff169052565b5060808301516130a6608084018273ffffffffffffffffffffffffffffffffffffffff169052565b5060a08301516130ce60a084018273ffffffffffffffffffffffffffffffffffffffff169052565b5060c08301516130f660c084018273ffffffffffffffffffffffffffffffffffffffff169052565b5060e083015161311e60e084018273ffffffffffffffffffffffffffffffffffffffff169052565b506101008381015173ffffffffffffffffffffffffffffffffffffffff90811691840191909152610120808501518216908401526101408085015182169084015261016080850151821690840152610180808501518216908401526101a0808501518216908401526101c0808501518216908401526101e08085015182169084015261020080850151821690840152610220808501518216908401526102408085015182169084015261026080850151821690840152610280808501518216908401526102a0808501518216908401526102c0808501518216908401526102e0808501518216908401526103008085015182169084015261032080850151821690840152610340808501519182168185015290612e17565b60006020828403121561324857600080fd5b81518015158114611c9057600080fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461059857600080fd5b60006020828403121561328c57600080fd5b8151611c9081613258565b6000602082840312156132a957600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600067ffffffffffffffff808411156132fa576132fa6132b0565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715613340576133406132b0565b8160405280935085815286868601111561335957600080fd5b613367866020830187612f5b565b5050509392505050565b60006020828403121561338357600080fd5b815167ffffffffffffffff81111561339a57600080fd5b8201601f810184136133ab57600080fd5b6133ba848251602084016132df565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff841681526060602082015260006133f16060830185612f8b565b82810360408401526134038185612f8b565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff84168152602081018390526060810160028310613497577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b826040830152949350505050565b6000602082840312156134b757600080fd5b815160028110611c9057600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff84168060ff03821115613512576135126134c6565b019392505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613552576135526134c6565b500290565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006133ba6040830184612f8b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea164736f6c634300080f000a0000000000000000000000002a5a3eabb9fd571a3af0299eebdf8eaafe29a914000000000000000000000000250af3f400cf8aac8d410c90f1ba3968dd87df96000000000000000000000000547d0fba434877d7237d511cf87fabe2ee26b152000000000000000000000000ac8538a2e6a1f5dfbb1c4b8bd97cefb2997824a8000000000000000000000000b178cdaa8336f25624a63c049edb5af7ca36c2da000000000000000000000000c053fc0155bf8bda5b568af53276e538f0ea4d58000000000000000000000000716ead0cf3e7ff86a02d4f8cb41a6d14922fa8330000000000000000000000006a97c5d55a21265326150efe12fc30fb21cbff56000000000000000000000000a0734858ba5085ff6db493021a0f8c54605c2cda00000000000000000000000027e51b2254433a3284d9ba73ea551c397db2a124000000000000000000000000a0f4ffff79a0a3e039fcbef738751efba8e84f96000000000000000000000000f43862b9d814bb4504158ceccb0b74b31265e4ee000000000000000000000000893c2ceeb71d38514daf67728d3ff1b213fc4b5f000000000000000000000000f7bed7215eef1003fac426682cf2edeb958569f7000000000000000000000000f7bed7215eef1003fac426682cf2edeb958569f7000000000000000000000000eddf416c7159387cc6df3015700f79cfb891137300000000000000000000000070de55bc0bfbc52c5d0cca1da5816c2428886a34000000000000000000000000bec660b456b84a081e90af29be43385bda5bf7b600000000000000000000000093a8a7a9c98cb998d88dba3373a6c7f8ee2e8a4600000000000000000000000037dc2fe754052a9fac35f17282599fafbeb9f423000000000000000000000000784f1fae11f1c3a9c413423fe1b370a3636b8d560000000000000000000000002f76618143d9d2731c56778192d3893864b423d7000000000000000000000000dda87ef358082ab3f4ba8982290c671efdc4d1590000000000000000000000008256398a687e740006098445b05d5ca46b7be21e0000000000000000000000008684ccc5bf484ec242dbc7119004a83533934a79000000000000000000000000906835344844979ffd3a752eaa23728d513db00b000000000000000000000000e35b194efc4907f383b7e3b87f4c2c339ce239f60000000000000000000000000000000000000000", + "from": "0xDeaDDEaDDeAdDeAdDEAdDEaddeAddEAdDEAd0001", + "gasLimit": 4500000, + "intent": "Deploy L2ContractsManager Implementation", + "to": "0x420000000000000000000000000000000000002C" + }, + { + "data": "0x7c36f37e000000000000000000000000a723d436b320015ebead5e589c49e03131b80ee3", + "from": "0xDeaDDEaDDeAdDeAdDEAdDEaddeAddEAdDEAd0001", + "gasLimit": 3000000, + "intent": "L2ProxyAdmin Upgrade Predeploys", + "to": "0x4200000000000000000000000000000000000018" + } + ] +} \ No newline at end of file From b75a8ad3738f4caed6d157ecd454877d81a5740e Mon Sep 17 00:00:00 2001 From: Maurelian Date: Thu, 2 Apr 2026 00:40:13 +0000 Subject: [PATCH 11/31] revert(nuts): keep check-nut-locks name to minimize diff --- .circleci/continue/main.yml | 6 +++--- justfile | 4 ++-- op-core/nuts/README.md | 4 ++-- ops/scripts/{nut-lock-check => check-nut-locks}/main.go | 0 4 files changed, 7 insertions(+), 7 deletions(-) rename ops/scripts/{nut-lock-check => check-nut-locks}/main.go (100%) diff --git a/.circleci/continue/main.yml b/.circleci/continue/main.yml index 70f3391e7246c..2ee3a0404a9c3 100644 --- a/.circleci/continue/main.yml +++ b/.circleci/continue/main.yml @@ -1660,7 +1660,7 @@ jobs: command: | just check-op-geth-version - nut-lock-check: + check-nut-locks: docker: - image: <> resource_class: small @@ -1671,7 +1671,7 @@ jobs: - run: name: check nut locks command: | - go run ./ops/scripts/nut-lock-check + go run ./ops/scripts/check-nut-locks go-tests: parameters: @@ -2612,7 +2612,7 @@ workflows: - check-op-geth-version: context: - circleci-repo-readonly-authenticated-github-token - - nut-lock-check: + - check-nut-locks: context: - circleci-repo-readonly-authenticated-github-token - fuzz-golang: diff --git a/justfile b/justfile index 9e0ee254fe87f..700037eb8cfdb 100644 --- a/justfile +++ b/justfile @@ -349,8 +349,8 @@ build-rust-release: cd rollup-boost && cargo build --release -p rollup-boost --bin rollup-boost # Checks that locked NUT bundles have not been modified. -nut-lock-check: - go run ./ops/scripts/nut-lock-check +check-nut-locks: + go run ./ops/scripts/check-nut-locks # Snapshots current-upgrade-bundle.json as a fork's NUT bundle and updates the lock file. nut-snapshot-for fork: diff --git a/op-core/nuts/README.md b/op-core/nuts/README.md index 3f5aca90683bf..6cb619f64cce8 100644 --- a/op-core/nuts/README.md +++ b/op-core/nuts/README.md @@ -46,13 +46,13 @@ Once a fork's bundle is finalized (e.g., governance post written), lock it: 1. Ensure the `commit` field is populated (run `just nut-snapshot-for ` if needed) 2. Manually edit `fork_lock.toml` to add `locked = true` for the fork -3. CI (`nut-lock-check`) will enforce that the locked fork's hash cannot change +3. CI (`check-nut-locks`) will enforce that the locked fork's hash cannot change To unlock (e.g., for a critical fix), manually set `locked = false` in `fork_lock.toml`. ### CI checks -- **`nut-lock-check`** — Verifies all bundle hashes match their lock entries, all entries have a commit, locked forks haven't changed vs the base branch, and every `*_nut_bundle.json` file has a corresponding lock entry. Runs in CI on every PR. +- **`check-nut-locks`** — Verifies all bundle hashes match their lock entries, all entries have a commit, locked forks haven't changed vs the base branch, and every `*_nut_bundle.json` file has a corresponding lock entry. Runs in CI on every PR. - **`nut-bundle-check`** — Verifies `current-upgrade-bundle.json` is up-to-date with the contracts. Runs as part of `just check` in `packages/contracts-bedrock/`. ## fork_lock.toml schema diff --git a/ops/scripts/nut-lock-check/main.go b/ops/scripts/check-nut-locks/main.go similarity index 100% rename from ops/scripts/nut-lock-check/main.go rename to ops/scripts/check-nut-locks/main.go From 5908e9f02dd98a7870727378847babba6a773af7 Mon Sep 17 00:00:00 2001 From: Maurelian Date: Thu, 2 Apr 2026 01:25:57 +0000 Subject: [PATCH 12/31] docs(nuts): remove contracts-bedrock concerns from README The current-upgrade-bundle.json and nut-bundle-check are contracts-bedrock concerns, not relevant to the op-core/nuts package. --- op-core/nuts/README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/op-core/nuts/README.md b/op-core/nuts/README.md index 6cb619f64cce8..257bfaadf657c 100644 --- a/op-core/nuts/README.md +++ b/op-core/nuts/README.md @@ -8,7 +8,6 @@ Network Upgrade Transaction (NUT) bundles define the L2 deposit transactions tha |------|---------| | `fork_lock.toml` | Lock file mapping fork names to bundle paths, sha256 hashes, and source commits | | `op-node/rollup/derive/_nut_bundle.json` | Embedded bundle consumed by op-node at fork activation | -| `packages/contracts-bedrock/snapshots/upgrades/current-upgrade-bundle.json` | Generated bundle (not committed, regenerated from contracts) | ## Workflow @@ -53,7 +52,6 @@ To unlock (e.g., for a critical fix), manually set `locked = false` in `fork_loc ### CI checks - **`check-nut-locks`** — Verifies all bundle hashes match their lock entries, all entries have a commit, locked forks haven't changed vs the base branch, and every `*_nut_bundle.json` file has a corresponding lock entry. Runs in CI on every PR. -- **`nut-bundle-check`** — Verifies `current-upgrade-bundle.json` is up-to-date with the contracts. Runs as part of `just check` in `packages/contracts-bedrock/`. ## fork_lock.toml schema From 63acba741feb5fcfa956798c5afea85c5b18065b Mon Sep 17 00:00:00 2001 From: Maurelian Date: Thu, 2 Apr 2026 15:55:57 +0000 Subject: [PATCH 13/31] refactor(nuts): remove locking mechanism Hash verification and code review are sufficient protection. The locked field, base-branch comparison, and update guard added unnecessary complexity. --- op-core/nuts/README.md | 13 +------- op-core/nuts/lock.go | 12 +------ ops/scripts/check-nut-locks/main.go | 48 ---------------------------- ops/scripts/nut-snapshot-for/main.go | 5 --- 4 files changed, 2 insertions(+), 76 deletions(-) diff --git a/op-core/nuts/README.md b/op-core/nuts/README.md index 257bfaadf657c..9162ed854fe57 100644 --- a/op-core/nuts/README.md +++ b/op-core/nuts/README.md @@ -39,19 +39,9 @@ Checks that: Requires `forge` for the provenance check (step 2). -### Locking a fork - -Once a fork's bundle is finalized (e.g., governance post written), lock it: - -1. Ensure the `commit` field is populated (run `just nut-snapshot-for ` if needed) -2. Manually edit `fork_lock.toml` to add `locked = true` for the fork -3. CI (`check-nut-locks`) will enforce that the locked fork's hash cannot change - -To unlock (e.g., for a critical fix), manually set `locked = false` in `fork_lock.toml`. - ### CI checks -- **`check-nut-locks`** — Verifies all bundle hashes match their lock entries, all entries have a commit, locked forks haven't changed vs the base branch, and every `*_nut_bundle.json` file has a corresponding lock entry. Runs in CI on every PR. +- **`check-nut-locks`** — Verifies all bundle hashes match their lock entries, all entries have a commit, and every `*_nut_bundle.json` file has a corresponding lock entry. Runs in CI on every PR. ## fork_lock.toml schema @@ -60,6 +50,5 @@ To unlock (e.g., for a critical fix), manually set `locked = false` in `fork_loc bundle = "op-node/rollup/derive/_nut_bundle.json" # repo-relative path hash = "sha256:" # sha256 of bundle contents commit = "" # commit that produced the bundle -locked = true # prevents nut-snapshot-for from overwriting (optional, default false) ``` diff --git a/op-core/nuts/lock.go b/op-core/nuts/lock.go index 66c7161cff291..fc99ef2baf8e8 100644 --- a/op-core/nuts/lock.go +++ b/op-core/nuts/lock.go @@ -15,7 +15,6 @@ type ForkLockEntry struct { Bundle string `toml:"bundle"` Hash string `toml:"hash"` Commit string `toml:"commit"` - Locked bool `toml:"locked,omitempty"` } // ForkLock is the full contents of fork_lock.toml, keyed by fork name. @@ -43,15 +42,6 @@ func ReadLockFile(dir string) (ForkLock, string, error) { return locks, lockPath, nil } -// ParseLockFile parses fork_lock.toml content from raw bytes. -func ParseLockFile(data []byte) (ForkLock, error) { - var locks ForkLock - if _, err := toml.Decode(string(data), &locks); err != nil { - return nil, fmt.Errorf("parsing fork lock data: %w", err) - } - return locks, nil -} - // WriteLockFile writes fork_lock.toml back to disk with a header comment. func WriteLockFile(lockPath string, locks ForkLock) error { f, err := os.Create(lockPath) @@ -63,7 +53,7 @@ func WriteLockFile(lockPath string, locks ForkLock) error { if _, err := fmt.Fprintln(f, "# NUT Bundle Fork Lock"); err != nil { return err } - if _, err := fmt.Fprintln(f, "# To update a locked fork, set locked = false, run: just nut-snapshot-for , then re-lock."); err != nil { + if _, err := fmt.Fprintln(f, "# To update a bundle, run: just nut-snapshot-for "); err != nil { return err } if _, err := fmt.Fprintln(f); err != nil { diff --git a/ops/scripts/check-nut-locks/main.go b/ops/scripts/check-nut-locks/main.go index 1fea659702b40..1cfe2f32c2924 100644 --- a/ops/scripts/check-nut-locks/main.go +++ b/ops/scripts/check-nut-locks/main.go @@ -5,7 +5,6 @@ import ( "encoding/hex" "fmt" "os" - "os/exec" "path/filepath" "strings" @@ -44,48 +43,6 @@ func checkAllBundlesLocked(root string, lockedBundles map[string]bool) error { return nil } -// checkLockedForksUnchanged verifies that locked forks have not had their -// hash or bundle path changed compared to the base branch. -func checkLockedForksUnchanged(root string, locks nuts.ForkLock) error { - baseLocks, err := readBaseBranchLockFile(root) - if err != nil { - return fmt.Errorf("reading base branch fork_lock.toml: %w", err) - } - for fork, entry := range locks { - baseEntry, existed := baseLocks[fork] - if !existed { - continue // new fork not in base branch, nothing to compare - } - if !baseEntry.Locked { - continue // wasn't locked on base, changes are fine - } - // Fork was locked on base branch — hash and bundle path must not change - if entry.Hash != baseEntry.Hash { - return fmt.Errorf("fork %s is locked but its hash changed: base=%s current=%s; "+ - "locked forks cannot be updated without first unlocking", fork, baseEntry.Hash, entry.Hash) - } - if entry.Bundle != baseEntry.Bundle { - return fmt.Errorf("fork %s is locked but its bundle path changed: base=%s current=%s", - fork, baseEntry.Bundle, entry.Bundle) - } - } - return nil -} - -// readBaseBranchLockFile reads fork_lock.toml from the base branch via git show. -func readBaseBranchLockFile(root string) (nuts.ForkLock, error) { - for _, base := range []string{"origin/develop", "origin/main"} { - cmd := exec.Command("git", "show", base+":op-core/nuts/fork_lock.toml") - cmd.Dir = root - out, err := cmd.Output() - if err != nil { - continue - } - return nuts.ParseLockFile(out) - } - return nil, fmt.Errorf("fork_lock.toml not found on base branch") -} - func main() { if err := run("."); err != nil { fmt.Fprintf(os.Stderr, "error: %v\n", err) @@ -134,11 +91,6 @@ func run(dir string) error { fmt.Printf("fork %s: bundle hash OK\n", fork) } - // Check locked forks haven't changed vs base branch - if err := checkLockedForksUnchanged(root, locks); err != nil { - return err - } - // Reverse check: verify all NUT bundle JSONs have a lock entry if err := checkAllBundlesLocked(root, lockedBundles); err != nil { return err diff --git a/ops/scripts/nut-snapshot-for/main.go b/ops/scripts/nut-snapshot-for/main.go index 1777e81031ae2..4651ed92a130b 100644 --- a/ops/scripts/nut-snapshot-for/main.go +++ b/ops/scripts/nut-snapshot-for/main.go @@ -71,11 +71,6 @@ func run(fork forks.Name) error { return err } - if existing, ok := locks[string(fork)]; ok && existing.Locked { - return fmt.Errorf("fork %q is locked in fork_lock.toml and cannot be updated; "+ - "to unlock, manually set locked = false in %s", fork, lockPath) - } - locks[string(fork)] = nuts.ForkLockEntry{ Bundle: bundleRel, Hash: hashStr, From 9a2f3bccfa6023243c0454f54589bf4fa55fdb14 Mon Sep 17 00:00:00 2001 From: Maurelian Date: Thu, 2 Apr 2026 16:10:14 +0000 Subject: [PATCH 14/31] fix(nuts): update lock file comments and add provenance CI Update fork_lock.toml header with reviewer guidance. Add nut-provenance-verify to CI, gated on op-core/nuts/ changes. --- .circleci/continue/main.yml | 21 +++++++++++++++++++++ op-core/nuts/fork_lock.toml | 6 ++++-- op-core/nuts/lock.go | 10 ++++++++-- 3 files changed, 33 insertions(+), 4 deletions(-) diff --git a/.circleci/continue/main.yml b/.circleci/continue/main.yml index 2ee3a0404a9c3..7fe531142e12c 100644 --- a/.circleci/continue/main.yml +++ b/.circleci/continue/main.yml @@ -1673,6 +1673,24 @@ jobs: command: | go run ./ops/scripts/check-nut-locks + nut-provenance-verify: + docker: + - image: <> + resource_class: 2xlarge + steps: + - utils/checkout-with-mise: + enable-mise-cache: true + - install-contracts-dependencies + - check-changed: + patterns: op-core/nuts + - run: + name: verify NUT bundle provenance + command: | + for fork in $(yq -p toml -o json op-core/nuts/fork_lock.toml | jq -r 'keys[]'); do + echo "Verifying $fork..." + go run ./ops/scripts/nut-provenance-verify "$fork" + done + go-tests: parameters: notify: @@ -2615,6 +2633,9 @@ workflows: - check-nut-locks: context: - circleci-repo-readonly-authenticated-github-token + - nut-provenance-verify: + context: + - circleci-repo-readonly-authenticated-github-token - fuzz-golang: name: fuzz-golang-<> on_changes: <> diff --git a/op-core/nuts/fork_lock.toml b/op-core/nuts/fork_lock.toml index 540203277ea67..fb96997386f07 100644 --- a/op-core/nuts/fork_lock.toml +++ b/op-core/nuts/fork_lock.toml @@ -1,5 +1,7 @@ -# NUT Bundle Fork Lock -# To update a locked fork, set locked = false, run: just nut-snapshot-for , then re-lock. +# NUT Bundle Lock File +# To update a fork's bundle, run: just nut-snapshot-for +# REVIEWER NOTE: Changes to this file affect which NUT bundles are embedded +# into op-node for hardfork activations. Review carefully. [karst] bundle = "op-node/rollup/derive/karst_nut_bundle.json" diff --git a/op-core/nuts/lock.go b/op-core/nuts/lock.go index fc99ef2baf8e8..07de3d6d06648 100644 --- a/op-core/nuts/lock.go +++ b/op-core/nuts/lock.go @@ -50,10 +50,16 @@ func WriteLockFile(lockPath string, locks ForkLock) error { } defer f.Close() - if _, err := fmt.Fprintln(f, "# NUT Bundle Fork Lock"); err != nil { + if _, err := fmt.Fprintln(f, "# NUT Bundle Lock File"); err != nil { return err } - if _, err := fmt.Fprintln(f, "# To update a bundle, run: just nut-snapshot-for "); err != nil { + if _, err := fmt.Fprintln(f, "# To update a fork's bundle, run: just nut-snapshot-for "); err != nil { + return err + } + if _, err := fmt.Fprintln(f, "# REVIEWER NOTE: Changes to this file affect which NUT bundles are embedded"); err != nil { + return err + } + if _, err := fmt.Fprintln(f, "# into op-node for hardfork activations. Review carefully."); err != nil { return err } if _, err := fmt.Fprintln(f); err != nil { From 6a92a23a93e58564b10f909bd3e7b86ddd266a4f Mon Sep 17 00:00:00 2001 From: Maurelian Date: Thu, 2 Apr 2026 16:15:22 +0000 Subject: [PATCH 15/31] fix(ci): only verify provenance for changed forks Compare each fork's hash against origin/develop to skip unchanged ones. --- .circleci/continue/main.yml | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/.circleci/continue/main.yml b/.circleci/continue/main.yml index 7fe531142e12c..25926de395de9 100644 --- a/.circleci/continue/main.yml +++ b/.circleci/continue/main.yml @@ -1686,9 +1686,16 @@ jobs: - run: name: verify NUT bundle provenance command: | + git show origin/develop:op-core/nuts/fork_lock.toml > /tmp/base_lock.toml 2>/dev/null || true for fork in $(yq -p toml -o json op-core/nuts/fork_lock.toml | jq -r 'keys[]'); do - echo "Verifying $fork..." - go run ./ops/scripts/nut-provenance-verify "$fork" + base_hash=$(yq -p toml ".${fork}.hash" /tmp/base_lock.toml 2>/dev/null || echo "") + curr_hash=$(yq -p toml ".${fork}.hash" op-core/nuts/fork_lock.toml) + if [ "$base_hash" != "$curr_hash" ]; then + echo "Verifying $fork (hash changed)..." + go run ./ops/scripts/nut-provenance-verify "$fork" + else + echo "Skipping $fork (unchanged)" + fi done go-tests: From 542ebff0e0d19af4c6dbb069bd617144e9f8ca0c Mon Sep 17 00:00:00 2001 From: Maurelian Date: Thu, 2 Apr 2026 16:18:34 +0000 Subject: [PATCH 16/31] docs(ci): add comment explaining provenance verify logic --- .circleci/continue/main.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.circleci/continue/main.yml b/.circleci/continue/main.yml index 25926de395de9..d52d80be94da6 100644 --- a/.circleci/continue/main.yml +++ b/.circleci/continue/main.yml @@ -1686,6 +1686,9 @@ jobs: - run: name: verify NUT bundle provenance command: | + # For each fork whose hash changed vs develop, check out the recorded + # commit, regenerate the bundle, and verify it matches byte-for-byte. + # Unchanged forks are skipped to avoid expensive forge rebuilds. git show origin/develop:op-core/nuts/fork_lock.toml > /tmp/base_lock.toml 2>/dev/null || true for fork in $(yq -p toml -o json op-core/nuts/fork_lock.toml | jq -r 'keys[]'); do base_hash=$(yq -p toml ".${fork}.hash" /tmp/base_lock.toml 2>/dev/null || echo "") From 84910a036795ef52b541ad3fcba03f6e26c4cbbd Mon Sep 17 00:00:00 2001 From: Maurelian Date: Thu, 2 Apr 2026 16:47:51 +0000 Subject: [PATCH 17/31] fix(nuts): move reviewer comment to bottom of fork_lock.toml --- op-core/nuts/fork_lock.toml | 9 ++++----- op-core/nuts/lock.go | 17 +++++++---------- 2 files changed, 11 insertions(+), 15 deletions(-) diff --git a/op-core/nuts/fork_lock.toml b/op-core/nuts/fork_lock.toml index fb96997386f07..5296b83a30633 100644 --- a/op-core/nuts/fork_lock.toml +++ b/op-core/nuts/fork_lock.toml @@ -1,9 +1,8 @@ -# NUT Bundle Lock File -# To update a fork's bundle, run: just nut-snapshot-for -# REVIEWER NOTE: Changes to this file affect which NUT bundles are embedded -# into op-node for hardfork activations. Review carefully. - [karst] bundle = "op-node/rollup/derive/karst_nut_bundle.json" hash = "sha256:6145f900384f0aa2cdc63f2267a747b8c958bf1c09bacce8c29037c3eaa75d44" commit = "c9b648345b4e3b89f7f6fb242e77576bf0c5c668" + +# To update a fork's bundle, run: just nut-snapshot-for +# REVIEWER NOTE: Changes to this file affect which NUT bundles are embedded +# into op-node for hardfork activations. Review carefully. diff --git a/op-core/nuts/lock.go b/op-core/nuts/lock.go index 07de3d6d06648..fa70c23b64e94 100644 --- a/op-core/nuts/lock.go +++ b/op-core/nuts/lock.go @@ -42,7 +42,7 @@ func ReadLockFile(dir string) (ForkLock, string, error) { return locks, lockPath, nil } -// WriteLockFile writes fork_lock.toml back to disk with a header comment. +// WriteLockFile writes fork_lock.toml back to disk with a trailing comment. func WriteLockFile(lockPath string, locks ForkLock) error { f, err := os.Create(lockPath) if err != nil { @@ -50,7 +50,12 @@ func WriteLockFile(lockPath string, locks ForkLock) error { } defer f.Close() - if _, err := fmt.Fprintln(f, "# NUT Bundle Lock File"); err != nil { + enc := toml.NewEncoder(f) + if err := enc.Encode(locks); err != nil { + return fmt.Errorf("writing fork lock file: %w", err) + } + + if _, err := fmt.Fprintln(f); err != nil { return err } if _, err := fmt.Fprintln(f, "# To update a fork's bundle, run: just nut-snapshot-for "); err != nil { @@ -62,13 +67,5 @@ func WriteLockFile(lockPath string, locks ForkLock) error { if _, err := fmt.Fprintln(f, "# into op-node for hardfork activations. Review carefully."); err != nil { return err } - if _, err := fmt.Fprintln(f); err != nil { - return err - } - - enc := toml.NewEncoder(f) - if err := enc.Encode(locks); err != nil { - return fmt.Errorf("writing fork lock file: %w", err) - } return nil } From 5c9c41f930949be0b5105595c9f919917788b4b8 Mon Sep 17 00:00:00 2001 From: Maurelian Date: Thu, 2 Apr 2026 13:26:58 -0400 Subject: [PATCH 18/31] fix: move part of comment to top --- op-core/nuts/fork_lock.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/op-core/nuts/fork_lock.toml b/op-core/nuts/fork_lock.toml index 5296b83a30633..dc67d326c23e5 100644 --- a/op-core/nuts/fork_lock.toml +++ b/op-core/nuts/fork_lock.toml @@ -1,8 +1,8 @@ +# To update a fork's bundle, run: just nut-snapshot-for [karst] bundle = "op-node/rollup/derive/karst_nut_bundle.json" hash = "sha256:6145f900384f0aa2cdc63f2267a747b8c958bf1c09bacce8c29037c3eaa75d44" commit = "c9b648345b4e3b89f7f6fb242e77576bf0c5c668" -# To update a fork's bundle, run: just nut-snapshot-for # REVIEWER NOTE: Changes to this file affect which NUT bundles are embedded # into op-node for hardfork activations. Review carefully. From 0c6b670ff3de1e921ce9669fe805e481e9e22c7c Mon Sep 17 00:00:00 2001 From: Maurelian Date: Thu, 2 Apr 2026 17:35:17 +0000 Subject: [PATCH 19/31] fix(nuts): verify lock file commits exist in git history --- ops/scripts/check-nut-locks/main.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ops/scripts/check-nut-locks/main.go b/ops/scripts/check-nut-locks/main.go index 1cfe2f32c2924..58b0479dc1f3b 100644 --- a/ops/scripts/check-nut-locks/main.go +++ b/ops/scripts/check-nut-locks/main.go @@ -5,6 +5,7 @@ import ( "encoding/hex" "fmt" "os" + "os/exec" "path/filepath" "strings" @@ -88,6 +89,12 @@ func run(dir string) error { "run 'just nut-snapshot-for %s' to populate the commit field", fork, fork) } + cmd := exec.Command("git", "cat-file", "-t", entry.Commit) + cmd.Dir = root + if err := cmd.Run(); err != nil { + return fmt.Errorf("fork %s: commit %s not found in git history", fork, entry.Commit[:12]) + } + fmt.Printf("fork %s: bundle hash OK\n", fork) } From ace326ad3553705ee893f630e1788c7dc48a67a6 Mon Sep 17 00:00:00 2001 From: Maurelian Date: Thu, 2 Apr 2026 13:46:44 -0400 Subject: [PATCH 20/31] broken demo: show that a manually edited bundle breaks check-nut-locks --- op-node/rollup/derive/karst_nut_bundle.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/op-node/rollup/derive/karst_nut_bundle.json b/op-node/rollup/derive/karst_nut_bundle.json index 9a75d36666995..f030595ea6596 100644 --- a/op-node/rollup/derive/karst_nut_bundle.json +++ b/op-node/rollup/derive/karst_nut_bundle.json @@ -4,7 +4,7 @@ }, "transactions": [ { - "data": "0x9b217f1b15f9c04316d04d42f550c340c5b2ee8e5ae05cab4f8cd9cb21970ca4608060405234801561001057600080fd5b506105b8806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806354fd4d5014610046578063cdcb760a14610098578063e0145f5c146100d0575b600080fd5b6100826040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161008f91906103f7565b60405180910390f35b6100ab6100a6366004610440565b6100ea565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161008f565b734e59b44847b379578588920ca78fbf26c0b4956c6100ab565b8051602080830191909120604080517fff00000000000000000000000000000000000000000000000000000000000000818501527f4e59b44847b379578588920ca78fbf26c0b4956c000000000000000000000000602182015260358101869052605580820184905282518083039091018152607590910190915280519201919091206000919073ffffffffffffffffffffffffffffffffffffffff81163b156101d85760405173ffffffffffffffffffffffffffffffffffffffff8216907ffbe57d889a7f75a4e0c7da304cd158fcaddc4b925cdd9f4cfb115c0f9e48009b90600090a291506103779050565b600080734e59b44847b379578588920ca78fbf26c0b4956c73ffffffffffffffffffffffffffffffffffffffff168787604051602001610219929190610519565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526102519161053f565b6000604051808303816000865af19150503d806000811461028e576040519150601f19603f3d011682016040523d82523d6000602084013e610293565b606091505b5091509150806102a29061055b565b60601c94508115806102e057508273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561032257806040517fcb0fc6f700000000000000000000000000000000000000000000000000000000815260040161031991906103f7565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff167f9b7318127ed899f286ea9ddd7925ed8ad24a682b6a825c3b5b3d88a3f00bc1d28860405161036a91815260200190565b60405180910390a2505050505b92915050565b60005b83811015610398578181015183820152602001610380565b838111156103a7576000848401525b50505050565b600081518084526103c581602086016020860161037d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061040a60208301846103ad565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561045357600080fd5b82359150602083013567ffffffffffffffff8082111561047257600080fd5b818501915085601f83011261048657600080fd5b81358181111561049857610498610411565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156104de576104de610411565b816040528281528860208487010111156104f757600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b8281526000825161053181602085016020870161037d565b919091016020019392505050565b6000825161055181846020870161037d565b9190910192915050565b6000815160208301517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808216935060148310156105a35780818460140360031b1b83161693505b50505091905056fea164736f6c634300080f000a", + "data": "0xdeaddeaddead", "from": "0xDeaDDEaDDeAdDeAdDEAdDEaddeAddEAdDEAd0001", "gasLimit": 600000, "intent": "ConditionalDeployer Deployment", @@ -228,4 +228,4 @@ "to": "0x4200000000000000000000000000000000000018" } ] -} \ No newline at end of file +} From bc967a963ec6c276dc161508f2ee925b54173c9c Mon Sep 17 00:00:00 2001 From: Maurelian Date: Thu, 2 Apr 2026 13:47:25 -0400 Subject: [PATCH 21/31] Revert "broken demo: show that a manually edited bundle breaks check-nut-locks" This reverts commit ace326ad3553705ee893f630e1788c7dc48a67a6. --- op-node/rollup/derive/karst_nut_bundle.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/op-node/rollup/derive/karst_nut_bundle.json b/op-node/rollup/derive/karst_nut_bundle.json index f030595ea6596..9a75d36666995 100644 --- a/op-node/rollup/derive/karst_nut_bundle.json +++ b/op-node/rollup/derive/karst_nut_bundle.json @@ -4,7 +4,7 @@ }, "transactions": [ { - "data": "0xdeaddeaddead", + "data": "0x9b217f1b15f9c04316d04d42f550c340c5b2ee8e5ae05cab4f8cd9cb21970ca4608060405234801561001057600080fd5b506105b8806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806354fd4d5014610046578063cdcb760a14610098578063e0145f5c146100d0575b600080fd5b6100826040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161008f91906103f7565b60405180910390f35b6100ab6100a6366004610440565b6100ea565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161008f565b734e59b44847b379578588920ca78fbf26c0b4956c6100ab565b8051602080830191909120604080517fff00000000000000000000000000000000000000000000000000000000000000818501527f4e59b44847b379578588920ca78fbf26c0b4956c000000000000000000000000602182015260358101869052605580820184905282518083039091018152607590910190915280519201919091206000919073ffffffffffffffffffffffffffffffffffffffff81163b156101d85760405173ffffffffffffffffffffffffffffffffffffffff8216907ffbe57d889a7f75a4e0c7da304cd158fcaddc4b925cdd9f4cfb115c0f9e48009b90600090a291506103779050565b600080734e59b44847b379578588920ca78fbf26c0b4956c73ffffffffffffffffffffffffffffffffffffffff168787604051602001610219929190610519565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526102519161053f565b6000604051808303816000865af19150503d806000811461028e576040519150601f19603f3d011682016040523d82523d6000602084013e610293565b606091505b5091509150806102a29061055b565b60601c94508115806102e057508273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561032257806040517fcb0fc6f700000000000000000000000000000000000000000000000000000000815260040161031991906103f7565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff167f9b7318127ed899f286ea9ddd7925ed8ad24a682b6a825c3b5b3d88a3f00bc1d28860405161036a91815260200190565b60405180910390a2505050505b92915050565b60005b83811015610398578181015183820152602001610380565b838111156103a7576000848401525b50505050565b600081518084526103c581602086016020860161037d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061040a60208301846103ad565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561045357600080fd5b82359150602083013567ffffffffffffffff8082111561047257600080fd5b818501915085601f83011261048657600080fd5b81358181111561049857610498610411565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156104de576104de610411565b816040528281528860208487010111156104f757600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b8281526000825161053181602085016020870161037d565b919091016020019392505050565b6000825161055181846020870161037d565b9190910192915050565b6000815160208301517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808216935060148310156105a35780818460140360031b1b83161693505b50505091905056fea164736f6c634300080f000a", "from": "0xDeaDDEaDDeAdDeAdDEAdDEaddeAddEAdDEAd0001", "gasLimit": 600000, "intent": "ConditionalDeployer Deployment", @@ -228,4 +228,4 @@ "to": "0x4200000000000000000000000000000000000018" } ] -} +} \ No newline at end of file From debc9ef7072bd46956bd6c336830f4ae5c0c0a31 Mon Sep 17 00:00:00 2001 From: Maurelian Date: Thu, 2 Apr 2026 13:57:07 -0400 Subject: [PATCH 22/31] broken demo: show that a manually edited lock commit breaks check-nut-locks --- op-core/nuts/fork_lock.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/op-core/nuts/fork_lock.toml b/op-core/nuts/fork_lock.toml index dc67d326c23e5..8e4dde4115262 100644 --- a/op-core/nuts/fork_lock.toml +++ b/op-core/nuts/fork_lock.toml @@ -2,7 +2,7 @@ [karst] bundle = "op-node/rollup/derive/karst_nut_bundle.json" hash = "sha256:6145f900384f0aa2cdc63f2267a747b8c958bf1c09bacce8c29037c3eaa75d44" - commit = "c9b648345b4e3b89f7f6fb242e77576bf0c5c668" + commit = "deaddeaddead" # REVIEWER NOTE: Changes to this file affect which NUT bundles are embedded # into op-node for hardfork activations. Review carefully. From b7b76f5f39a66f5985a25606e3ae3311b7a88581 Mon Sep 17 00:00:00 2001 From: Maurelian Date: Thu, 2 Apr 2026 13:59:22 -0400 Subject: [PATCH 23/31] Revert "broken demo: show that a manually edited lock commit breaks check-nut-locks" This reverts commit debc9ef7072bd46956bd6c336830f4ae5c0c0a31. --- op-core/nuts/fork_lock.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/op-core/nuts/fork_lock.toml b/op-core/nuts/fork_lock.toml index 8e4dde4115262..dc67d326c23e5 100644 --- a/op-core/nuts/fork_lock.toml +++ b/op-core/nuts/fork_lock.toml @@ -2,7 +2,7 @@ [karst] bundle = "op-node/rollup/derive/karst_nut_bundle.json" hash = "sha256:6145f900384f0aa2cdc63f2267a747b8c958bf1c09bacce8c29037c3eaa75d44" - commit = "deaddeaddead" + commit = "c9b648345b4e3b89f7f6fb242e77576bf0c5c668" # REVIEWER NOTE: Changes to this file affect which NUT bundles are embedded # into op-node for hardfork activations. Review carefully. From 85745bcf717712f3c511f4d2faa450f230e2a6e2 Mon Sep 17 00:00:00 2001 From: Maurelian Date: Thu, 2 Apr 2026 14:11:50 -0400 Subject: [PATCH 24/31] docs(op-core/nuts): clarify that just nut-provenance-verify does not run in CI --- op-core/nuts/fork_lock.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/op-core/nuts/fork_lock.toml b/op-core/nuts/fork_lock.toml index dc67d326c23e5..48abf4beb91dc 100644 --- a/op-core/nuts/fork_lock.toml +++ b/op-core/nuts/fork_lock.toml @@ -6,3 +6,5 @@ # REVIEWER NOTE: Changes to this file affect which NUT bundles are embedded # into op-node for hardfork activations. Review carefully. +# You can verify the provenance of a bundle using `just nut-provenance-verify `, +# this check is resource intensive, so it does not run in CI. From d173d60db8529902c096fb939c2daec7e1093215 Mon Sep 17 00:00:00 2001 From: Maurelian Date: Thu, 2 Apr 2026 18:31:31 +0000 Subject: [PATCH 25/31] fix(nuts): record merge-base commit to survive squash-merge nut-snapshot-for now records git merge-base HEAD origin/develop instead of HEAD, so the commit persists after squash-merge. check-nut-locks verifies the commit is an ancestor of origin/develop. --- op-core/nuts/fork_lock.toml | 6 ++---- ops/scripts/check-nut-locks/main.go | 4 ++-- ops/scripts/nut-snapshot-for/main.go | 7 ++++--- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/op-core/nuts/fork_lock.toml b/op-core/nuts/fork_lock.toml index 48abf4beb91dc..2a8013f6e2827 100644 --- a/op-core/nuts/fork_lock.toml +++ b/op-core/nuts/fork_lock.toml @@ -1,10 +1,8 @@ -# To update a fork's bundle, run: just nut-snapshot-for [karst] bundle = "op-node/rollup/derive/karst_nut_bundle.json" hash = "sha256:6145f900384f0aa2cdc63f2267a747b8c958bf1c09bacce8c29037c3eaa75d44" - commit = "c9b648345b4e3b89f7f6fb242e77576bf0c5c668" + commit = "cba7aba0c98aae22720b21c3a023990a486cb6e0" +# To update a fork's bundle, run: just nut-snapshot-for # REVIEWER NOTE: Changes to this file affect which NUT bundles are embedded # into op-node for hardfork activations. Review carefully. -# You can verify the provenance of a bundle using `just nut-provenance-verify `, -# this check is resource intensive, so it does not run in CI. diff --git a/ops/scripts/check-nut-locks/main.go b/ops/scripts/check-nut-locks/main.go index 58b0479dc1f3b..6e85ebccf8ead 100644 --- a/ops/scripts/check-nut-locks/main.go +++ b/ops/scripts/check-nut-locks/main.go @@ -89,10 +89,10 @@ func run(dir string) error { "run 'just nut-snapshot-for %s' to populate the commit field", fork, fork) } - cmd := exec.Command("git", "cat-file", "-t", entry.Commit) + cmd := exec.Command("git", "merge-base", "--is-ancestor", entry.Commit, "origin/develop") cmd.Dir = root if err := cmd.Run(); err != nil { - return fmt.Errorf("fork %s: commit %s not found in git history", fork, entry.Commit[:12]) + return fmt.Errorf("fork %s: commit %s is not an ancestor of origin/develop", fork, entry.Commit[:12]) } fmt.Printf("fork %s: bundle hash OK\n", fork) diff --git a/ops/scripts/nut-snapshot-for/main.go b/ops/scripts/nut-snapshot-for/main.go index 4651ed92a130b..74321045d2a29 100644 --- a/ops/scripts/nut-snapshot-for/main.go +++ b/ops/scripts/nut-snapshot-for/main.go @@ -56,12 +56,13 @@ func run(fork forks.Name) error { hash := sha256.Sum256(content) hashStr := "sha256:" + hex.EncodeToString(hash[:]) - // Get current git commit. - commitCmd := exec.Command("git", "rev-parse", "HEAD") + // Record the merge-base with develop (not HEAD) so the commit survives + // squash-merge. Contracts must be merged to develop before snapshotting. + commitCmd := exec.Command("git", "merge-base", "HEAD", "origin/develop") commitCmd.Dir = root commitOut, err := commitCmd.Output() if err != nil { - return fmt.Errorf("getting git commit: %w", err) + return fmt.Errorf("finding merge-base with origin/develop (fetch first?): %w", err) } commit := strings.TrimSpace(string(commitOut)) From faccb279f87049196903acbd8c7d5df28fad2afb Mon Sep 17 00:00:00 2001 From: Maurelian Date: Thu, 2 Apr 2026 18:52:41 +0000 Subject: [PATCH 26/31] docs(nuts): rearrange lock file comments, document merge-base workflow refactor(nuts): use multiline strings in WriteLockFile --- op-core/nuts/README.md | 4 +++- op-core/nuts/fork_lock.toml | 4 +++- op-core/nuts/lock.go | 25 ++++++++++++++----------- 3 files changed, 20 insertions(+), 13 deletions(-) diff --git a/op-core/nuts/README.md b/op-core/nuts/README.md index 9162ed854fe57..372cb699544a2 100644 --- a/op-core/nuts/README.md +++ b/op-core/nuts/README.md @@ -24,7 +24,9 @@ just generate-nut-bundle just nut-snapshot-for ``` -This copies `current-upgrade-bundle.json` to `op-node/rollup/derive/_nut_bundle.json` and updates `fork_lock.toml` with the sha256 hash and current git commit. +This copies `current-upgrade-bundle.json` to `op-node/rollup/derive/_nut_bundle.json` and updates `fork_lock.toml` with the sha256 hash and the merge-base commit with `origin/develop`. + +**Important:** The recorded commit is the merge-base with develop, not HEAD. This ensures the commit survives squash-merge. Contract changes must be merged to develop in a separate PR *before* snapshotting the bundle. ### Verifying a bundle diff --git a/op-core/nuts/fork_lock.toml b/op-core/nuts/fork_lock.toml index 2a8013f6e2827..5d31c05997f2c 100644 --- a/op-core/nuts/fork_lock.toml +++ b/op-core/nuts/fork_lock.toml @@ -1,8 +1,10 @@ +# To update a fork's bundle, run: just nut-snapshot-for +# Contract changes must be merged to develop before snapshotting. + [karst] bundle = "op-node/rollup/derive/karst_nut_bundle.json" hash = "sha256:6145f900384f0aa2cdc63f2267a747b8c958bf1c09bacce8c29037c3eaa75d44" commit = "cba7aba0c98aae22720b21c3a023990a486cb6e0" -# To update a fork's bundle, run: just nut-snapshot-for # REVIEWER NOTE: Changes to this file affect which NUT bundles are embedded # into op-node for hardfork activations. Review carefully. diff --git a/op-core/nuts/lock.go b/op-core/nuts/lock.go index fa70c23b64e94..b804538734b05 100644 --- a/op-core/nuts/lock.go +++ b/op-core/nuts/lock.go @@ -42,7 +42,7 @@ func ReadLockFile(dir string) (ForkLock, string, error) { return locks, lockPath, nil } -// WriteLockFile writes fork_lock.toml back to disk with a trailing comment. +// WriteLockFile writes fork_lock.toml back to disk with a header comment. func WriteLockFile(lockPath string, locks ForkLock) error { f, err := os.Create(lockPath) if err != nil { @@ -50,21 +50,24 @@ func WriteLockFile(lockPath string, locks ForkLock) error { } defer f.Close() + _, err = fmt.Fprint(f, `# To update a fork's bundle, run: just nut-snapshot-for +# Contract changes must be merged to develop before snapshotting. + +`) + if err != nil { + return err + } + enc := toml.NewEncoder(f) if err := enc.Encode(locks); err != nil { return fmt.Errorf("writing fork lock file: %w", err) } - if _, err := fmt.Fprintln(f); err != nil { - return err - } - if _, err := fmt.Fprintln(f, "# To update a fork's bundle, run: just nut-snapshot-for "); err != nil { - return err - } - if _, err := fmt.Fprintln(f, "# REVIEWER NOTE: Changes to this file affect which NUT bundles are embedded"); err != nil { - return err - } - if _, err := fmt.Fprintln(f, "# into op-node for hardfork activations. Review carefully."); err != nil { + _, err = fmt.Fprint(f, ` +# REVIEWER NOTE: Changes to this file affect which NUT bundles are embedded +# into op-node for hardfork activations. Review carefully. +`) + if err != nil { return err } return nil From a4986412ebb90abfe19b07d5640c2c12780bd6e2 Mon Sep 17 00:00:00 2001 From: Maurelian Date: Thu, 2 Apr 2026 18:52:50 +0000 Subject: [PATCH 27/31] refactor(ci): extract provenance verify logic to bash script --- .circleci/continue/main.yml | 16 +--------------- ops/scripts/nut-provenance-verify-changed.sh | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 15 deletions(-) create mode 100755 ops/scripts/nut-provenance-verify-changed.sh diff --git a/.circleci/continue/main.yml b/.circleci/continue/main.yml index d52d80be94da6..e458eb37b0db1 100644 --- a/.circleci/continue/main.yml +++ b/.circleci/continue/main.yml @@ -1685,21 +1685,7 @@ jobs: patterns: op-core/nuts - run: name: verify NUT bundle provenance - command: | - # For each fork whose hash changed vs develop, check out the recorded - # commit, regenerate the bundle, and verify it matches byte-for-byte. - # Unchanged forks are skipped to avoid expensive forge rebuilds. - git show origin/develop:op-core/nuts/fork_lock.toml > /tmp/base_lock.toml 2>/dev/null || true - for fork in $(yq -p toml -o json op-core/nuts/fork_lock.toml | jq -r 'keys[]'); do - base_hash=$(yq -p toml ".${fork}.hash" /tmp/base_lock.toml 2>/dev/null || echo "") - curr_hash=$(yq -p toml ".${fork}.hash" op-core/nuts/fork_lock.toml) - if [ "$base_hash" != "$curr_hash" ]; then - echo "Verifying $fork (hash changed)..." - go run ./ops/scripts/nut-provenance-verify "$fork" - else - echo "Skipping $fork (unchanged)" - fi - done + command: ./ops/scripts/nut-provenance-verify-changed.sh go-tests: parameters: diff --git a/ops/scripts/nut-provenance-verify-changed.sh b/ops/scripts/nut-provenance-verify-changed.sh new file mode 100755 index 0000000000000..725fa1efaef59 --- /dev/null +++ b/ops/scripts/nut-provenance-verify-changed.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Verifies provenance for all forks whose bundle hash changed vs develop. +# For each fork whose hash changed, checks out the recorded commit, +# regenerates the bundle, and verifies it matches byte-for-byte. +# Unchanged forks are skipped to avoid expensive forge rebuilds. + +git show origin/develop:op-core/nuts/fork_lock.toml > /tmp/base_lock.toml 2>/dev/null || true +for fork in $(yq -p toml -o json op-core/nuts/fork_lock.toml | jq -r 'keys[]'); do + base_hash=$(yq -p toml ".${fork}.hash" /tmp/base_lock.toml 2>/dev/null || echo "") + curr_hash=$(yq -p toml ".${fork}.hash" op-core/nuts/fork_lock.toml) + if [ "$base_hash" != "$curr_hash" ]; then + echo "Verifying $fork (hash changed)..." + go run ./ops/scripts/nut-provenance-verify "$fork" + else + echo "Skipping $fork (unchanged)" + fi +done From 6afd773ff1b8887702cb479ccfe2da87420e5237 Mon Sep 17 00:00:00 2001 From: Maurelian Date: Thu, 2 Apr 2026 18:55:57 +0000 Subject: [PATCH 28/31] test(nuts): add tests for check-nut-locks validation Extract validateEntry for testability. Tests cover: matching hash, hash mismatch, empty commit, and modified bundle detection. --- justfile | 3 +- ops/scripts/check-nut-locks/main.go | 55 ++++++++++++++-------- ops/scripts/check-nut-locks/main_test.go | 60 ++++++++++++++++++++++++ 3 files changed, 98 insertions(+), 20 deletions(-) create mode 100644 ops/scripts/check-nut-locks/main_test.go diff --git a/justfile b/justfile index 700037eb8cfdb..305d9024874b5 100644 --- a/justfile +++ b/justfile @@ -6,7 +6,7 @@ PYTHON := env('PYTHON', 'python3') TEST_TIMEOUT := env('TEST_TIMEOUT', '10m') -TEST_PKGS := "./op-alt-da/... ./op-batcher/... ./op-chain-ops/... ./op-node/... ./op-proposer/... ./op-challenger/... ./op-faucet/... ./op-dispute-mon/... ./op-conductor/... ./op-program/... ./op-service/... ./op-supervisor/... ./op-test-sequencer/... ./op-fetcher/... ./op-e2e/system/... ./op-e2e/e2eutils/... ./op-e2e/opgeth/... ./op-e2e/interop/... ./op-e2e/actions/altda ./op-e2e/actions/batcher ./op-e2e/actions/derivation ./op-e2e/actions/helpers ./op-e2e/actions/interop ./op-e2e/actions/proofs ./op-e2e/actions/proposer ./op-e2e/actions/safedb ./op-e2e/actions/sequencer ./op-e2e/actions/sync ./op-e2e/actions/upgrades ./packages/contracts-bedrock/scripts/checks/... ./op-dripper/... ./op-devstack/... ./op-deployer/pkg/deployer/artifacts/... ./op-deployer/pkg/deployer/broadcaster/... ./op-deployer/pkg/deployer/clean/... ./op-deployer/pkg/deployer/integration_test/ ./op-deployer/pkg/deployer/integration_test/cli/... ./op-deployer/pkg/deployer/standard/... ./op-deployer/pkg/deployer/state/... ./op-deployer/pkg/deployer/verify/... ./op-sync-tester/... ./op-supernode/..." +TEST_PKGS := "./op-alt-da/... ./op-batcher/... ./op-chain-ops/... ./op-node/... ./op-proposer/... ./op-challenger/... ./op-faucet/... ./op-dispute-mon/... ./op-conductor/... ./op-program/... ./op-service/... ./op-supervisor/... ./op-test-sequencer/... ./op-fetcher/... ./op-e2e/system/... ./op-e2e/e2eutils/... ./op-e2e/opgeth/... ./op-e2e/interop/... ./op-e2e/actions/altda ./op-e2e/actions/batcher ./op-e2e/actions/derivation ./op-e2e/actions/helpers ./op-e2e/actions/interop ./op-e2e/actions/proofs ./op-e2e/actions/proposer ./op-e2e/actions/safedb ./op-e2e/actions/sequencer ./op-e2e/actions/sync ./op-e2e/actions/upgrades ./packages/contracts-bedrock/scripts/checks/... ./ops/scripts/... ./op-dripper/... ./op-devstack/... ./op-deployer/pkg/deployer/artifacts/... ./op-deployer/pkg/deployer/broadcaster/... ./op-deployer/pkg/deployer/clean/... ./op-deployer/pkg/deployer/integration_test/ ./op-deployer/pkg/deployer/integration_test/cli/... ./op-deployer/pkg/deployer/standard/... ./op-deployer/pkg/deployer/state/... ./op-deployer/pkg/deployer/verify/... ./op-sync-tester/... ./op-supernode/..." FRAUD_PROOF_TEST_PKGS := "./op-e2e/faultproofs/..." @@ -360,6 +360,7 @@ nut-snapshot-for fork: nut-provenance-verify fork: go run ./ops/scripts/nut-provenance-verify {{fork}} + # Checks that TODO comments have corresponding issues. todo-checker: ./ops/scripts/todo-checker.sh diff --git a/ops/scripts/check-nut-locks/main.go b/ops/scripts/check-nut-locks/main.go index 6e85ebccf8ead..146fde4919b3a 100644 --- a/ops/scripts/check-nut-locks/main.go +++ b/ops/scripts/check-nut-locks/main.go @@ -44,6 +44,38 @@ func checkAllBundlesLocked(root string, lockedBundles map[string]bool) error { return nil } +// validateEntry checks a single fork lock entry against its bundle file content. +func validateEntry(fork string, entry nuts.ForkLockEntry, bundleContent []byte) error { + hash := sha256.Sum256(bundleContent) + actual := "sha256:" + hex.EncodeToString(hash[:]) + + expectedHash := strings.TrimSpace(entry.Hash) + if actual != expectedHash { + return fmt.Errorf( + "bundle hash mismatch for fork %s: expected=%s actual=%s. "+ + "If this change is intentional, update the hash in op-core/nuts/fork_lock.toml", + fork, expectedHash, actual, + ) + } + + if entry.Commit == "" { + return fmt.Errorf("fork %s has no commit recorded; "+ + "run 'just nut-snapshot-for %s' to populate the commit field", fork, fork) + } + + return nil +} + +// checkCommitAncestry verifies that a commit is an ancestor of origin/develop. +func checkCommitAncestry(root, fork string, commit string) error { + cmd := exec.Command("git", "merge-base", "--is-ancestor", commit, "origin/develop") + cmd.Dir = root + if err := cmd.Run(); err != nil { + return fmt.Errorf("fork %s: commit %s is not an ancestor of origin/develop", fork, commit[:12]) + } + return nil +} + func main() { if err := run("."); err != nil { fmt.Fprintf(os.Stderr, "error: %v\n", err) @@ -72,27 +104,12 @@ func run(dir string) error { return fmt.Errorf("fork %s: reading bundle %s: %w", fork, entry.Bundle, err) } - hash := sha256.Sum256(content) - actual := "sha256:" + hex.EncodeToString(hash[:]) - - expectedHash := strings.TrimSpace(entry.Hash) - if actual != expectedHash { - return fmt.Errorf( - "bundle hash mismatch for fork %s: expected=%s actual=%s. "+ - "If this change is intentional, update the hash in op-core/nuts/fork_lock.toml", - fork, expectedHash, actual, - ) - } - - if entry.Commit == "" { - return fmt.Errorf("fork %s has no commit recorded; "+ - "run 'just nut-snapshot-for %s' to populate the commit field", fork, fork) + if err := validateEntry(fork, entry, content); err != nil { + return err } - cmd := exec.Command("git", "merge-base", "--is-ancestor", entry.Commit, "origin/develop") - cmd.Dir = root - if err := cmd.Run(); err != nil { - return fmt.Errorf("fork %s: commit %s is not an ancestor of origin/develop", fork, entry.Commit[:12]) + if err := checkCommitAncestry(root, fork, entry.Commit); err != nil { + return err } fmt.Printf("fork %s: bundle hash OK\n", fork) diff --git a/ops/scripts/check-nut-locks/main_test.go b/ops/scripts/check-nut-locks/main_test.go new file mode 100644 index 0000000000000..0621d297da46b --- /dev/null +++ b/ops/scripts/check-nut-locks/main_test.go @@ -0,0 +1,60 @@ +package main + +import ( + "crypto/sha256" + "encoding/hex" + "testing" + + "github.com/ethereum-optimism/optimism/op-core/nuts" + "github.com/stretchr/testify/require" +) + +func hashOf(data []byte) string { + h := sha256.Sum256(data) + return "sha256:" + hex.EncodeToString(h[:]) +} + +func TestValidateEntry_MatchingHash(t *testing.T) { + content := []byte(`{"transactions":[]}`) + entry := nuts.ForkLockEntry{ + Bundle: "op-node/rollup/derive/test_nut_bundle.json", + Hash: hashOf(content), + Commit: "abc123", + } + err := validateEntry("test", entry, content) + require.NoError(t, err) +} + +func TestValidateEntry_HashMismatch(t *testing.T) { + content := []byte(`{"transactions":[]}`) + entry := nuts.ForkLockEntry{ + Bundle: "op-node/rollup/derive/test_nut_bundle.json", + Hash: "sha256:0000000000000000000000000000000000000000000000000000000000000000", + Commit: "abc123", + } + err := validateEntry("test", entry, content) + require.ErrorContains(t, err, "bundle hash mismatch") +} + +func TestValidateEntry_EmptyCommit(t *testing.T) { + content := []byte(`{"transactions":[]}`) + entry := nuts.ForkLockEntry{ + Bundle: "op-node/rollup/derive/test_nut_bundle.json", + Hash: hashOf(content), + Commit: "", + } + err := validateEntry("test", entry, content) + require.ErrorContains(t, err, "no commit recorded") +} + +func TestValidateEntry_ModifiedBundle(t *testing.T) { + original := []byte(`{"transactions":[{"intent":"deploy"}]}`) + modified := []byte(`{"transactions":[{"intent":"modified"}]}`) + entry := nuts.ForkLockEntry{ + Bundle: "op-node/rollup/derive/test_nut_bundle.json", + Hash: hashOf(original), + Commit: "abc123", + } + err := validateEntry("test", entry, modified) + require.ErrorContains(t, err, "bundle hash mismatch") +} From b7b7c7c10afb866b4330cbbe37ab3f76305147f4 Mon Sep 17 00:00:00 2001 From: Maurelian Date: Thu, 2 Apr 2026 19:04:20 +0000 Subject: [PATCH 29/31] test(nuts): add tests for nut-provenance-verify Inject bundleGenerator to test the worktree checkout and comparison flow without requiring forge. Covers matching, mismatched, and generator-modified bundle scenarios. --- ops/scripts/nut-provenance-verify/main.go | 19 ++- .../nut-provenance-verify/main_test.go | 142 ++++++++++++++++++ 2 files changed, 154 insertions(+), 7 deletions(-) create mode 100644 ops/scripts/nut-provenance-verify/main_test.go diff --git a/ops/scripts/nut-provenance-verify/main.go b/ops/scripts/nut-provenance-verify/main.go index 61409a0aa52ee..2b13aa00cc87d 100644 --- a/ops/scripts/nut-provenance-verify/main.go +++ b/ops/scripts/nut-provenance-verify/main.go @@ -15,6 +15,9 @@ import ( opservice "github.com/ethereum-optimism/optimism/op-service" ) +// bundleGenerator generates a NUT bundle in the given contracts directory. +type bundleGenerator func(contractsDir string) error + func main() { if len(os.Args) != 2 { fmt.Fprintf(os.Stderr, "usage: nut-provenance-verify \n") @@ -70,7 +73,13 @@ func run(fork forks.Name) error { } fmt.Printf("Verifying bundle provenance from commit %s...\n", entry.Commit[:12]) - if err := verifyFromCommit(root, entry); err != nil { + if err := verifyFromCommit(root, entry, func(contractsDir string) error { + cmd := exec.Command("just", "generate-nut-bundle") + cmd.Dir = contractsDir + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + return cmd.Run() + }); err != nil { return fmt.Errorf("provenance verification: %w", err) } @@ -80,7 +89,7 @@ func run(fork forks.Name) error { // verifyFromCommit creates a temporary worktree at the recorded commit, // regenerates the NUT bundle, and compares it against the locked bundle. -func verifyFromCommit(root string, entry nuts.ForkLockEntry) error { +func verifyFromCommit(root string, entry nuts.ForkLockEntry, generate bundleGenerator) error { worktreeDir, err := os.MkdirTemp("", "verify-nuts-*") if err != nil { return fmt.Errorf("creating temp dir: %w", err) @@ -102,11 +111,7 @@ func verifyFromCommit(root string, entry nuts.ForkLockEntry) error { // Generate NUT bundle in the worktree. contractsDir := filepath.Join(worktreeDir, "packages", "contracts-bedrock") - genCmd := exec.Command("just", "generate-nut-bundle") - genCmd.Dir = contractsDir - genCmd.Stdout = os.Stdout - genCmd.Stderr = os.Stderr - if err := genCmd.Run(); err != nil { + if err := generate(contractsDir); err != nil { return fmt.Errorf("generating NUT bundle at commit %s: %w", entry.Commit[:12], err) } diff --git a/ops/scripts/nut-provenance-verify/main_test.go b/ops/scripts/nut-provenance-verify/main_test.go new file mode 100644 index 0000000000000..7c70812b8de26 --- /dev/null +++ b/ops/scripts/nut-provenance-verify/main_test.go @@ -0,0 +1,142 @@ +package main + +import ( + "os" + "os/exec" + "path/filepath" + "testing" + + "github.com/ethereum-optimism/optimism/op-core/nuts" + "github.com/stretchr/testify/require" +) + +// initGitRepo creates a bare-minimum git repo with an initial commit +// and returns the repo root and the commit SHA. +func initGitRepo(t *testing.T) (string, string) { + t.Helper() + dir := t.TempDir() + + cmds := [][]string{ + {"git", "init"}, + {"git", "config", "user.email", "test@test.com"}, + {"git", "config", "user.name", "Test"}, + {"git", "config", "commit.gpgsign", "false"}, + {"git", "commit", "--allow-empty", "-m", "init"}, + } + for _, args := range cmds { + cmd := exec.Command(args[0], args[1:]...) + cmd.Dir = dir + out, err := cmd.CombinedOutput() + require.NoError(t, err, "cmd %v failed: %s", args, out) + } + + cmd := exec.Command("git", "rev-parse", "HEAD") + cmd.Dir = dir + out, err := cmd.Output() + require.NoError(t, err) + + return dir, string(out[:len(out)-1]) // trim newline +} + +// writeFileInRepo creates a file at a relative path within the repo and commits it. +func writeFileInRepo(t *testing.T, root, relPath string, content []byte) string { + t.Helper() + absPath := filepath.Join(root, relPath) + require.NoError(t, os.MkdirAll(filepath.Dir(absPath), 0755)) + require.NoError(t, os.WriteFile(absPath, content, 0644)) + + cmd := exec.Command("git", "add", relPath) + cmd.Dir = root + require.NoError(t, cmd.Run()) + + cmd = exec.Command("git", "commit", "-m", "add "+relPath) + cmd.Dir = root + out, err := cmd.CombinedOutput() + require.NoError(t, err, string(out)) + + cmd = exec.Command("git", "rev-parse", "HEAD") + cmd.Dir = root + sha, err := cmd.Output() + require.NoError(t, err) + return string(sha[:len(sha)-1]) +} + +func TestVerifyFromCommit_MatchingBundle(t *testing.T) { + root, _ := initGitRepo(t) + + bundleContent := []byte(`{"metadata":{"version":"1.0.0"},"transactions":[]}`) + bundlePath := "packages/contracts-bedrock/snapshots/upgrades/current-upgrade-bundle.json" + commit := writeFileInRepo(t, root, bundlePath, bundleContent) + + // Write the "committed" bundle that verifyFromCommit compares against. + committedBundleRel := "op-node/rollup/derive/test_nut_bundle.json" + committedBundlePath := filepath.Join(root, committedBundleRel) + require.NoError(t, os.MkdirAll(filepath.Dir(committedBundlePath), 0755)) + require.NoError(t, os.WriteFile(committedBundlePath, bundleContent, 0644)) + + entry := nuts.ForkLockEntry{ + Bundle: committedBundleRel, + Commit: commit, + } + + // Generator is a no-op: the bundle file already exists at the commit. + noopGenerator := func(contractsDir string) error { return nil } + + err := verifyFromCommit(root, entry, noopGenerator) + require.NoError(t, err) +} + +func TestVerifyFromCommit_MismatchedBundle(t *testing.T) { + root, _ := initGitRepo(t) + + bundleContent := []byte(`{"metadata":{"version":"1.0.0"},"transactions":[]}`) + bundlePath := "packages/contracts-bedrock/snapshots/upgrades/current-upgrade-bundle.json" + commit := writeFileInRepo(t, root, bundlePath, bundleContent) + + // Write a different bundle as the "committed" version. + committedBundleRel := "op-node/rollup/derive/test_nut_bundle.json" + committedBundlePath := filepath.Join(root, committedBundleRel) + require.NoError(t, os.MkdirAll(filepath.Dir(committedBundlePath), 0755)) + require.NoError(t, os.WriteFile(committedBundlePath, []byte(`{"modified":true}`), 0644)) + + entry := nuts.ForkLockEntry{ + Bundle: committedBundleRel, + Commit: commit, + } + + noopGenerator := func(contractsDir string) error { return nil } + + err := verifyFromCommit(root, entry, noopGenerator) + require.ErrorContains(t, err, "regenerated bundle at commit") +} + +func TestVerifyFromCommit_GeneratorModifiesBundle(t *testing.T) { + root, _ := initGitRepo(t) + + // Commit an initial bundle. + originalContent := []byte(`{"metadata":{"version":"1.0.0"},"transactions":[]}`) + bundlePath := "packages/contracts-bedrock/snapshots/upgrades/current-upgrade-bundle.json" + commit := writeFileInRepo(t, root, bundlePath, originalContent) + + // The committed bundle matches what the generator will produce. + regeneratedContent := []byte(`{"metadata":{"version":"2.0.0"},"transactions":[{"new":true}]}`) + committedBundleRel := "op-node/rollup/derive/test_nut_bundle.json" + committedBundlePath := filepath.Join(root, committedBundleRel) + require.NoError(t, os.MkdirAll(filepath.Dir(committedBundlePath), 0755)) + require.NoError(t, os.WriteFile(committedBundlePath, regeneratedContent, 0644)) + + entry := nuts.ForkLockEntry{ + Bundle: committedBundleRel, + Commit: commit, + } + + // Generator overwrites the bundle with new content (simulating forge regeneration). + modifyingGenerator := func(contractsDir string) error { + outPath := filepath.Join(contractsDir, "snapshots", "upgrades", "current-upgrade-bundle.json") + return os.WriteFile(outPath, regeneratedContent, 0644) + } + + err := verifyFromCommit(root, entry, modifyingGenerator) + require.NoError(t, err) +} + From 15c22b2815c37fb0791d1de9f655def8e2744d88 Mon Sep 17 00:00:00 2001 From: Maurelian Date: Thu, 2 Apr 2026 20:34:00 +0000 Subject: [PATCH 30/31] docs(ctb): warn against generate-nut-bundle rename --- packages/contracts-bedrock/justfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/contracts-bedrock/justfile b/packages/contracts-bedrock/justfile index 06a5403db5b01..c45eae16428fe 100644 --- a/packages/contracts-bedrock/justfile +++ b/packages/contracts-bedrock/justfile @@ -236,6 +236,8 @@ genesis: forge script scripts/L2Genesis.s.sol:L2Genesis --sig 'runWithStateDump()' # Generates the Network Upgrade Transaction (NUT) bundle. +# NOTE: be very careful about renaming this command, it's used in the CI check-nut-locks job, +# which expects this command to be available in historical commits. generate-nut-bundle: build-no-tests @forge script scripts/upgrade/GenerateNUTBundle.s.sol:GenerateNUTBundle --sig 'run()' > /dev/null From 0da7f528b8e4eeedd7306db50eabd2990ab1675a Mon Sep 17 00:00:00 2001 From: Maurelian Date: Thu, 2 Apr 2026 20:34:09 +0000 Subject: [PATCH 31/31] fix(nuts): fix goimports formatting in provenance test --- ops/scripts/nut-provenance-verify/main_test.go | 1 - 1 file changed, 1 deletion(-) diff --git a/ops/scripts/nut-provenance-verify/main_test.go b/ops/scripts/nut-provenance-verify/main_test.go index 7c70812b8de26..28a9ae1ad3fa3 100644 --- a/ops/scripts/nut-provenance-verify/main_test.go +++ b/ops/scripts/nut-provenance-verify/main_test.go @@ -139,4 +139,3 @@ func TestVerifyFromCommit_GeneratorModifiesBundle(t *testing.T) { err := verifyFromCommit(root, entry, modifyingGenerator) require.NoError(t, err) } -