From b3812f6382fed43c36e747a7090fa6e5fbc05208 Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 9 Jul 2021 19:30:49 +0000 Subject: [PATCH] deploy: 66e4b0ee7f9aa1b1fb6162e4cb437d7a4dc93d52 --- rustdoc/latest/.lock | 0 rustdoc/latest/COPYRIGHT.txt | 50 + rustdoc/latest/FiraSans-LICENSE.txt | 94 + rustdoc/latest/FiraSans-Medium.woff | Bin 0 -> 186824 bytes rustdoc/latest/FiraSans-Medium.woff2 | Bin 0 -> 132780 bytes rustdoc/latest/FiraSans-Regular.woff | Bin 0 -> 183268 bytes rustdoc/latest/FiraSans-Regular.woff2 | Bin 0 -> 129188 bytes rustdoc/latest/LICENSE-APACHE.txt | 201 ++ rustdoc/latest/LICENSE-MIT.txt | 23 + rustdoc/latest/SourceCodePro-It.ttf.woff | Bin 0 -> 58444 bytes rustdoc/latest/SourceCodePro-It.ttf.woff2 | Bin 0 -> 44896 bytes rustdoc/latest/SourceCodePro-LICENSE.txt | 93 + rustdoc/latest/SourceCodePro-Regular.ttf.woff | Bin 0 -> 68152 bytes .../latest/SourceCodePro-Regular.ttf.woff2 | Bin 0 -> 52228 bytes .../latest/SourceCodePro-Semibold.ttf.woff | Bin 0 -> 68080 bytes .../latest/SourceCodePro-Semibold.ttf.woff2 | Bin 0 -> 52348 bytes rustdoc/latest/SourceSerif4-Bold.ttf.woff | Bin 0 -> 110552 bytes rustdoc/latest/SourceSerif4-Bold.ttf.woff2 | Bin 0 -> 81320 bytes rustdoc/latest/SourceSerif4-It.ttf.woff | Bin 0 -> 78108 bytes rustdoc/latest/SourceSerif4-It.ttf.woff2 | Bin 0 -> 59860 bytes rustdoc/latest/SourceSerif4-LICENSE.md | 93 + rustdoc/latest/SourceSerif4-Regular.ttf.woff | Bin 0 -> 103604 bytes rustdoc/latest/SourceSerif4-Regular.ttf.woff2 | Bin 0 -> 76180 bytes rustdoc/latest/ayu.css | 1 + rustdoc/latest/brush.svg | 1 + rustdoc/latest/clipboard.svg | 1 + rustdoc/latest/crates.js | 1 + rustdoc/latest/dark.css | 1 + rustdoc/latest/down-arrow.svg | 1 + rustdoc/latest/favicon-16x16.png | Bin 0 -> 2214 bytes rustdoc/latest/favicon-32x32.png | Bin 0 -> 2919 bytes rustdoc/latest/favicon.svg | 24 + rustdoc/latest/halo2/all.html | 20 + .../latest/halo2/arithmetic/fn.best_fft.html | 27 + .../halo2/arithmetic/fn.best_multiexp.html | 21 + .../arithmetic/fn.compute_inner_product.html | 20 + .../halo2/arithmetic/fn.eval_polynomial.html | 19 + .../halo2/arithmetic/fn.kate_division.html | 20 + .../arithmetic/fn.lagrange_interpolate.html | 21 + .../halo2/arithmetic/fn.parallelize.html | 20 + .../halo2/arithmetic/fn.small_multiexp.html | 20 + rustdoc/latest/halo2/arithmetic/index.html | 58 + .../latest/halo2/arithmetic/sidebar-items.js | 1 + .../halo2/arithmetic/struct.Coordinates.html | 105 + .../halo2/arithmetic/struct.SqrtTables.html | 97 + .../halo2/arithmetic/trait.BatchInvert.html | 25 + .../halo2/arithmetic/trait.CurveAffine.html | 48 + .../halo2/arithmetic/trait.CurveExt.html | 67 + .../latest/halo2/arithmetic/trait.Field.html | 53 + .../halo2/arithmetic/trait.FieldExt.html | 105 + .../latest/halo2/arithmetic/trait.Group.html | 33 + .../halo2/circuit/floor_planner/index.html | 22 + .../circuit/floor_planner/sidebar-items.js | 1 + .../struct.SimpleFloorPlanner.html | 11 + .../circuit/floor_planner/struct.V1.html | 95 + .../circuit/floor_planner/struct.V1Pass.html | 93 + .../circuit/floor_planner/v1/struct.V1.html | 11 + .../floor_planner/v1/struct.V1Pass.html | 11 + rustdoc/latest/halo2/circuit/index.html | 34 + .../latest/halo2/circuit/layouter/index.html | 24 + .../halo2/circuit/layouter/sidebar-items.js | 1 + .../circuit/layouter/struct.RegionShape.html | 101 + .../layouter/trait.RegionLayouter.html | 54 + rustdoc/latest/halo2/circuit/sidebar-items.js | 1 + rustdoc/latest/halo2/circuit/struct.Cell.html | 92 + .../circuit/struct.NamespacedLayouter.html | 95 + .../latest/halo2/circuit/struct.Region.html | 100 + .../halo2/circuit/struct.RegionIndex.html | 95 + .../halo2/circuit/struct.RegionStart.html | 98 + .../circuit/struct.SimpleFloorPlanner.html | 90 + rustdoc/latest/halo2/circuit/trait.Chip.html | 37 + .../latest/halo2/circuit/trait.Layouter.html | 49 + .../latest/halo2/dev/enum.VerifyFailure.html | 132 + rustdoc/latest/halo2/dev/index.html | 25 + rustdoc/latest/halo2/dev/metadata/index.html | 23 + .../halo2/dev/metadata/sidebar-items.js | 1 + .../halo2/dev/metadata/struct.Constraint.html | 92 + .../halo2/dev/metadata/struct.Gate.html | 92 + .../halo2/dev/metadata/struct.Region.html | 92 + rustdoc/latest/halo2/dev/sidebar-items.js | 1 + .../latest/halo2/dev/struct.MockProver.html | 188 ++ rustdoc/latest/halo2/index.html | 32 + .../latest/halo2/plonk/circuit/enum.Any.html | 11 + .../halo2/plonk/circuit/enum.Assigned.html | 11 + .../halo2/plonk/circuit/enum.Expression.html | 11 + .../halo2/plonk/circuit/struct.Advice.html | 11 + .../halo2/plonk/circuit/struct.Column.html | 11 + .../plonk/circuit/struct.Constraint.html | 11 + .../circuit/struct.ConstraintSystem.html | 11 + .../halo2/plonk/circuit/struct.Fixed.html | 11 + .../halo2/plonk/circuit/struct.Instance.html | 11 + .../plonk/circuit/struct.Permutation.html | 11 + .../struct.PinnedConstraintSystem.html | 11 + .../halo2/plonk/circuit/struct.Selector.html | 11 + .../plonk/circuit/struct.VirtualCells.html | 11 + .../halo2/plonk/circuit/trait.Assignment.html | 11 + .../halo2/plonk/circuit/trait.Circuit.html | 11 + .../halo2/plonk/circuit/trait.ColumnType.html | 11 + .../plonk/circuit/trait.FloorPlanner.html | 11 + rustdoc/latest/halo2/plonk/enum.Any.html | 107 + rustdoc/latest/halo2/plonk/enum.Assigned.html | 123 + rustdoc/latest/halo2/plonk/enum.Error.html | 101 + .../latest/halo2/plonk/enum.Expression.html | 123 + .../latest/halo2/plonk/fn.create_proof.html | 21 + rustdoc/latest/halo2/plonk/fn.keygen_pk.html | 19 + rustdoc/latest/halo2/plonk/fn.keygen_vk.html | 19 + .../latest/halo2/plonk/fn.verify_proof.html | 19 + rustdoc/latest/halo2/plonk/index.html | 60 + .../halo2/plonk/keygen/fn.keygen_pk.html | 11 + .../halo2/plonk/keygen/fn.keygen_vk.html | 11 + .../halo2/plonk/prover/fn.create_proof.html | 11 + rustdoc/latest/halo2/plonk/sidebar-items.js | 1 + rustdoc/latest/halo2/plonk/struct.Advice.html | 98 + rustdoc/latest/halo2/plonk/struct.Column.html | 117 + .../latest/halo2/plonk/struct.Constraint.html | 89 + .../halo2/plonk/struct.ConstraintSystem.html | 111 + rustdoc/latest/halo2/plonk/struct.Fixed.html | 98 + .../latest/halo2/plonk/struct.Instance.html | 98 + .../halo2/plonk/struct.Permutation.html | 98 + .../plonk/struct.PinnedConstraintSystem.html | 86 + .../plonk/struct.PinnedVerificationKey.html | 87 + .../latest/halo2/plonk/struct.ProvingKey.html | 88 + .../latest/halo2/plonk/struct.Selector.html | 137 + .../halo2/plonk/struct.VerifyingKey.html | 93 + .../halo2/plonk/struct.VirtualCells.html | 92 + .../latest/halo2/plonk/trait.Assignment.html | 43 + rustdoc/latest/halo2/plonk/trait.Circuit.html | 37 + .../latest/halo2/plonk/trait.ColumnType.html | 19 + .../halo2/plonk/trait.FloorPlanner.html | 31 + .../halo2/plonk/verifier/fn.verify_proof.html | 11 + .../poly/commitment/fn.create_proof.html | 29 + .../poly/commitment/fn.verify_proof.html | 21 + .../latest/halo2/poly/commitment/index.html | 34 + .../halo2/poly/commitment/msm/struct.MSM.html | 11 + .../commitment/prover/fn.create_proof.html | 11 + .../halo2/poly/commitment/sidebar-items.js | 1 + .../poly/commitment/struct.Accumulator.html | 98 + .../halo2/poly/commitment/struct.Blind.html | 104 + .../halo2/poly/commitment/struct.Guard.html | 97 + .../halo2/poly/commitment/struct.MSM.html | 102 + .../halo2/poly/commitment/struct.Params.html | 99 + .../commitment/verifier/fn.verify_proof.html | 11 + .../verifier/struct.Accumulator.html | 11 + .../commitment/verifier/struct.Guard.html | 11 + .../poly/domain/struct.EvaluationDomain.html | 11 + .../domain/struct.PinnedEvaluationDomain.html | 11 + rustdoc/latest/halo2/poly/enum.Error.html | 91 + rustdoc/latest/halo2/poly/index.html | 44 + .../halo2/poly/multiopen/fn.create_proof.html | 19 + .../halo2/poly/multiopen/fn.verify_proof.html | 19 + .../latest/halo2/poly/multiopen/index.html | 26 + .../multiopen/prover/fn.create_proof.html | 11 + .../halo2/poly/multiopen/sidebar-items.js | 1 + .../poly/multiopen/struct.ProverQuery.html | 99 + .../poly/multiopen/struct.VerifierQuery.html | 99 + .../multiopen/verifier/fn.verify_proof.html | 11 + rustdoc/latest/halo2/poly/sidebar-items.js | 1 + rustdoc/latest/halo2/poly/struct.Coeff.html | 92 + .../halo2/poly/struct.EvaluationDomain.html | 126 + .../poly/struct.ExtendedLagrangeCoeff.html | 93 + .../halo2/poly/struct.LagrangeCoeff.html | 92 + .../poly/struct.PinnedEvaluationDomain.html | 86 + .../latest/halo2/poly/struct.Polynomial.html | 121 + .../latest/halo2/poly/struct.Rotation.html | 101 + rustdoc/latest/halo2/poly/trait.Basis.html | 19 + rustdoc/latest/halo2/sidebar-items.js | 1 + rustdoc/latest/halo2/transcript/index.html | 34 + .../latest/halo2/transcript/sidebar-items.js | 1 + .../halo2/transcript/struct.Blake2bRead.html | 101 + .../halo2/transcript/struct.Blake2bWrite.html | 102 + .../halo2/transcript/struct.Challenge255.html | 116 + .../transcript/struct.ChallengeScalar.html | 96 + .../transcript/trait.EncodedChallenge.html | 33 + .../halo2/transcript/trait.Transcript.html | 31 + .../transcript/trait.TranscriptRead.html | 25 + .../transcript/trait.TranscriptWrite.html | 25 + .../implementors/core/clone/trait.Clone.js | 3 + .../latest/implementors/core/cmp/trait.Eq.js | 3 + .../latest/implementors/core/cmp/trait.Ord.js | 3 + .../implementors/core/cmp/trait.PartialEq.js | 3 + .../implementors/core/cmp/trait.PartialOrd.js | 3 + .../implementors/core/convert/trait.From.js | 3 + .../core/convert/trait.TryFrom.js | 3 + .../core/default/trait.Default.js | 3 + .../implementors/core/fmt/trait.Debug.js | 3 + .../implementors/core/fmt/trait.Display.js | 3 + .../implementors/core/hash/trait.Hash.js | 3 + .../implementors/core/marker/trait.Copy.js | 3 + .../implementors/core/marker/trait.Freeze.js | 3 + .../implementors/core/marker/trait.Send.js | 3 + .../core/marker/trait.StructuralEq.js | 3 + .../core/marker/trait.StructuralPartialEq.js | 3 + .../implementors/core/marker/trait.Sync.js | 3 + .../implementors/core/marker/trait.Unpin.js | 3 + .../implementors/core/ops/arith/trait.Add.js | 3 + .../core/ops/arith/trait.AddAssign.js | 3 + .../implementors/core/ops/arith/trait.Mul.js | 3 + .../core/ops/arith/trait.MulAssign.js | 3 + .../implementors/core/ops/arith/trait.Neg.js | 3 + .../implementors/core/ops/arith/trait.Sub.js | 3 + .../core/ops/deref/trait.Deref.js | 3 + .../core/ops/deref/trait.DerefMut.js | 3 + .../implementors/core/ops/drop/trait.Drop.js | 3 + .../core/ops/index/trait.Index.js | 3 + .../core/ops/index/trait.IndexMut.js | 3 + .../halo2/arithmetic/trait.BatchInvert.js | 3 + .../halo2/arithmetic/trait.CurveAffine.js | 3 + .../halo2/arithmetic/trait.CurveExt.js | 3 + .../halo2/arithmetic/trait.Field.js | 3 + .../halo2/arithmetic/trait.FieldExt.js | 3 + .../halo2/arithmetic/trait.Group.js | 3 + .../circuit/layouter/trait.RegionLayouter.js | 3 + .../halo2/circuit/trait.Layouter.js | 3 + .../halo2/plonk/trait.Assignment.js | 3 + .../halo2/plonk/trait.ColumnType.js | 3 + .../halo2/plonk/trait.FloorPlanner.js | 3 + .../implementors/halo2/poly/trait.Basis.js | 3 + .../transcript/trait.EncodedChallenge.js | 3 + .../halo2/transcript/trait.Transcript.js | 3 + .../halo2/transcript/trait.TranscriptRead.js | 3 + .../halo2/transcript/trait.TranscriptWrite.js | 3 + .../std/panic/trait.RefUnwindSafe.js | 3 + .../std/panic/trait.UnwindSafe.js | 3 + rustdoc/latest/light.css | 1 + rustdoc/latest/main.js | 8 + rustdoc/latest/normalize.css | 2 + rustdoc/latest/noscript.css | 1 + ...oto-sans-kr-v13-korean-regular-LICENSE.txt | 93 + .../noto-sans-kr-v13-korean-regular.woff | Bin 0 -> 287068 bytes rustdoc/latest/rust-logo.png | Bin 0 -> 5758 bytes rustdoc/latest/rustdoc.css | 1 + rustdoc/latest/search-index.js | 4 + rustdoc/latest/search.js | 1 + rustdoc/latest/settings.css | 1 + rustdoc/latest/settings.html | 19 + rustdoc/latest/settings.js | 1 + rustdoc/latest/source-files.js | 3 + rustdoc/latest/source-script.js | 1 + rustdoc/latest/src/halo2/arithmetic.rs.html | 938 +++++++ rustdoc/latest/src/halo2/circuit.rs.html | 646 +++++ .../src/halo2/circuit/floor_planner.rs.html | 32 + .../circuit/floor_planner/single_pass.rs.html | 476 ++++ .../halo2/circuit/floor_planner/v1.rs.html | 620 +++++ .../circuit/floor_planner/v1/strategy.rs.html | 478 ++++ .../latest/src/halo2/circuit/layouter.rs.html | 366 +++ rustdoc/latest/src/halo2/dev.rs.html | 1524 +++++++++++ rustdoc/latest/src/halo2/dev/metadata.rs.html | 192 ++ rustdoc/latest/src/halo2/lib.rs.html | 86 + rustdoc/latest/src/halo2/multicore.rs.html | 30 + rustdoc/latest/src/halo2/plonk.rs.html | 404 +++ .../latest/src/halo2/plonk/circuit.rs.html | 2360 +++++++++++++++++ rustdoc/latest/src/halo2/plonk/keygen.rs.html | 576 ++++ rustdoc/latest/src/halo2/plonk/lookup.rs.html | 122 + .../src/halo2/plonk/lookup/prover.rs.html | 1308 +++++++++ .../src/halo2/plonk/lookup/verifier.rs.html | 440 +++ .../src/halo2/plonk/permutation.rs.html | 174 ++ .../halo2/plonk/permutation/keygen.rs.html | 410 +++ .../halo2/plonk/permutation/prover.rs.html | 654 +++++ .../halo2/plonk/permutation/verifier.rs.html | 346 +++ rustdoc/latest/src/halo2/plonk/prover.rs.html | 1128 ++++++++ .../latest/src/halo2/plonk/vanishing.rs.html | 42 + .../src/halo2/plonk/vanishing/prover.rs.html | 238 ++ .../halo2/plonk/vanishing/verifier.rs.html | 194 ++ .../latest/src/halo2/plonk/verifier.rs.html | 592 +++++ rustdoc/latest/src/halo2/poly.rs.html | 618 +++++ .../latest/src/halo2/poly/commitment.rs.html | 756 ++++++ .../src/halo2/poly/commitment/msm.rs.html | 318 +++ .../src/halo2/poly/commitment/prover.rs.html | 332 +++ .../halo2/poly/commitment/verifier.rs.html | 386 +++ rustdoc/latest/src/halo2/poly/domain.rs.html | 948 +++++++ .../latest/src/halo2/poly/multiopen.rs.html | 1022 +++++++ .../src/halo2/poly/multiopen/prover.rs.html | 314 +++ .../src/halo2/poly/multiopen/verifier.rs.html | 328 +++ rustdoc/latest/src/halo2/transcript.rs.html | 622 +++++ rustdoc/latest/storage.js | 1 + rustdoc/latest/wheel.svg | 1 + 276 files changed, 28080 insertions(+) create mode 100755 rustdoc/latest/.lock create mode 100644 rustdoc/latest/COPYRIGHT.txt create mode 100644 rustdoc/latest/FiraSans-LICENSE.txt create mode 100644 rustdoc/latest/FiraSans-Medium.woff create mode 100644 rustdoc/latest/FiraSans-Medium.woff2 create mode 100644 rustdoc/latest/FiraSans-Regular.woff create mode 100644 rustdoc/latest/FiraSans-Regular.woff2 create mode 100644 rustdoc/latest/LICENSE-APACHE.txt create mode 100644 rustdoc/latest/LICENSE-MIT.txt create mode 100644 rustdoc/latest/SourceCodePro-It.ttf.woff create mode 100644 rustdoc/latest/SourceCodePro-It.ttf.woff2 create mode 100644 rustdoc/latest/SourceCodePro-LICENSE.txt create mode 100644 rustdoc/latest/SourceCodePro-Regular.ttf.woff create mode 100644 rustdoc/latest/SourceCodePro-Regular.ttf.woff2 create mode 100644 rustdoc/latest/SourceCodePro-Semibold.ttf.woff create mode 100644 rustdoc/latest/SourceCodePro-Semibold.ttf.woff2 create mode 100644 rustdoc/latest/SourceSerif4-Bold.ttf.woff create mode 100644 rustdoc/latest/SourceSerif4-Bold.ttf.woff2 create mode 100644 rustdoc/latest/SourceSerif4-It.ttf.woff create mode 100644 rustdoc/latest/SourceSerif4-It.ttf.woff2 create mode 100644 rustdoc/latest/SourceSerif4-LICENSE.md create mode 100644 rustdoc/latest/SourceSerif4-Regular.ttf.woff create mode 100644 rustdoc/latest/SourceSerif4-Regular.ttf.woff2 create mode 100644 rustdoc/latest/ayu.css create mode 100644 rustdoc/latest/brush.svg create mode 100644 rustdoc/latest/clipboard.svg create mode 100644 rustdoc/latest/crates.js create mode 100644 rustdoc/latest/dark.css create mode 100644 rustdoc/latest/down-arrow.svg create mode 100644 rustdoc/latest/favicon-16x16.png create mode 100644 rustdoc/latest/favicon-32x32.png create mode 100644 rustdoc/latest/favicon.svg create mode 100644 rustdoc/latest/halo2/all.html create mode 100644 rustdoc/latest/halo2/arithmetic/fn.best_fft.html create mode 100644 rustdoc/latest/halo2/arithmetic/fn.best_multiexp.html create mode 100644 rustdoc/latest/halo2/arithmetic/fn.compute_inner_product.html create mode 100644 rustdoc/latest/halo2/arithmetic/fn.eval_polynomial.html create mode 100644 rustdoc/latest/halo2/arithmetic/fn.kate_division.html create mode 100644 rustdoc/latest/halo2/arithmetic/fn.lagrange_interpolate.html create mode 100644 rustdoc/latest/halo2/arithmetic/fn.parallelize.html create mode 100644 rustdoc/latest/halo2/arithmetic/fn.small_multiexp.html create mode 100644 rustdoc/latest/halo2/arithmetic/index.html create mode 100644 rustdoc/latest/halo2/arithmetic/sidebar-items.js create mode 100644 rustdoc/latest/halo2/arithmetic/struct.Coordinates.html create mode 100644 rustdoc/latest/halo2/arithmetic/struct.SqrtTables.html create mode 100644 rustdoc/latest/halo2/arithmetic/trait.BatchInvert.html create mode 100644 rustdoc/latest/halo2/arithmetic/trait.CurveAffine.html create mode 100644 rustdoc/latest/halo2/arithmetic/trait.CurveExt.html create mode 100644 rustdoc/latest/halo2/arithmetic/trait.Field.html create mode 100644 rustdoc/latest/halo2/arithmetic/trait.FieldExt.html create mode 100644 rustdoc/latest/halo2/arithmetic/trait.Group.html create mode 100644 rustdoc/latest/halo2/circuit/floor_planner/index.html create mode 100644 rustdoc/latest/halo2/circuit/floor_planner/sidebar-items.js create mode 100644 rustdoc/latest/halo2/circuit/floor_planner/single_pass/struct.SimpleFloorPlanner.html create mode 100644 rustdoc/latest/halo2/circuit/floor_planner/struct.V1.html create mode 100644 rustdoc/latest/halo2/circuit/floor_planner/struct.V1Pass.html create mode 100644 rustdoc/latest/halo2/circuit/floor_planner/v1/struct.V1.html create mode 100644 rustdoc/latest/halo2/circuit/floor_planner/v1/struct.V1Pass.html create mode 100644 rustdoc/latest/halo2/circuit/index.html create mode 100644 rustdoc/latest/halo2/circuit/layouter/index.html create mode 100644 rustdoc/latest/halo2/circuit/layouter/sidebar-items.js create mode 100644 rustdoc/latest/halo2/circuit/layouter/struct.RegionShape.html create mode 100644 rustdoc/latest/halo2/circuit/layouter/trait.RegionLayouter.html create mode 100644 rustdoc/latest/halo2/circuit/sidebar-items.js create mode 100644 rustdoc/latest/halo2/circuit/struct.Cell.html create mode 100644 rustdoc/latest/halo2/circuit/struct.NamespacedLayouter.html create mode 100644 rustdoc/latest/halo2/circuit/struct.Region.html create mode 100644 rustdoc/latest/halo2/circuit/struct.RegionIndex.html create mode 100644 rustdoc/latest/halo2/circuit/struct.RegionStart.html create mode 100644 rustdoc/latest/halo2/circuit/struct.SimpleFloorPlanner.html create mode 100644 rustdoc/latest/halo2/circuit/trait.Chip.html create mode 100644 rustdoc/latest/halo2/circuit/trait.Layouter.html create mode 100644 rustdoc/latest/halo2/dev/enum.VerifyFailure.html create mode 100644 rustdoc/latest/halo2/dev/index.html create mode 100644 rustdoc/latest/halo2/dev/metadata/index.html create mode 100644 rustdoc/latest/halo2/dev/metadata/sidebar-items.js create mode 100644 rustdoc/latest/halo2/dev/metadata/struct.Constraint.html create mode 100644 rustdoc/latest/halo2/dev/metadata/struct.Gate.html create mode 100644 rustdoc/latest/halo2/dev/metadata/struct.Region.html create mode 100644 rustdoc/latest/halo2/dev/sidebar-items.js create mode 100644 rustdoc/latest/halo2/dev/struct.MockProver.html create mode 100644 rustdoc/latest/halo2/index.html create mode 100644 rustdoc/latest/halo2/plonk/circuit/enum.Any.html create mode 100644 rustdoc/latest/halo2/plonk/circuit/enum.Assigned.html create mode 100644 rustdoc/latest/halo2/plonk/circuit/enum.Expression.html create mode 100644 rustdoc/latest/halo2/plonk/circuit/struct.Advice.html create mode 100644 rustdoc/latest/halo2/plonk/circuit/struct.Column.html create mode 100644 rustdoc/latest/halo2/plonk/circuit/struct.Constraint.html create mode 100644 rustdoc/latest/halo2/plonk/circuit/struct.ConstraintSystem.html create mode 100644 rustdoc/latest/halo2/plonk/circuit/struct.Fixed.html create mode 100644 rustdoc/latest/halo2/plonk/circuit/struct.Instance.html create mode 100644 rustdoc/latest/halo2/plonk/circuit/struct.Permutation.html create mode 100644 rustdoc/latest/halo2/plonk/circuit/struct.PinnedConstraintSystem.html create mode 100644 rustdoc/latest/halo2/plonk/circuit/struct.Selector.html create mode 100644 rustdoc/latest/halo2/plonk/circuit/struct.VirtualCells.html create mode 100644 rustdoc/latest/halo2/plonk/circuit/trait.Assignment.html create mode 100644 rustdoc/latest/halo2/plonk/circuit/trait.Circuit.html create mode 100644 rustdoc/latest/halo2/plonk/circuit/trait.ColumnType.html create mode 100644 rustdoc/latest/halo2/plonk/circuit/trait.FloorPlanner.html create mode 100644 rustdoc/latest/halo2/plonk/enum.Any.html create mode 100644 rustdoc/latest/halo2/plonk/enum.Assigned.html create mode 100644 rustdoc/latest/halo2/plonk/enum.Error.html create mode 100644 rustdoc/latest/halo2/plonk/enum.Expression.html create mode 100644 rustdoc/latest/halo2/plonk/fn.create_proof.html create mode 100644 rustdoc/latest/halo2/plonk/fn.keygen_pk.html create mode 100644 rustdoc/latest/halo2/plonk/fn.keygen_vk.html create mode 100644 rustdoc/latest/halo2/plonk/fn.verify_proof.html create mode 100644 rustdoc/latest/halo2/plonk/index.html create mode 100644 rustdoc/latest/halo2/plonk/keygen/fn.keygen_pk.html create mode 100644 rustdoc/latest/halo2/plonk/keygen/fn.keygen_vk.html create mode 100644 rustdoc/latest/halo2/plonk/prover/fn.create_proof.html create mode 100644 rustdoc/latest/halo2/plonk/sidebar-items.js create mode 100644 rustdoc/latest/halo2/plonk/struct.Advice.html create mode 100644 rustdoc/latest/halo2/plonk/struct.Column.html create mode 100644 rustdoc/latest/halo2/plonk/struct.Constraint.html create mode 100644 rustdoc/latest/halo2/plonk/struct.ConstraintSystem.html create mode 100644 rustdoc/latest/halo2/plonk/struct.Fixed.html create mode 100644 rustdoc/latest/halo2/plonk/struct.Instance.html create mode 100644 rustdoc/latest/halo2/plonk/struct.Permutation.html create mode 100644 rustdoc/latest/halo2/plonk/struct.PinnedConstraintSystem.html create mode 100644 rustdoc/latest/halo2/plonk/struct.PinnedVerificationKey.html create mode 100644 rustdoc/latest/halo2/plonk/struct.ProvingKey.html create mode 100644 rustdoc/latest/halo2/plonk/struct.Selector.html create mode 100644 rustdoc/latest/halo2/plonk/struct.VerifyingKey.html create mode 100644 rustdoc/latest/halo2/plonk/struct.VirtualCells.html create mode 100644 rustdoc/latest/halo2/plonk/trait.Assignment.html create mode 100644 rustdoc/latest/halo2/plonk/trait.Circuit.html create mode 100644 rustdoc/latest/halo2/plonk/trait.ColumnType.html create mode 100644 rustdoc/latest/halo2/plonk/trait.FloorPlanner.html create mode 100644 rustdoc/latest/halo2/plonk/verifier/fn.verify_proof.html create mode 100644 rustdoc/latest/halo2/poly/commitment/fn.create_proof.html create mode 100644 rustdoc/latest/halo2/poly/commitment/fn.verify_proof.html create mode 100644 rustdoc/latest/halo2/poly/commitment/index.html create mode 100644 rustdoc/latest/halo2/poly/commitment/msm/struct.MSM.html create mode 100644 rustdoc/latest/halo2/poly/commitment/prover/fn.create_proof.html create mode 100644 rustdoc/latest/halo2/poly/commitment/sidebar-items.js create mode 100644 rustdoc/latest/halo2/poly/commitment/struct.Accumulator.html create mode 100644 rustdoc/latest/halo2/poly/commitment/struct.Blind.html create mode 100644 rustdoc/latest/halo2/poly/commitment/struct.Guard.html create mode 100644 rustdoc/latest/halo2/poly/commitment/struct.MSM.html create mode 100644 rustdoc/latest/halo2/poly/commitment/struct.Params.html create mode 100644 rustdoc/latest/halo2/poly/commitment/verifier/fn.verify_proof.html create mode 100644 rustdoc/latest/halo2/poly/commitment/verifier/struct.Accumulator.html create mode 100644 rustdoc/latest/halo2/poly/commitment/verifier/struct.Guard.html create mode 100644 rustdoc/latest/halo2/poly/domain/struct.EvaluationDomain.html create mode 100644 rustdoc/latest/halo2/poly/domain/struct.PinnedEvaluationDomain.html create mode 100644 rustdoc/latest/halo2/poly/enum.Error.html create mode 100644 rustdoc/latest/halo2/poly/index.html create mode 100644 rustdoc/latest/halo2/poly/multiopen/fn.create_proof.html create mode 100644 rustdoc/latest/halo2/poly/multiopen/fn.verify_proof.html create mode 100644 rustdoc/latest/halo2/poly/multiopen/index.html create mode 100644 rustdoc/latest/halo2/poly/multiopen/prover/fn.create_proof.html create mode 100644 rustdoc/latest/halo2/poly/multiopen/sidebar-items.js create mode 100644 rustdoc/latest/halo2/poly/multiopen/struct.ProverQuery.html create mode 100644 rustdoc/latest/halo2/poly/multiopen/struct.VerifierQuery.html create mode 100644 rustdoc/latest/halo2/poly/multiopen/verifier/fn.verify_proof.html create mode 100644 rustdoc/latest/halo2/poly/sidebar-items.js create mode 100644 rustdoc/latest/halo2/poly/struct.Coeff.html create mode 100644 rustdoc/latest/halo2/poly/struct.EvaluationDomain.html create mode 100644 rustdoc/latest/halo2/poly/struct.ExtendedLagrangeCoeff.html create mode 100644 rustdoc/latest/halo2/poly/struct.LagrangeCoeff.html create mode 100644 rustdoc/latest/halo2/poly/struct.PinnedEvaluationDomain.html create mode 100644 rustdoc/latest/halo2/poly/struct.Polynomial.html create mode 100644 rustdoc/latest/halo2/poly/struct.Rotation.html create mode 100644 rustdoc/latest/halo2/poly/trait.Basis.html create mode 100644 rustdoc/latest/halo2/sidebar-items.js create mode 100644 rustdoc/latest/halo2/transcript/index.html create mode 100644 rustdoc/latest/halo2/transcript/sidebar-items.js create mode 100644 rustdoc/latest/halo2/transcript/struct.Blake2bRead.html create mode 100644 rustdoc/latest/halo2/transcript/struct.Blake2bWrite.html create mode 100644 rustdoc/latest/halo2/transcript/struct.Challenge255.html create mode 100644 rustdoc/latest/halo2/transcript/struct.ChallengeScalar.html create mode 100644 rustdoc/latest/halo2/transcript/trait.EncodedChallenge.html create mode 100644 rustdoc/latest/halo2/transcript/trait.Transcript.html create mode 100644 rustdoc/latest/halo2/transcript/trait.TranscriptRead.html create mode 100644 rustdoc/latest/halo2/transcript/trait.TranscriptWrite.html create mode 100644 rustdoc/latest/implementors/core/clone/trait.Clone.js create mode 100644 rustdoc/latest/implementors/core/cmp/trait.Eq.js create mode 100644 rustdoc/latest/implementors/core/cmp/trait.Ord.js create mode 100644 rustdoc/latest/implementors/core/cmp/trait.PartialEq.js create mode 100644 rustdoc/latest/implementors/core/cmp/trait.PartialOrd.js create mode 100644 rustdoc/latest/implementors/core/convert/trait.From.js create mode 100644 rustdoc/latest/implementors/core/convert/trait.TryFrom.js create mode 100644 rustdoc/latest/implementors/core/default/trait.Default.js create mode 100644 rustdoc/latest/implementors/core/fmt/trait.Debug.js create mode 100644 rustdoc/latest/implementors/core/fmt/trait.Display.js create mode 100644 rustdoc/latest/implementors/core/hash/trait.Hash.js create mode 100644 rustdoc/latest/implementors/core/marker/trait.Copy.js create mode 100644 rustdoc/latest/implementors/core/marker/trait.Freeze.js create mode 100644 rustdoc/latest/implementors/core/marker/trait.Send.js create mode 100644 rustdoc/latest/implementors/core/marker/trait.StructuralEq.js create mode 100644 rustdoc/latest/implementors/core/marker/trait.StructuralPartialEq.js create mode 100644 rustdoc/latest/implementors/core/marker/trait.Sync.js create mode 100644 rustdoc/latest/implementors/core/marker/trait.Unpin.js create mode 100644 rustdoc/latest/implementors/core/ops/arith/trait.Add.js create mode 100644 rustdoc/latest/implementors/core/ops/arith/trait.AddAssign.js create mode 100644 rustdoc/latest/implementors/core/ops/arith/trait.Mul.js create mode 100644 rustdoc/latest/implementors/core/ops/arith/trait.MulAssign.js create mode 100644 rustdoc/latest/implementors/core/ops/arith/trait.Neg.js create mode 100644 rustdoc/latest/implementors/core/ops/arith/trait.Sub.js create mode 100644 rustdoc/latest/implementors/core/ops/deref/trait.Deref.js create mode 100644 rustdoc/latest/implementors/core/ops/deref/trait.DerefMut.js create mode 100644 rustdoc/latest/implementors/core/ops/drop/trait.Drop.js create mode 100644 rustdoc/latest/implementors/core/ops/index/trait.Index.js create mode 100644 rustdoc/latest/implementors/core/ops/index/trait.IndexMut.js create mode 100644 rustdoc/latest/implementors/halo2/arithmetic/trait.BatchInvert.js create mode 100644 rustdoc/latest/implementors/halo2/arithmetic/trait.CurveAffine.js create mode 100644 rustdoc/latest/implementors/halo2/arithmetic/trait.CurveExt.js create mode 100644 rustdoc/latest/implementors/halo2/arithmetic/trait.Field.js create mode 100644 rustdoc/latest/implementors/halo2/arithmetic/trait.FieldExt.js create mode 100644 rustdoc/latest/implementors/halo2/arithmetic/trait.Group.js create mode 100644 rustdoc/latest/implementors/halo2/circuit/layouter/trait.RegionLayouter.js create mode 100644 rustdoc/latest/implementors/halo2/circuit/trait.Layouter.js create mode 100644 rustdoc/latest/implementors/halo2/plonk/trait.Assignment.js create mode 100644 rustdoc/latest/implementors/halo2/plonk/trait.ColumnType.js create mode 100644 rustdoc/latest/implementors/halo2/plonk/trait.FloorPlanner.js create mode 100644 rustdoc/latest/implementors/halo2/poly/trait.Basis.js create mode 100644 rustdoc/latest/implementors/halo2/transcript/trait.EncodedChallenge.js create mode 100644 rustdoc/latest/implementors/halo2/transcript/trait.Transcript.js create mode 100644 rustdoc/latest/implementors/halo2/transcript/trait.TranscriptRead.js create mode 100644 rustdoc/latest/implementors/halo2/transcript/trait.TranscriptWrite.js create mode 100644 rustdoc/latest/implementors/std/panic/trait.RefUnwindSafe.js create mode 100644 rustdoc/latest/implementors/std/panic/trait.UnwindSafe.js create mode 100644 rustdoc/latest/light.css create mode 100644 rustdoc/latest/main.js create mode 100644 rustdoc/latest/normalize.css create mode 100644 rustdoc/latest/noscript.css create mode 100644 rustdoc/latest/noto-sans-kr-v13-korean-regular-LICENSE.txt create mode 100644 rustdoc/latest/noto-sans-kr-v13-korean-regular.woff create mode 100644 rustdoc/latest/rust-logo.png create mode 100644 rustdoc/latest/rustdoc.css create mode 100644 rustdoc/latest/search-index.js create mode 100644 rustdoc/latest/search.js create mode 100644 rustdoc/latest/settings.css create mode 100644 rustdoc/latest/settings.html create mode 100644 rustdoc/latest/settings.js create mode 100644 rustdoc/latest/source-files.js create mode 100644 rustdoc/latest/source-script.js create mode 100644 rustdoc/latest/src/halo2/arithmetic.rs.html create mode 100644 rustdoc/latest/src/halo2/circuit.rs.html create mode 100644 rustdoc/latest/src/halo2/circuit/floor_planner.rs.html create mode 100644 rustdoc/latest/src/halo2/circuit/floor_planner/single_pass.rs.html create mode 100644 rustdoc/latest/src/halo2/circuit/floor_planner/v1.rs.html create mode 100644 rustdoc/latest/src/halo2/circuit/floor_planner/v1/strategy.rs.html create mode 100644 rustdoc/latest/src/halo2/circuit/layouter.rs.html create mode 100644 rustdoc/latest/src/halo2/dev.rs.html create mode 100644 rustdoc/latest/src/halo2/dev/metadata.rs.html create mode 100644 rustdoc/latest/src/halo2/lib.rs.html create mode 100644 rustdoc/latest/src/halo2/multicore.rs.html create mode 100644 rustdoc/latest/src/halo2/plonk.rs.html create mode 100644 rustdoc/latest/src/halo2/plonk/circuit.rs.html create mode 100644 rustdoc/latest/src/halo2/plonk/keygen.rs.html create mode 100644 rustdoc/latest/src/halo2/plonk/lookup.rs.html create mode 100644 rustdoc/latest/src/halo2/plonk/lookup/prover.rs.html create mode 100644 rustdoc/latest/src/halo2/plonk/lookup/verifier.rs.html create mode 100644 rustdoc/latest/src/halo2/plonk/permutation.rs.html create mode 100644 rustdoc/latest/src/halo2/plonk/permutation/keygen.rs.html create mode 100644 rustdoc/latest/src/halo2/plonk/permutation/prover.rs.html create mode 100644 rustdoc/latest/src/halo2/plonk/permutation/verifier.rs.html create mode 100644 rustdoc/latest/src/halo2/plonk/prover.rs.html create mode 100644 rustdoc/latest/src/halo2/plonk/vanishing.rs.html create mode 100644 rustdoc/latest/src/halo2/plonk/vanishing/prover.rs.html create mode 100644 rustdoc/latest/src/halo2/plonk/vanishing/verifier.rs.html create mode 100644 rustdoc/latest/src/halo2/plonk/verifier.rs.html create mode 100644 rustdoc/latest/src/halo2/poly.rs.html create mode 100644 rustdoc/latest/src/halo2/poly/commitment.rs.html create mode 100644 rustdoc/latest/src/halo2/poly/commitment/msm.rs.html create mode 100644 rustdoc/latest/src/halo2/poly/commitment/prover.rs.html create mode 100644 rustdoc/latest/src/halo2/poly/commitment/verifier.rs.html create mode 100644 rustdoc/latest/src/halo2/poly/domain.rs.html create mode 100644 rustdoc/latest/src/halo2/poly/multiopen.rs.html create mode 100644 rustdoc/latest/src/halo2/poly/multiopen/prover.rs.html create mode 100644 rustdoc/latest/src/halo2/poly/multiopen/verifier.rs.html create mode 100644 rustdoc/latest/src/halo2/transcript.rs.html create mode 100644 rustdoc/latest/storage.js create mode 100644 rustdoc/latest/wheel.svg diff --git a/rustdoc/latest/.lock b/rustdoc/latest/.lock new file mode 100755 index 00000000..e69de29b diff --git a/rustdoc/latest/COPYRIGHT.txt b/rustdoc/latest/COPYRIGHT.txt new file mode 100644 index 00000000..c2629a83 --- /dev/null +++ b/rustdoc/latest/COPYRIGHT.txt @@ -0,0 +1,50 @@ +These documentation pages include resources by third parties. This copyright +file applies only to those resources. The following third party resources are +included, and carry their own copyright notices and license terms: + +* Fira Sans (FiraSans-Regular.woff2, FiraSans-Medium.woff2, + FiraSans-Regular.woff, FiraSans-Medium.woff): + + Copyright (c) 2014, Mozilla Foundation https://mozilla.org/ + with Reserved Font Name Fira Sans. + + Copyright (c) 2014, Telefonica S.A. + + Licensed under the SIL Open Font License, Version 1.1. + See FiraSans-LICENSE.txt. + +* rustdoc.css, main.js, and playpen.js: + + Copyright 2015 The Rust Developers. + Licensed under the Apache License, Version 2.0 (see LICENSE-APACHE.txt) or + the MIT license (LICENSE-MIT.txt) at your option. + +* normalize.css: + + Copyright (c) Nicolas Gallagher and Jonathan Neal. + Licensed under the MIT license (see LICENSE-MIT.txt). + +* Source Code Pro (SourceCodePro-Regular.ttf.woff2, + SourceCodePro-Semibold.ttf.woff2, SourceCodePro-It.ttf.woff2, + SourceCodePro-Regular.ttf.woff, SourceCodePro-Semibold.ttf.woff, + SourceCodePro-It.ttf.woff): + + Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), + with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark + of Adobe Systems Incorporated in the United States and/or other countries. + + Licensed under the SIL Open Font License, Version 1.1. + See SourceCodePro-LICENSE.txt. + +* Source Serif 4 (SourceSerif4-Regular.ttf.woff2, SourceSerif4-Bold.ttf.woff2, + SourceSerif4-It.ttf.woff2, SourceSerif4-Regular.ttf.woff, + SourceSerif4-Bold.ttf.woff, SourceSerif4-It.ttf.woff): + + Copyright 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font Name + 'Source'. All Rights Reserved. Source is a trademark of Adobe in the United + States and/or other countries. + + Licensed under the SIL Open Font License, Version 1.1. + See SourceSerif4-LICENSE.md. + +This copyright file is intended to be distributed with rustdoc output. diff --git a/rustdoc/latest/FiraSans-LICENSE.txt b/rustdoc/latest/FiraSans-LICENSE.txt new file mode 100644 index 00000000..ff9afab0 --- /dev/null +++ b/rustdoc/latest/FiraSans-LICENSE.txt @@ -0,0 +1,94 @@ +Digitized data copyright (c) 2012-2015, The Mozilla Foundation and Telefonica S.A. +with Reserved Font Name < Fira >, + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/rustdoc/latest/FiraSans-Medium.woff b/rustdoc/latest/FiraSans-Medium.woff new file mode 100644 index 0000000000000000000000000000000000000000..7d742c5fb7d4597ae140f8418f52ffe03dc75343 GIT binary patch literal 186824 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

W=jJ>x1=hAmW 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 K4`YsgT&eiD=t+k3M&gZ?bM{*ho&j zNT>j_2+t5=&c03-AMmLaSuG)6q-ZOBF)?q%jY)zuc=5#-x2zdysa$VU|M4!0?~EvSu*U9Ur@Fd`(yF6-9s9arDILb$4%I&Q-)lysks@x8LA?Vm9;X z6;FS5&qLYR#W0oUTcy|qBgMueObYO21`2^)u@x79gNTP2(L-ceN)MaCiM2Sw)QNRu z6HHQU!fH)0kth|ONj%4ULHexl@;^C#>Yk&S;$pAYJJC5FZ)$IE3QzPhGYfxa3=2$6 zXhkp(RMvDtScDW|z%JrMTWtz#HR|4Lrhr{$HImQ{ z)13<$z+zJcCYIYkF*NZ+Yo*m^YZan{6*)V(_V(2Sb$DWx6q-o(mX@lwboWE+N>{EW zvIu~A5#TOGVIgP&`QtFcI*~~2N*H3287&P*STJ9#DakyO4H#;n>CF5+U7fA1$yk55 zr+#Pe;P#gFt4a^!KC`*IGu2)08>p^on(5lO$*s@)R>9vL@ZJy_76yudq>Hhhbzu(3 z8|3vc2_b0pIuPDq^&(CS94fKe46$+P%4YE>;WjD?gC)dt4DOw=J;B`3 zEs=VEmIK;buD*JA;a|Exaji)2SsrMeuAMxFWZA=vQT-MWyugV>9FUVvhMeKhd?l5C zN2E@I{>$U%-=3d;`|x3$%skJW&HM)27gkFCE^~^?87FEI5(XV;0ggc?4M1xGM3|Tv z5;9h@p~NH{DR^%#DImr&c@6y+zysjOA03GepXxmP_Iy_tytebJZ@-QIlF^g5ZmF3co!50O1jlhM03OUPj`pMTHDGJpqd!gcqKn zmWfWw5NRo$M8Gp;sLb3N03gUI7nVWD2{HiUm~-=Q&u4=Rx4umeZwL}qfdzt2(LP|D zH0HaSt|kDtgqg@<92h+X+6 zdmDU@2Th4bm_A@+5)Ply(D)Hp6w~DN3r!Q~=usx0ZwBy?I88p%G}(gG_z3I4dQ`M{ zGMS|t8&&7g1bahK{~lr89!f;RRXy%Q_*?VClh?J(Ox>msRA$Ti&F_1^LZ|3O>a|&g z5_+B@8eQfR#^{JA;QL>kpC>L5-P23K-XwdvpW0P-;0PTrfiDuzcJ@oLhemp~^E!+t zsl44U#U3W;_|IUxpVHEP$#&RE$NvMy`zS5#mwfU$I{qw-+o>P2U-Cl|i~W%EKZQ>Q zs2{Rl@(qu|${iHWHN7)z-Jb@TJ=%i!66Mouk||GaaDgx4Ne z=_^!k?3eV0XcP9F=g})!d;(B zfEPrLO04F^UXc04;;ip;8DU_>>sgmzK1Jzu0PM~i=(!;9Y9Z_$$)u2i%M!l?tpTEa z!t`4u-bmpannu=anQwJ?ZLW&+dd9l&YOk?ClEato+T-71jRs-M5 z5yXHb+eAX4)W&tmHm>xVqzpsXTJd%3)*W7pL(jly~0>y1xY3&}LDpnhXG)kr*D#u$%skll~@Uj#%J#@z7yrMDoMkf4kbc!# z7h0{?+k*=~p|Lv2=lC`JMT5%VmDI_Bkx7}1N(g19z}W}6itWXjYv*?W)RJs{mBN2g zlC6JJWb3afub<4yR*7ccrhHH>RFVuTO!Dbwq|i4gk4eROE<}Z*6+jed7+x)HJ&88F z4NF+FW`4tl9XoLIW!Rqi&1K(F{Lx=C&nfTyA^N&}{y^cA$M40zlJ_rX{C504)%Qr_ zAbUQ7|Cad@GJx!PI`btWe59C=`q>BYVd-5_=ErQgG|uBc5uCv1A7TDPaZn7jp`|#e z5-JKzBO5i!#^N*KC=;yXODw*zvk|q!n+< z{3$)M??w8K8hFRgsNEG4!e%{jvB=l6B*3>@6mK#Qm>qV?WC5N9-OTbVs0STOvQWTj z`Pt1D!@&bb7_IqG>aq7-^GO^yJr&B7;5U1MQ~aUqVM zR>tq7xuH}ZvLx3igr)$s+0L%`{2N6xqQge?Wyd`4mqR zCkzbbG#CO1zA(hwc`I1W#K!=;D=LN#w2D}zF1hMgGdpsPksqx~j@V)o4XZcKNBBU( zhYv@Be1n%r^MR_$M0G>WRcZWA#!#0GS858R-{MSxWHYa(IV)blZG_EZh?pTfB!yw@ zW;+!#fMM_@i1A~MkOeTSKk++*VgJY8)E4Y#YKQl)$@~)D_x;$d-FSt_TkIW_zCJ4Q z7IQ|iT~||Fe^lbFzpBQS`G(if)2i_^%J@;HLOGLLo&A2py-ZM%Y3lLYvoTHhp3}3hgA_>T04atcUS%9i$sv9>`3|c}o z%%V}n8?Cg&3=C92PQivX z9FsM5K#5F?d3vIMVhKgfB-aqQgd$QM$`Mg2Qs~r5aZ&9Ap@btuRDN+?x?&Ys)_=(u zrEw(*pF0GL3;bN-Z(Fc#smspmS9erI4Gl^lCwxJBac^7lA_}T4}`8}a;Cti zU_$K8HwA!C3xzZgXE9rOt5(dY$^y?X0(m|QYBlp^75yL;j~-We^b`|Oa$#=+*ou)W zHy$JRbPwr0&3 zb8hW}SMPanJ^bAL(E3Xc9L+4;c-zq%l{H)fbnQizL{fMQ8Feb1Xvk@CHWusi`6_)C z6;{41H*74P0VInQHuuGJceaXUAbr7;cAZ-XqGqV@xIS9mR3!T-AlbB+4qDtTNe? zRfg1BaGaPVF{30UgBo?aO(u8P9rAlkE>l^BljKOK4urMK?=N#Gdp^uB-D>qYabezF zr!esECyexY}y)14NUVc-gdm1bH+u~XkY0ljWzu&=-+(C^r zF4wBWQ4>lF>q!X@J<2K2m{_o87#+*Z6=8!xH&qC9G((Q^X^?(aJ6cuc@sQXNLRC#w z$@*GP+*26}W}`?(J$yH7E(Y;#O$O}hSW<)P_X}Y1dCb2Wi+Rf{D$3uX^((P*a~{;) zH#HSo9B%qteyl0@IIZC0PW+85ok{rc0jI4JK(XpYYyd3*OR=P)iI9+SF*Eu7A|m{i z{)#YP;w$l%I#ehq$b$kevmDgl#{6zt)KblF&JV3mEN=-^f9Zm>!Be>}!%1af9({8c z@vW5cSCsMN`1guFJ02qaS8eQi$}ggUD$rX zjUZ%6YOXF~Lp~f21golofjIR;|7Z3FU;N(SCtppx@Y4%#&YG?JKJ)IIqgwwfpoeQw zE1DEGknlovp%H_Wtb!jAtl=D3t08G9#N_05lM-^V1Y6pq8CvKdXI$6SAyn5|*V5D& z=F8n;si$F?QqPOrMqHCq0E(};5cKSQOKL$cp2v=ZvP>d@XVo;+*skfH~Yg<4QgGvt8rHbK~PhAY1D01|>iX44EvsIF#4eTY%SHS^| zp)ZX*9szgG2(B&*rU@pYUHLB>8rdZud&$`;JEbGuph!Am6-KU4SbR6cw@rr0<)F|OPiOl8ha1?MLigUWWSqZLU`__S9L zP-t#|4jB}JT$)7cHuxfn~8`SKRv%dZAr zcm?x~dDQoJ*7WSld~<55DZlFe-&^xf0u~`%Odf;aMp*F)3*M);xFC@00CH;cNWWhGo>pQ1yB{*`4kB| zYGueGI>M|PEkm6Sj#M`*a-L-7PXi#ENm4k!bRu!o*h`f8q~x?h4z06opxjf|Lt2c8zG8B*%PRLOV5 zdkRIwx-f~%RH=7CD$DV}q5jd^CihQvM!G6iPOs@-wW6nX+Y08~ng_4m`_S68tK8)W zZ#jHp{i<+C#Qy=ne>3ob4=Afo=y8HV4THJBGA3GI3^>4pMuT_=$S4)kYU81_)F1Ol zOMRu@%CJ_h+{jZaM9@rXglG*1DH>whM}ZSu{?O&I{!zfBzchSBq&8aLG5b5 z^)*sw#jw~}sj2aLIj*L;CY7l7R(q==A+DVBgu*csv9ACt%(Bk!@=go>DTur{RjuYc zN;h95;8h|CKS5M$uCi@d&Z&`ow09IdTqeu`9yk{8pkYX6mgK!6$z4O732StmX0DLB zumy`NnEk=gZ4sNUHyA{d4+kXQo-^Bcm_k@yK2faaqG0&2Shc!$af6YaiMJC@G#DzHauws@(^`3TF=OJ>ngH- zb*h*MiIRhmlxodD`ok&^r(wA{WpyZvK3W%OFSJ?BQcYm)vJ&=$RJv?V;D=6<#mo=( z4-WOiB6@c1zINY!=Iox#hdV}k+B1I>>G@{nleCuxt;?hN>Kf892i%C=a(3g4k~vHD zj@MJ_fCuamD&0d;a-&L1f*%!@BwCRtQPQh$~}x$1D2WAMe~r|bd+5*npT)oBl9H5 zTM#*f@Q-|CNm@kEZ6_1a^7Fu6aJ${SI~WOCBB21W7c^p;+@jteG#@A=H2_I43nVe9 zWy{EQeFHbZm*}n~IYOC#YOEW)?*pH$NUz`ABliF3tX**R8VjCm#;22+*WQrmVp5`u zxDYd9Bv!r?#+s3rt7K$`NR^H%-;-AATX|Ma#K#qD=f8(7D+ZtZ(C;R?x_bu)NIC{{ z_WAy_C-VZnCe_iL$euM#Qr>z+;;kR3#?L6@M;WY~Lr>Ckvq^&wwl7Pyw8g51>yLmZ=i{s5^ zxk15;KtihaLq%;?q!7eEQ*-#<(Q79#%%Sq4D)qNBs z6LppzrB|R>xGJplQIJj*iDj{*aD~_&Vr|0Aj@s_wF2gSWg;S6#}m8Yhh(sroaB-1uibEo~Vm{?!$G30?vKf0~|apQQLG z0Aekqy;I#nDbWS8Nh%9lnoK3h*Z@BN#NjWJyo-gWnBi^o`Sa)D`Ol$ZQlm$tC7_A~ zTXc*@Bi9hqR0?=owo?$5+fpeNEu=^Wba-U{{=?T^3twNv41R4Q^Ie>n_}Z0M!kXzC zDNp=W;)#C~*A6^UNON)8gyu4k8U{>S$%yW@gnf|_$Psn6dS0sNvXY)1?l_mHYMiWx zH{*j1t2(_&v(M{ojMo*mk)=J+BGWT(wOk2E*tT#B!E3>J16_-}#(T*c$vDuhdi-|0 zlj@p+^H0P0pFr=?sxYgLBW+XhF!*H5AkEL!XgPw+v?8NvilW5~kCa%=c8iYeiw>5m zi(1Ko#WF+Qjvw4~{Xp%t&*IxXwbrhpd&A7iA7^f#e%OXBc-Lh;_Ug;lDL6f?tm{sE zt+-y`8})i0z}G1?8SONGI4JlEOhi2oQ*xP7kxOMjO)gY!fCM3@BLSx7iTTx~WqQL@ zcxnvaE>e)wR#NJyY;O{VrFReIy!+E)KRIMQ|0d1-WORRigW%2vKLn}oQ%YzAS|jGfo@z#|2=oK6(crc~D62AAdRT_}ArU*GU5 z{LEEXU9$)Ot+sjMkC}&C`@7rTq4@9vA31=J=;DfPbwTSqL?h0a)YGUMDU2x!?2CyHsVjiKvAn$_5B{z+r9yKO4mEuxzDxRceF(2q8t2*4-dHAn~JHPr@ zvN-&g%&*1eImF_p%$sD9%KApQ~eRqH;Zj31S9kHqmul<{LsscQU9ah%%RuPv#m z7w6oqJbMS@p|Ku1uGF&BNLAl*EsKHGE43^-v4%Pu;Ub6eHPw}|a46tYRkax3rK-ic zbT9Es`HEcbR&8+pYL|tpmhQU(Qw(W=s=TP4obr+^ZcfTSGI9nmf@p60oLJwc%2=^l zb-Mbx>Ub;~3R=C^@-nB+qBB>RO*GSrkEWdO39!G4ZEs(M<$5bByqJ*^EplLcWB>l< zHEYgZ1a$v@*{>TL?in;)5T?V`NBZB>eknOJHE2W_%$p%Yjx*Ehz@nHAvJ@sMs95+e zIWc)4`@+&(m{V%7@+HA6>|6{L*N zzngheH7w?qy`C48^<+QKUDxp?pPynJDtNxDto!}UglhaT zMONL!7?#wHiF0-;&z_)te~GRzQ=A6S#wSgr7)&}MBK1jBD}jqTEuX|@yPlRw%}y83 zl5>>}}J zmU2YN`s;*hhmj#{OB?{4RurFT`im9W0pvG3B4*kT+#zav&^dOk+>VqO`d|`E=6~k) zp}vkCFC`n+j;&gkNW8S8W5vj^$>Q--TP{CbH+MP4K8ERjSUS65qA8IAA(=}g4%u4f|oq|oyh zJPi4Uns1jo1zGt05{ZOq|5H-CrzJKCN2ROOOF$~hp%qsFp0*Ca+wXtj_y;#f8K6^gPMa2tZa|5P_HR(PAl8t!oH?crNi3K86{vE`RV|3ctokr-i^zH9@_9%W zCvr|H!wmEtSTnS}WxhGFVz}69E-s7KG3SPdGk@E1*GSvtJ^1BJsJ(aFHmobNX*O6? z_g2szCqEZs2(XW0j5;8AjXJW$K(M4Gtx`Q>v6wA#ff6esgj6Oy^~r5JK6c>NjeG9g zb;$uHy6~@nou@<_UhFH!(l|bjN%cs5a=$qke?%ES#$2Nszgroa={ zkJIy-F`>|mHH-xo&moPx1y&MAP3HpQ7Mzmfq?|5ex!sN-93o(nV2Bz_b;Lu*Jn@(U za<6f9cPQzqC~}!yF0C4T{M^`}%{pQ*c!J6q0LkMoMdLz2AyA6bp(kPZVY%p#X7)2o zmiS1~p+qLk6o;jA{z-{K#9V)KnTC2SR50jt^oXD-VG+-V%_;oo#>W0@){W243tLhR zRVx}hz%SU)HnOeX@BKD&wzf0#)%|t#^_lZ!gp*;730lYM7s^d~4Z|&|pt4vjas?I3 zTiJv&m0+2~soRg;_06YG?YrTwFJO1(RlFPbzW#dV9O18wRn8i#u zj1=aJJT`me<&!5*-ifuDzhMpjbmke{4fIOChwgu!I<_W_Kcb9FF(GOEZe{!q{FXQl zx>BIJx=zxOcd6!QzyB`$1thQkB&{tO5(R2=X5&*r?GtxmTsfqe2}(w>sULJB~F$pJydGi4-=RPJ_y zU#v0OWS3O@Ny>j4c|N5|LrCD-OB+Y}S5AKOho-A;tUK0Ml1g(i2GxN;3x;0JR zYl`(_BUe5Uxy;o$ShH=esi8XAK9H8q$IjnQW9vo8i4sCx0kLU^5r?_GKrUJht0g_% z$U)hR>Y$7shnP!9lqM{ljO9BKnIFzM5_#YO=Ipg%bYDIZVL-ZwG-^gRQn_W*0w*Fo zY#8la4T3|Bu6@h$>G+@QEgn~h7M-$FODxuTyPDWUF?C|a5(aPiD zpNDU&{P+h)nAwTU+mxG}p=4mM! zXE9US!lb))k|es|H!{!Ro}x?x?#sM{pJrBOd^;}1uWl1<0s7sP-a90IdO|gRRvKpv zuU)O4e@2;q6u+VxKdp@4i4Te6=XttzdHex>rfN4<#I^@M|V( zDZnhplHNMQs@|^USJx$CZn@^gfSZK786a*7e9p{;z=42c9oyS?Z(n7XAzT{bKt? zZT)Zei`qR^A^2KD?ZfS@wXyNSpKQM7hMW8M4>Eo}IN-ETr?;-R>`Q0fX+3`X+5;=( zwK4ZIZ=o1ECb%!qBS}2riYXnE5YkPN&7B&Nnz>$+%*#V6~`WUvqFpap&rFl;3ER9|p7$ zC(3*q{Ah!}(>}4(8={mvO{>jip|Pklo)v^>0O*DXGXB-t%)hQ#gQNIt=962t;I*4K zi#!AG!H>iD%KZtZ^Ytf4kp2YUeWfV#i9?rN29w3-zyvdcjQ0v|L$)@1I$N7)+M<*&b+xg zTeG=3)63@Sj6Cj!hZ7fmIB&{Mo;07WN}A8~a%n!`wFdn(&&Lv0=lRHIZ~+~!&hrr! zvYmN3b6<7EzWMe&D_s?(cvImUl?5NU&)9&Og@0*nNp^H3_ZHuK>zaf8I{j2)Xlg96 zIz2T#J^2*il!cRt!s zQ`?ZJeD+z!ylzd?p#4XtB;dbnxdu161aUVZDal?|I3Dsg-$xnVtHe&(4U{vuMj>LUcqzrv4S!F!k3 zrqj8$Y1qyusi}+W4t@TPT{~|3>Q~R<)qngWp+WxqoA@0n6T>7gzzKrJ0TR)RHJp|O zFG|A=t9wh66OpYs#j@q)<>B&BnCC+@C?Q`rBgd^0+1f$7T?^8K_AtA*gD~z+w}ZH;pB~x@KxpdbsQgwMJI>WPk9p+o(++wUheGPJ{_r~vVyLe zZ3NvsPIdDQ_~WYah%$bF_B-XI@h{NZ8fs9A)C*RCVv2#rtiw8OsolmhI!=AlADC@A zFxx<A0m zge>NFi!MLR*e`@W5l_4dPrQUDV&h!@zl$&Je+OU2C08iE3%+tMRlFd&WL*3!y<@Qx ze2pW*t)$AQ+zHMU7+Nh@r*Fnuoq&yoSUALLjM`zZ19)&Kd+VY}D*4eOgHdakE5K6z ziP+eA3gqS1kwR=V%Br}li(J6iHPF@H+uh!pN;cG0RjRLGEV`&G7%vWcKUY-;IczN# zk4E-nQF~bv4BThd=?{8cI(i3pHgwIqrqcndIPmUmv;Hv2SJH=+Hoq(9zc1 z)KHgmwPW#nxZ3gJF#FYIFQeO#bM51|FNo#N3tt5Jh2`#D z#eHFF*#~G%d=%Bez69vKkQ~fpxd0G!1=ecJMTIQzmIC{+$x^^m<^@*+jTY1Q46-@TwPctLd=<@Ya6ZpIY3 zDdJ6$o9BN<@wym)y8k`=Roe;vRQFt>i^AVE**h@t>I zX!HaNQzTrkn*w3Fm0qnRdu(o@iNy8+%e3wi>2@xCI`4yNp}e^np=P1EtGzXusH=%r zgn9Am&4{BwPO!)dUNM67o+$JsS>)0V37MZ?1g)|^REt}XzM1PUhHe#k`vKZ7p#$}! zuL$8q_jc;JW{|Zhz<(DgvS^40MW({NDfbdjS(5>_rc^qtK&8XnLJDz=p5gSnmw!C( zlWD=**@;kRe`jBh(ALt_SYI2jP;LY*yqFt7FK!RM@@}_D)ZYVSDAk8qWp?-1^*wB@-V5~XR>-U*G}F=_oWIY(LI7K3M>=> z5mo~t%we^F2$OfEPT7^L>P8~^(0`Qrf%T#gc1+i_LdQ84w^;_@JcY9bm;}^%rmGOVX52(iV%J@yxR}o_; zb+9LP6wJ9}wX8Jn9jl9nm)xz&PHA3&@6XCs0hPMb@44)Su(_;cyv6vaJ9>&tJ1aGNQ?zC09&kD;)y&ly^ zBpQ~z?}|cfbvO_rFne6E2Ad_U%PE{BZNrFhObWg&a?^7=$Y=Zvfp)xEw@ZZIGgeao z0P_u{&RQSir||Y9@Sc#2flNICI>^82@hJPxyrJy>XYd!17`NakPZGWx6ISxzpAsXh z2K>{wr3Cy_J@FBSWzRHwhpgn4>Q!E;$Tbxtgu#bN;8U}>Gw*WzLUTYBp7}Xmp(I-z zcNZ>Z7GR;rDZdmdnHO^@YcQ8pe84|bOLWCL1^%ZV&_KM1Y_NS_9fKCK{q zh)y8VM{Q=35^}6#RrZf`YCm@Y8Kk^rh76sa>N9%<(K2IqNeyP*KVy3pHg4Jq>AklKe-g1T= zG#L#nM~aOxnB`bAlZ}$mHndVtX0XYtVpTR*C|K$wHn}V@baKgYDkbHTNY@nF?Mzgc zNHTx`UBsEv+U1a0-In6|!mh!++XE$b?|2lzbvugdim$xJ?5>K(yQ{Ea zsouC=7)x`9*y6&82-{N79GZU_8*Gd&G5Fz;59^?+ic~TJ=qS?2}WL9c4 zNHu~)R_g3xwmRM>GfvJXchc>hQ22!lg_Z5Zdt~Ne2~2DaL++}tMQ!NKk;j9;17*CA z(P#+-jTjjl^Z-Km>yF;iX^b5g`dDeWb=CJ=NI!?87N<_TSIGvCQKO>XbK%+GIXAKQG>wY{~CEo;l? zrgzu3Z@pswLFTgBM(qzW+frpFhHT2)_LV)3vY~V_)1BMlXvjgjHu;|Icb^o{;9 z5{=b!(~+1W+u$|C7PwlB<1)k9aVqo0@y{?*lonTl4&<4)kQtRLI*?q4K?}YOR0Yx! z19#3amWTiEb)dz9kfq#0%1h0t#G0c6BSZ>s=qH?k=QK62VD9+hg`!|+SaD} zjw)+|m+_xG44N+#XkuP1%DloyGxg~$Th|Q!y4)|~hQi8z2XL^D<{sXO9|dVd>kI4U z+{2aUd5RA@huWnN=HST|FGYPrU!WyviNuFM0NB{4|k+CCV^aoRY|N8ZB z!5^v5(i=1fi|lNN&p_p+@+p8M#w^x-jHFw=WyD|`u2mF;40p{F>2Y2mwIKAPaUE3c{Z$5nZ$l>{; zhYz2t@OdjMy}ksJJwe`{=Sf9$RJ_r9g46%;#E%7c3ysI9;Frwz!^hNV*`aSUM%)9X{ zIl8d?JR80!?OV$e*s>_n~J}e!=_~?ZXG+=PbKB%r-4D6H*A`n82AN66wOn{ z-vb?AcA@*qw=TM`ob;vPbLwmtU-buszkW@)#oge&uCv8c>u(vkWOR3X`|c6O@Aa>= zS)QC8x7fxzdT(62_T~YpPYeDY)nx~zGs$OBcHFIu{|eorjK4@@^9QBa{9E!}(T>!fZ8!EVB3S1wca1np~ar`rYi*)*1EsWZ*cn5jR1JD_D3^`{u=ovJi zG?$RGrnX8q8OzOk#FmZyh3gIf7^~uSq&eVftWoApTTASV1as|$h z;P)$cbzKLtER3!ZO67ak1B>om7n#qmBpOXAiAG!17qGhp?~)tZb0&y20pyZ)Am_!G zwCAO2DPN~cyrjL})yQAp*-~Cx-X_xb_Wp=#?Mf+KXGd>Q5$vqhu~wpUV+%>v!KnFs z4F5aqrIYX+sR}G4o=u5fkJqNnl+;!zGqZ@BH z+;Pnq4!iri-oDMK|iNOB2bU=`85>9Nr9A1E;H{7`Q~A`6M?`fmb|9*Ix&8Vgx!V z0b6!XuoVMc*sNf$veb+%0kjQfLsU|>jYhFnC&dtz@(E46As=UtfykXFDai(W9HA3Q2-p01Z2IkcTcW>6lbk{Vy#(M|)+KSq7_23mP4a~Z)+_vVHp|(9M zyLb1bnkM*;Xs^Y%vB)#p-m&o1RJzL1a&pybu%}=T*k;%RFRDOE+43m$012@T^}ztA z)f5;Qs%c%+`dIuCmOqm8Zn=)O;WLoliCafZdLv78BfWEkD$zjB=Tv=WCrLI(d1a-~ zhfrm*vaz<>SK)*GBNQ422ft!dI%YqMAQ82_nx*zS0^yC+=r!9(LW4e~*3 zEXw@nNTwke{B7s-)aUW!=Ff+GzksDtnNMi>aq5R0qrS=yLFO;^RqD0mSxAB0HtktS`>GW3{Vr<0;A#AFjgxRd0JG`7q% z#k^D6SxV+zxGd!N!s|=Hw&TraV%}j=yPv}?^hQLdJ(p+3`qfNx^5miCvwZW3iG`0T zjC1wGU{UMB$5gySXzy{>1aSLM4QfU+!e%Gtm@pW~O+ilqr_o9}v8)sX0hM5SEa#Fd zDSJkpfhDR@vgvATiFT}Qu1z&I_-p*t6;Y}qqao8G9T`>20jHVjNRHlYpa2(AG$!-y z?n}qZ-Tpp*%+|V10`?GB)>WT*w9$zrfbm@=#Wt^1Z~bk1L+`M5z_Y?tIVX#aqJ?wr z!sg^Z1bJP_zlkWo)kS819B1jrNPXR7lCS&WJoLlo(2wlvk{(P>YFETbbwH?qGz|eE z%8)$hr9ywRWJ1LKl>|AJA<`j=%emuOJglN8yhRM%XcFcXYuE8a($leOyO6G`OnvC^ zo{?Scmt0v}ZH`sm9It6=akiumSgeDsv7TsUclq##uDfl;wZoTRTV->XS)4wm{lVUJ zu(VESoR~lo?MK+J158z@g|Uo0ZY24i@d(3e>+Fo4t;LMqg*l@UG(YLHs2z?)8SNlg z?gfM$BG{mf1G4hY)hTm}F7``HF8WL9G+n-F8r8Hk{3F6tWg=G-81pASioEvv3Z zsJf-Pxv>H0pvnd^h}_XyX!M9Io9DXf#hTn{57>2_S~Ria*L3b(HN3N8fbXm7=;;|+ z|HaH7)WYfze&FkwDMeg;@6wr`%UbK}dV}8H?vCX6PcsuLtzYynQ@=Qr6<(suJ_~f~ zLQ(Wt!AV*#kwXRt*0A1ka7K+ZfF%2(V82p_aZ2ngOr^1&W~|6UTlPis%~YIBS#AUQ z=}7pM<>-}_%S|J`sN0Q@JL)F!BNqsI-V&m|sAM897V*R`&XMo$6OCjw-X_Q2&dPYv zN?!P!f~uLZsT>PQlv_hNa_iHi?nLB$=1UR|hlG9$NPobchTLGKabXs7!(a|FgIQs( zm80vk>T9CiZUSH|91aJF`7bwoTO{CV!?zsRzSOvKd`sDIjZ6>ir03gb71%yoF}d#2 zU{s-icV6u^nx0xr14iama_1sCBNP{bH|ns%-ZL~bAt$p-S^HB;^E&BNM3u}=wmzJ1 zBDHB3CqT(149m}gjW4!Ztv;(aLNq$x%Oe_zDwvYH$=_uiYv4h*z>Z1ciZ z0sgmc&*bEmwTj*X#iHyj^F3w*LXus12FA%*Z5TfzO2M*XK#>jWG~_5+$CFFyxM6b% z30I3E&yza=lNLE7L@UoJdbckrdDkzYAG6DSoR!#Nr77W7VnWHk8nk*=?SY8vuFXGL zpLJHmx*yeJMepSuCI6jw2yqpOfDtHHMZkQqO2LprGC(v=a=;x9kt6PMH|ZWpM6r?d zbI}Es%3GWxZ&NtHo+->|b0qA^%wIE)DRlHZQV+UyYmQi*&V0tA@RSjcD>OypLWHJx znWhZ$oQdX~)SbVT%>ZrrQ8lVV%}hYtF^>)FxiW0jhp^5F`&v)~HY02-@FXV_m~Y7( z(Dr(a3|eJc(M5b!$;EsXouRqFj4ZJwX%Opjq$|P&T3rE2HWKwL?3}D}!J8^HP)CV$ z(Nhs$7dh77`)<$T?2{v;?{Ci66ww^Fi}{+RODOrDSOTddWEXz}lD>de6HZId)0;Nw z<4OdGkgkVZT~yy(pK46h)ds2qRk45tsMlgCDW<1@T07sE%16WrdiuARl#y0P@)~(I z^9{|ICiA%*sy>nV>#ToYL-#_rinN(b2G4o*broKQiLM{5&!O^k=99-;8j=d37vfc! zcYG0Sc9e@T1bV(~M;=l;s|N-)(A)2nl36*nsgB{23bi1uqeMApoRTwak5bn+fzK<4 zn8}ShuD`YU%As91+;n+uQuBRms$ALQEFBuS=g|1gLw6k{$CGkg?>vp;-Y3OzKaaBG z5oP><)B{Z%_bcP`_}7wO!cw@%+4Bmao4{3IGO!$WfRAUVcNmhsV^{|el8_InuOTrj zW{Z3!##SwW8MTJuK{LJfJPYUr1H1WPA5P~+cen1ygNZg{R2|>lTzFz{7BebXV+yPv zps&(hFva4CA0hKG%mQ5<$sWv)&G zzYx>hs>=S}zAXQ!Q@@|h!%8w;#H5_>I+Q}66WmL3zR4XqQF=$tvYFln#AyuNjF{=I z*XyRpm0MCqgq*#)e5SYjblwNkLOF2~QcaBw?mBmEWh@l*`z|um`@*#Ko4g6$%Tn2L z$=&%VPR1?Jl$g`qggVft1^1GiZc=SfN$=f}6N8teVjGc0Yt+n$rnkW$h^yvOSjACZD;o7C1XYI ztybjTY5WD%xLFy$pY%OY#>y`1F z)Vhe~&DB8Arwbf2?azKxhw`&ykj;(ZE@I95G1=noFJ@4i^Pd?ZAoy+ zyxdz$wrWI~Q^{8Z%|zy?mDX~XmgG}dbT;idGy4GK+rx9!YBPbjW1@hGTCv-~gqC~X> z7@8{4la8dkje%HoZG}+SlB`bDg}V6W=oRgAH{8B&=M>|2d-}~Kyx$w%7>e)}cE^Y} zux{l(i*rlQD)~I61lDavVbm$Kky~&u$zYYwL#fj*o`;Ib9^kvsl%%jF6!3Yaw4@5X z(H?g!j%D&qs%vT!PVqG5v77q)cJG~BeRcaS2l`TN9ie!#(xMA(Pu3Psu5RftdDi!i z^&ebw_|%pSvzJT-y*$6MzamO$O%FK!2JNlzb(FjI2wA%cEF8La>Cz2u*|kS3;ed~v z7Lm1wm9>irfjaftvmIL~5TClG{p!_|dw2Ks-*kC(Q%fSGH^&>}q4xGvZ}F+aYYz60 z^{)4rI$BmwZi!Yz{2O`R8=Sgic7xalKu>dN{GgQ{70q~8O^nfKQ&F9U(`!J`A<}cf zO70UMc8eeC@_s0t{X~!+SWb_&N+F6lRl=UC$+ugmTr!b{2_>DBGdV33@K&J0V5mA^ zAgTORMkaMiD;uSKh`ODPB3VJjbvZnsHQR1(%*OMw)bu9;(IE$?^&sDt!=7} zMq0gXm9rg*4ep6uUbns6f~Ueg?b`C9>XstF-o%FPky88WfsK49;I-KXd|t07F8IAh zqZq@k1Ugs%Jd!>jg3v*_pnw7f$wGp34Ca^_8l=<8C&Kaxpu>)ktJLmsc;Hd1C8WA1 zLcSv?6`=I1ONhLOk6t^!f5*nAP**h7rOljWZoF#y54gIPVw?_^_03zi(9b47)^YhQw_s@ zNC(*=^+9&-edk0FjJ8%?YFrK$9$hzCvC?GhWe$$foJP9F2k04O z4D3R?3nY{qW7ehv4I41(S+Js|wff{be1c0U(N0N?ppj_sr{FV8+XRbK)t{#Y8#!6@ z#eC%YHZLjn_&YCG)oR>jRg`AVe-B{(4&9dk zx>6`A!(!MI90klOxe-#}b1Hj(`_`Pmr{I-4Eaab%7K%zsO9Q3;2<(FM%!nnuRA_{xNJlS8Yf+wER^=9iADsxmi;hvGk&*01Q_Ftu{wre33oIiTri z>j?M=Jbwos_!00xA#$UgLXn1aSqJ;m4R8^7j8cIo@B_CSmaO3}lY2f=W0dMwYSV{Q zv*5p-d8efXL(s}wLw@4^TI8g0(sLw<#qe*!PT_jE#pbtGB!|W)58;NUk%=ud%8Q>d zn#LlN%U>J^3`)2x4?!hhtA zJL-%TN86Iy?j1JO{^|xRs&ST~%JJHF&Vgcp5g5U17cBKJjc>e-w8q|L+BT8Y^eCsM zFFnKYNI|B7Ar5Doc#>kM{TcZ6$D#{XcSu?+U6B<|5sOB&n(Wpgt%LDT-5jQH1|C`L-*IO3csS` zjSKZ?i`T%212AGIF`3alZ$Ml`VS+)yWQ1~qXG%P(^Tqv^(gmHFO~kDKM6utjQjw^3 zyWE*%8od?`;WJ82~O6Astz9+>*}49>(fAh&lmoO-2d!F zmlh6p4EYj%clFp2e^+EoTsPLGjBcwOXji&sezG|CqIB;5!@jnp$E9L)y-wFFuXLcz z;)MOkcB6)6!s8z4$*Yb%nQ*zi2@@@xqumE*V4QKkx2W`y*Xu8unm#u8j`P1t?k~LZ zx$TpqBYjQdsViFBx);~%ztHf~+~UtS_A9+gO`PL&ok@}J!+4^INaJKdd=f^<(7+_T zG1!Z~Ejk`D4TH!ckdP1GP91S7wU|m|V$k!E%{!(BH{bk7;SF-n=Q3OOJ~z=4txZ0( zr?byqkxccje_-#9ho(kus;TgK91%?NAXI6;kKRixfR+x%p$FPTE^%v6SD}ulIf{-W z%win6^|utU zTGGU9Z2=7g!|beZj9TawcX-`n-eQl6ay?c&G!!4sauu&$wR7jznGB#wm}e_1Y!Yg3 z7-_KlPT5Ue+ohkVn5!fe6$jLhV>Q0=ANEpf-6B{kEY`)p=A%lh`YA#88DcQ3`Vn*> zqZ-sEv^F=^Wn^AGB83Sg47gRN+psz~vTOOeV)%UyYvqVP+_-ns`i>^hdivwBcxQ0w z?&5N%<6j-M4eb+S+olWKxgta!Xi3*)3hyUR=-2?bVr(nZFCAynVh~Q2yf7^6RJJu$ zh{Qss^29tT2xhBUu)&hFnpm|vg<_@;CX0`R6HcsfZaud_F`;){YDf4c8{0zTvXVPrYDwIqgon z!#UMAQ{U0o*O8hTB+nIYB$u7OzfMlpc^xj7lkHtLzO**J6Xct^_L$aw3Uk}F_N>-^ zM@f55YyTkD7SY;kwDx<+RoZL~^zbhfGX#TPC<*0MR4AJ~$}eBjFUSB=w{gky2}XOYOx zZF8I1dE`9vD)|@j6(J_HD=oFvHi>C6;#4RoN|Rvu7zqPHEShUBkISD*nRK}iIt3<^ z=`3bJ_{mkf`YxDI4z&!&htj?M{ex?!rj`yKjF9^d?;btW*Vr@?t(h1anR41cu=$Fr z>o@Pmi=H#D!H=hC9N?f*i9zl@8(kNgY{IS*&zLT;(csWil?}k4!EnhWJY1S)*q;DaampCx~J40;R!(QdtRa zffsTwotr}S@)zR)&53~LF1orGc?+mt&=L>=DbOK&4LMi2dRKnG>z`fII|nYB7(CcK zlvtDQQ3luKNV6%luzU1yFCEt8(9nd(ft9-`t}=O$#(Srf1g?#juZ_+=p>OxI708!a z0fcrwHqhDK(VXgvDfPS8jGU9dBfRvS%ih=C-0KgGWwV|0JvTL)@1(EO_#p;TztTsH zCT|7kNk)|xp<+2E)pb(ji~wj5M!{rU)OF(2v86H`E|M2%!h|d2-Eurbq=N^SMn+b! z4Qbx8`91I1d};;j=+-bM>{TiwpkvjzOj1$H3Kxf@)3?-t2Q?jQ<;ZcRV_?1G=>1&7 z!ll$rV%b{1fU7z(0(-AyvBg{2+MdEWY|*c|Do1T%jK(GLh-iOM4eY8SB2a~4FVoyX zG~LTQ(ejYAQt}6i!CA``mNZ`K%`b}$TiJ1WI9CW{s%)i!?W@Vs{IVFI6(V$|-!fm6 zpsv$@UM4(8Itts0qLb+&JutL>P}@JRI5NayZjXr8N^uJG&dGI;#bD0Eg2h~Awp1Mz zL?f`Pa8#%ithP$)Vg+FZ7lj2osj5;H6q`*|Prrd52wmXa#y$>p%a$pv#)b5BH~LLIvWmq+%nTrXN>PSs&CUY`8@ z%u+lS>k2L{4bF+N?duBfB~lt@^rU^XJ8Pgb=#!^Gj-`bwl~4%S zEex_O4jUZNR7?bQ1hkEqR7n0fJ-%`KIvr2FCPajTirYgBQZ>vs zM2NA1`ghnIBWfT@iAPdYqXk;9-oznR-BwK?;ttfgI{rj|Abgi~F*nURVwaa|XK$h|6h$SA$93yu(b`Y4b%OU~$m=WKBa=Un5F3x^Rcq6bD7}Y&k>A7jQ@`v>XIylg z6+%?FMX^OelKMc}sJdayq{8Peu2a#cc4JAlA7824)Z zFknz|)0;Ps!(LShL$M{zuwZT-Mw>b3T8@8oxQQWw4KCS>^`s7q*EYuE6!`1n)4$U& zjka|%ne+;&6|o3>oszb~ylgD0k2(!uaPu6#1R7uz2@hH;J|>1(&B&X_mZDXzaJI=Y zF+}bvT#z#Ea)SxM*mXFhQ86_Zdx+ z5$IN=Eb8l2OP^=iy)+mNIv9}Sc>fihW|aWVysC?3Q*tQi_qrVAsa$dm3G86@`3>3~ z+Un`XfuEyS?z5dIza3#A%;)2`R8!$^FGUNW9a@kRG75N2paIW)q&2z@Ql3 zvKvFiX%*cttrnG%y(;O|)h9hWnl`}_H287xzxxqw86KX0=_U64Z@~B8Nb@`96bIO^ z20wbFrfgP`Ofb?0P)XoglSGReXi1Dd!GM=apedC+V2T7Nl(H+}a-$;Q_PRiMw2Nr9 zq84Agw*BSyo#xi*zHF}5uydB()Yf{%TSp7_`GJ{^z^t#UW1hUsZfDtD63~P4@dh|QqUDYa97j932+SNJsw%g<6(I7mp<_1C*O_mHl2kZ zk@){;daD?wdh459Z+&$ou1(=N`cB#h#&Q=qqKzd;&tNMe-kaGOMm?OOR^p2mVZig) zuMXr!HW1fqgt*LTHa5U!sj;UH5vEZm4!z+-}PjQ9r^hH1?TKDzLUtn*3 zjn=84bjJuLf(Qv@LL^*Bm9> zquB}8;i+43S5rmnm>Yp}VI~2PvmQ4}S(`A4QLyj;<=kN^ z&84pF9Ex9h%>zSrXaDs2nr`Rr+*to`W0Y+C@S&E54Uaukn2(a5^+ofIlTOP{dwgik zz?!S+7;G@k9(woHsML931<6!}4Y*jsr6fj?`jJ#+QwEF86Q^Y%c#UA#T6x@RtOg3{ z$u{?o?cBMveY@T1tdiUlL*JYyBlg0h^I!A0u`~|Q<`r^;Vlc_Vurg>TCNb&}C6lij z)blW{H{*2BT_l*mpjtFy1yKXy>+#yoFpPvdU7hsAX^AK{4z)NAs=G8092Y2^V>#dC zNVaKUY~A{ioZGn+tE+66VbR`LQ(5Jz#t~j44tC{w4a9CQ%!t2uL$gM!_dJ^5lmCw zuw)1*ZJy=%$ZZ#jdHd;4VCDfJ>fC7D`V zVY6D`sGAf?@d^We!WNTJ<|kFs!5)L5g46~1Ld=YZnj3d5ZD_b6x|7o9BayW|?>80M(a%?oFgvCM zRc3>balulwD=m>~I!$^a)e49{h0zskZo)i=)u8Le{gEymkR~%#yYjlf#dr1YY#wpM z*0(GArTYdkPqoxHH1C)qCkwa3u*gyV*J&@8D|}4AZ&4otH)Ce6#%~rZeO1>U*4lp~yqn?N!jEI(AK>hZ z2~V<-+wu60!X5|`82nTi8%(+e?$eCY6AA5OTDb!R17gpxeXvVZLxB?dUetw#&=M9J zAFlR9PX?mbP>}etT|meM?4ZxvWA@sbNI2y8y0Pq7rH@+C?4ny{VgH7egu6CrbJPul z!s#%1nv$@Kl5n5+hh*4M8{K+=zb2IWmzCr!(k-UZ?G)OH^!~s~*IsSEo%~+4;Y!-? zA~$ec!^gw|w97)1@CYMdFaR9l0hPQVCYmYmjhTbNg_TI@Ga{PJ6xW+R<_i$Vzzi%* zx2RnJ&C|#XoqM^i*hgbLHNRyS@2onSeaWOCB%6|rbr~3D0>o7v4c;ixKs!q)OFhq} z3aR+?&^epJHMQgMjYVdi*oeS6sGHVQ>vYrBi=Hmhd)xGn^h&Bm`x=dw_mVqwcQ-{E z-$(wYEbl)^zNfp>K`iHU6gTKE2K`-*D&-OQo^8tcGFLdY>;UFzk|0S% zPgP6}an(Y`mvzx@Yuw3HncEuuluCq=Hk%bf=^QoYe}Zl%x(?zabRG+e-39co1YHtr z22s-1pvcJVB19kNUt5la1%05u70=jIoJF!yS-+h6OyrA?p!%*SzpBZTJM`o)tivF2 z&T|5tmQe0llh)b_+Pp!}l7OyWZ6Sh?`zp4nZychB;CJ+X%F z(*}MzZ2xwy7rjXehU4*T6%s-Z`ao|mlhcvkTQgB2A)Ihcq>DgqV$ ztRK;{@uEm#DW9g*2r90GDVz;u$jtLDb@P__yis1> zO7F+spmh0vW&R$RyXP(D|Hby(CRd%l&~*Ly*`}|qZ;t0-XN8>b0mXyyel82fg@%GY zufeEgL^TSc1opP^DB6({-uK~+Hy)5IQu2TnDap%2NHhnOMyiO$i_}l8@&Pzp>*~Vc zx?Ej*b7MFg&Sa~7ataSuqD!z=>l&Khf-vM3Ey0?WFuZUzA`Poq)hx++bX9U0_#R<- z)y+bWaIfO=dBMuGVxmi|HWD_NG#_!3MkCQm7@|2k^D79#_S;zMACf^WiPb6?B$H$? z9bNIcRX#GSL|a z-M1PYotQ0Mnm>IdrDbv@Ej4+wQIj_xD&{pqyGv`ohst6jZ&&MF)d?NKt&Gskf?y-) zAjRTTqBK`&tdNi`?KIT8ie>d91ywkJM(qQ%D}2fk%p)tSh0uqdwQt z6se13<#_Q@+Xh=jkX#Os`<~9YSAVtLuKTxdHDcdJmAQM}E5lUA?F)~uv%&D>mz zTC+<1^R2RbTBBi&M#FoVEaUC0CRGjW_ETD@vxO0a;zL+z#$yHDq_&m2x=!m29hv`a zmADCIw&8F%6;8IK zn5qIsfPR+kEcFR=N3X!kTw_$?xgBj`b)uIHh5Tmotf%ltm@dqk{A<5uXrnsM2`Lot zMcs~MTVWLE3)AK`0nUYaNfgC4uXK1}oF+QbNEnnZ<7$JgtwnU%mQ(`{7O_EmZ)?C` zPCno9k7pUPc=^zY1FyZEamyNg+k^>abX5u$Yst`bSIT*N4Abd!IGk=vw>H*uqFdfJ z(e?EW&bk0HziocYg}A*To@i`L#3>K`Us@CLw%3H*^kT>JPo8yAb{#nJlebzF-PkvQ zu7IcCE@cP0n;NTZ7|PWEKT^bK@KL-LK`U`#<^_&5&%f zx;K6>06NVN38;SX9sqBZY;fBfJr2wFxD__!F+uzP<_W6e`o z?Er66te8v7tVK*P6z5Dxb`>{*YuXqG4tqXcOJP0JX-m;E1O;;W^mC$4++H`oH0TdC zs}o$;yJqrxd~UJ1?Wdoziz90-YY(dPk>x`B@_AUad7RYSTNv-f+aIO=7WFK?7dXl+ zctM}M_z4x|DTy9I8tyeqtEF2gFt}Nbi!5TD#%L%Pp2VwknN>nQpT%M@_+q}=aM0ql zR6D8+W`o&l<#BkDdia*r0zdZa`1gKAw^7`y*{OG}rp z>AvRLTOKI1|Lx-W7c6ewP~U&K^ZI;?!1s@f>N;T|Eo^<#ZUUJ?rdW(%4dUY(5D!ZO zkVW^*yqaMU(w@`8i2Jl|Aa|ZhX6j`bL!S(*LH2;qPOD^2cuBrZjR~BZKL~Wb?7D3m zo@2B=R+Hm#fs?JS_g?~(zWv&BZVLT9CH9l*nd74SN21k1?tId16G1L=;hMo}*CwM# zM>?xY)-vcsY~m@cJFJZXJ?UjTV{Xc_ejLh3?QTM6yA4T^bUA6dP`ooPzDN(*@yok=Yq}!c6X#xXvhU*cj%dyLYBzam&rY{zs{gj@wq7&N*5)c$n>z$Q z=rSq9Q^I?1IT41vfLZJkqIr@@o0SF7iCVQ(y;2hh)TU~afoPznK4mH?8(IqeVDMJ^ zJ!u*C3D(;nzv_j3>-DDg*LC#)`MlMch5Eu7`H01NT)xO@AupWR2D?|fqUP$viS0l> z{MVW%FV2z;r0{{Kj%Evwi>gg<71#YYmhrPWHM#u^-d$+2?V~XJ8lgex5^hu6p&-ny zsuC+SX;{^(mj7FKo>d}^jnSyV(Ad@3+13(mh}NfM zLyaMlOl1+!AH|=zs`bCBg+)FJ0>6PC^{z5XK>rF^IfCcFC-9^%J^S0wb}k&&X!o#E zN$c2Zxv0tGD#rd zF@2C+qIS_goK@^#Xk=>BSx+Lw0nT& zAkS*xTx}9gDvkg#88FtT3QHqN9E>iZ;-aDzp{!2hGGbI|Mt|X=k4I~}bLkeCwICKnF6_!>RIRBz6)iRi$xa1PB z+7Y1+Yhdo)P1kdFmI2fK@~J1OeIe5OADQYGVc~qGx=Jlu&8j$4Sz0VrN#6Nb*0!ai=IEw+C6}ws zSEu^L*sZ5FpPcM{-7fyuP&Ql0J-L5dCjQ&JdKU!qpmKFPm#fd|+H17-d&ynA9&1`W zAig5F;54ZbY){ohsy$T(skI>qLol=8#ysdnhzjF(nM_`+VUux*2d+A}bnX>bowIc4 zih^>eGe;^q4&QpcJWp@#`%=ta{0M>axGBB)iPpwmi6f^L-VCj~40t8nrK$ zln7=~^(WTPcP2-UCF~2HmnYmY zaJ#_H3M+B7foZ%nm;>8j^Sqh^H_plwbKo#LCAA;aOA}o&ht<1bF$aoW zR#%&4*ky8crlgpIcR6cwD1{ ze(#e0!Cv^cq+H|xW>XufY$?{rb%21;6&IsH_*@_1H8fylDkSPk<6!C z2F7&jeg6Vkh22mez4gr}~wRSj6q6RD6DJ-wv{C zeqnpM_BTU3hVR{Ct>6&OXL|rvK&ijQQ3>aq84Ej#Q=m&>PA>vyYOOT>&HaBA&*2d4 zE|07tXcl8Rx^m=5z!&hhbUBxfRC*>`#9H&!rjhZ&Z$#Ijo&hb6fcjbIMG}zxa7>dnRda5d&73u2waC={{Gau?{f1uLg zs0f9{n8Uu-XmkZ0Ya5VTdV5-81D%frTt?$syQ8cB`0+Izg_)XgB;u&4!TI)3EVP(5 z-&2V72kmPM&(ZZ#+wT%yrR_mVpN(4khsaH8j%-Q)`*>dSB>cESObAt&r-`9DGzo5s zuBoIILZ`9zRYIjZiFumE3Q831bd1G4E$!VTCTO5j;aYNR+b$Mw3x_-DRKLFhILJn0 zLj_emKfv>-+4r+NPR2x(c5N%%Os*NRRjjY$u|_zjps>VPvAP0I zI-g6Fv^tuEVAW`bxu<_*P`TGn4>AUmMeA#7k}q7;u#43@PM$D0yyE3Q*mQy1t^AzqQ&=;-ysHQ^;n}n>hlF#@(wL+<6Z4t<`d@8F%mre zSsLht`5Q2pTd1#lf&04uPK)nia^e6-C1T)6KtRmq5)CM1UGSS&Nf(;8acWmlcZoy| z8lBuWesU-H3fs*B2;;TAF-n6rQfO*Sz1KoVW zJK3x36nv2|@rqUT?C_UaZPcVIs9SjT2GqfI(4z0v#O9dpF>MzFHTGUjZN^FX1TTd> za?3RFfD^Td9K>jQEsnma)42^3+lurZ7@Yt5*XK*<>(ZSQb}-&~#YGFHZn4FppNU(G zXVg*H#~YW^nV%C5S#~j)ic)$nBR58_r2pnqoiekEP-} zStaFUgZ^NGGgwW_;l)-;a(BqyP3@yY>3Vld^Y$%Edxy@?C}Zmya-O!1P1CvEpr{Y7 zYp4mh1KukC^ytRftUTF~i2B1`hi_wF<9L?g*}*vJd3G^B&u$lr?P1<7T7ScF%R9-{ z!eip&8V&`!WFZ`f!jqHa&a0fe#K#L?6LjAb)4u-{tqFkiktlt-F*C1$7!8d`vU&9G3_MTN-b#-;EbuC_WM|tbwHd{o4 zcGo%L^6|9hw=ZJ3gL)`qNna^PG2MHDJr}GSKd(n5I}H8#loHR+TzquRK8EC880a?q zob+}uME6+#wk_98D95*?oKxez;PmiNJH>G?d~9UeqD*MKlGS+S4(`u!fUfZ+vB*Pr zk*zx3s?pl-CFk&VxupMn6mNjy#)x2Nv$!rKu+0yQ=A-9CSp5Y=*_4JBqlTi-u^4lS zYvCMAP5)RQhfWpsppgU6FD`#J3o8Ks>JW0RElmvwg<-N)W9BjXIvKidRMe6#OITQi ziBnadb9T1GYJJ{VBGoGAc6JQ5ru}jv>#GF|AQbZZ>*KqYE;&zpEi+P=X^D6uZePqF zY8Y?p+T0M_Syi72*GGJ{oegqbz$=Gq<*QErn;1BBjPK73rC~c(hl~@0lyJao?L;hQ zNW$(c*2cn!e01{e*YLOZP?6Ryw8@RBq>OG}UxopL^DMu&+MY;(M;nLz32#$=dh>jK zWLrarZetEB*#^2Xd-wM^JiQ|o6&td%+s<86pNIs)K6Oj3Z_>78=X8e2FgKrD9_LmI z;w4rELZ-bEGqFJuiPSBpD{jss-S-z=+$>QRHbX>itfO-?@Djc-mrUmE%q)?i-hJ}! zaBXHyw!gkMskGR-HcU6PmJ>ex3teVIAmNP#k5_JtMq3(k<5AOOM=YwFs!saAREawi z@@q8`D4w{F|&#Ri`S6Rj`??wnd8(1D9saECa8qLe%>+ z*r-}dJ99ii{z0apt@s>{v`PCMEw3f8l+RT^q~zbCzo7MAS4Ao+iY^rp*`c;JL1^n~ z>+Z|}(OXh!WI?x_v}1|GVyMMRPAtVg)zY+hmexOwo;!1BC^u985aWz!vaTcEe{@~P zmQ-)3z2>;Bai%Gl^mjGHI{z@xIX>MJ4U@mqaj|!J+tznZL}MGOJx_Ed(}|C?%b|Ek z;JhtS-p&f^l*uG9OW91yWf0B4eA0*wK?X~T{^dH0o3W`y>CvfD`|Vpt^*eJ*+?1yKz)J3c@zZ@kbNfEe zFh4*axLVhK7um@7#AD<~&>j)e!i=&$8C28xL}X5_jy+Gr(@Pe80$xpxAk?I5QVC3u z3M26F%IrJ+beG{k+@+keDG;k2t6k5gD+QG{w?hX8VH}T)G+#{2Y`U)o9hht9a8f`B zT(i%>+&(GPqCBb%S|m7gC`x{{$LT-=5}|^Obm*$f3z(Jzb|hUM7;b_AcB~j|-fxBh zn{@(drY_OaZr-xxibzLGOMBHwd!#ldgH&ocRQ17d3RlE_-ThS`n7`|4CN4GEbde^T zZX(7r-(z?cXTHbrDvY3i>DT8zvXie*T13o+l+Yx6Sc%jUSehs(4nl@l4b|{vDnPbL zOK?DQ5(5#}Hh!GR(t zlgUbMpe`@0(^+!NP`7&CMY&zPa#^{ZH3Rc=u=t;v+w|+6Ps!QkwReU>WOf&E;`--j z=1!keNj4Q;ZAc2b^9b>K4=Z*j=v^)%8e+t(Ri=p-aUe~U4fuUXk%4K3o&e$&OZAlP zF{@NynRnRL3Ea{8BUA%$N_fj0rn4JI5Xi~hwfs=UIy-c3+R;k+U~LH>JVHLm>ruQy zK1K7*uVv+L?Vu+UCy@*eHPe|l7#(V+vz=x-6IzqZfFK+yhzVEI=&gK8Fd8I-Q97!X z*(ldvxEP}-6}N!cL^qLVsBsLIEE5G9BvX(82^Y-Guf)FQEq zDy)eXp|M6R7Ncz5(Xwu9TbrjPJvlL$Ie(~kp?AxUrWRKwH8$Edd!ZQ1jy0~C2-pK) zYRI_>Ih$G6F}l`Y=?_;2BK1>)l;<;yPcRNY0q0Z|jLxjWIU6t_Uk`LU&q{FPV(L?W zsY)m(Wy;asRd;TYr{_1X&o_G${$X3y+8KT})kZVH(QUKY4HXq5^%B{+RXvtoO2;eN z{!Ekiz*xPgr|NK=%IT@-7uArQcp|KB6x1pD9<2DpUXJyiXzuGT*eks(>6OX^@hNy` zi|{3mcbbNmWe^4ofsAPJ_39PP=+lE1v%W>u&Vrzg;do8_2+;)?u&+we4jd$xcV3}{ z<874L%sZ{3sL!ITX{2jIwFg1H)zE3lXTzisk4)Zs%RP4hg$~%aZ{ELa3kRmjFH&Hd zY+XOetn1r0cgdwcqf~ogQdt2`6Nq_e{`OzaTum;ac2K+0Vh3?k1$%yN7_Y?;J59gz>Jx z&Thqt7_y5JqUB2ZTXAAo-pu8npWa#+*{z?T%llEnd|woUGK){yT|rm~r{HumQN(hN zx!c*HtKP-Xcg1rkRxPq(6LMxEHqcf?;eC08-5Pv@L-DeCNq(4DO1PN~(&GlA*0@9i zX7(FW#H8K=i^gTGd{!|kiZo1K^=^S{HS{VZ$=q2yR&SMVAl4J^6f3qC*6txznJ2%K zkoV-y&Qi|T6TcajWkeV)7H zo^s0`nIb)Mr@jshIY)kf#9XtnYhwLUZDOE#X{xDl$9i&g;kKsqI&!IsANG6dzrB1)|9Ob@Y7=0G+SCz7Ehf=ml|;d25Ejf-O%iN22H!$2P!nZ3z$5HM zkqYQJ>Z}O|{M51UkzGz&$wqdmlTg7b@ekkRd2#CupU=$9(%&u3eCO|QTBN=3EjqJ% zw!Ihrx9w(_U2$${ZEh#X&xK-pOlvSl z;uSXwk0>4lENmoZQe67Plz<;syao8NrwogIien*1>vUMi2TJ&EHCW_j z{HW3He!&DgBPz5BUr<~v#A1#UqeYxDp?W58%B5(!I>wHQa}@@ggtZo}v_=#d=f-)| z-FF#P^3|>08M@JU+j%ugH$(fZu9(&2F=+ z&Q(d#0pv{H|5p+7TdZ>V_f>j|JneQFJr5l}-o0hZr{0>P|3Bo%&F!~MR-B!F;_0UA z$Nvg`Jg(91ImOmUtd=M-SyfqBhlRy;+1*vfN}AnmBNhvF`I+W1>S&iqrCrn6KS0ZA zSgq!HwSswr)}Qu-4_PE}v3zf!W|HMIm!s$MXz^9@z{^nemX#Uchf7(qT>5tze&l$R zc=oAs^FDI3Q0^>xkbF(ozDa9;hhf%yRuI)_%J$%in7WXeE6qZu%A@nXn` z)@59XxqNAtk6s5cV-nN^uc?^Nkbz&-WQQLf?Qd_{^4VIsue+yDuKmpBmiGROrya`C z@sR_W`5no<;~O_`-Z;J|wPQYWU}Ws*kf2+KZ5q9w)c6M5omx9xPuNhbo#orK3SUt| z#cZ2qkg+k4u?8*chF#2RSvS^VBF(C@w&85uSBTuYB8JIZ^u@}F1_NFqW;4k|ZIox{ z*xoWbr<~ON$XWApK2$0zR!hn`{m9Dm3o*?F@<-qilK?zxpy4{aE+7NVcJYuFS_Y6z zeels6FTV7Y=qhZdwFMcrr%3Y*(RBj`k(1tD6)$Po%`C&DqO_;UPGNyp2vw~H-BZ;l z3dyMi#re~)|GPT%I53nApE|O%u65Avv{wb?#)0vXBV&%ev*b|W{=J)b-|2B1cRDA> z-@oU|9zIvGO&k%NLRLv(jou0ag?GgCK0)>Ruz6!*AA*ImiR+@a7zq~Ky*;UHq{`{^ zm?<%KkM%mY8Qp<$G(|jZI$f^7bDDbKD3B!i5tXE;e@7lJY{$=6!Z^Q2>m$UKsLhOt zWn_wbl!*pr?&fw0dE&@3Ho*)_#XLq-%F+?e_rfgfidrpcoeTxTP@kq4$IpK!@r|%!TC?M!y=NtiX4m z+ao94)PDD{@$1Me;j}90M3jm(y>;nGmD}Yp?8NzLb6Ol5phPcB;8YnuSHRew*V7Jh zn%HY81$T)>+OgMC0!s2VdeXrw7RY_DB9F6I34%U1#~}oTNyT1?Wi+M&eyhc76nR!o z73X+hfq9Vzv2i{pb0~8Uh%9``SB+t8A%hm;Z#JvR2|Od+?8=jWI52u_ZglCWCB8K; zZ>-Ob^|Xkwb9ZjJd~0*!i+1t9#_AdhOGh`hwkd`0M+9=_G!Wo*S|cK+)Kpl2_7sqx zl<uyU;YZmA_3Idgt^ zS&I+J(K1h&tc?k^a=hMaQUlOgd^4U+SYbNPD!TE*ie!%EdqyU|^0@u_E4D0HT3fny zqn<)e)9eLk%P6@UTp6e%s3hs zM;jV%NPZ-B>Y3wx{QZ@=8xZS={rt|p7SoW?lRYQHh~oRLSdA~w!n{v zVg6Q(cNVbH42!46OKyROI?^6XLv_$!dwTF4TX#LHwplgq5{ZElk)AezmxlXje_`E_yxLmQ>X{Bpc zSJOuGworFGS1?(L#b~nVYP_?+6b--^F~7;Nx9T^mxO_fe#22oPgFtqBoEYntG@HC$ zxdRkWhRdC!Cw^ax9Zf36VEBb0=DfMon0be~|c=T@dZbRi) z7t*4VAkYQg*BkNf2YojS#g)adVurh}7Lh{+hCdinoB|F;Qz9?ZO7&jZOdbY4KD_ol zyZ?ur*gyX6{R<1T@7Z?6!t6V@y_3g){g}qNcPY6ltoLiTm_b7LiNqpw>7=>(i1%cB zD7ryV2xMGAyd5*7)0t*5!{_Z|>NUmqpYBPAY8uDe84vwi*I*(9wsbgF*Z<>CI-YEl zjf@Dlxq4etiOP*pwdVX8kO`vr0;@p}I`3}!`%hWDdH&ol98j=)ikXFOGXo>4g>R=J516mKSmrSc(e?{I?#b1KXnVc!(rWAE_=ZepZ+nWQmmXT$vgN?J z;%n(`K{?X}5{Ok$?_R%~j+c)=A>6MxB4H8iC=kU7Vv$sk*#s?DDX3!>XHCpMZm|e+ zhLS+b^eR26IfUKSYmlU129akbi)ZTwR#Rn)mzj@SY3LR;g?JTtb4hJ^Rxlwi?rv!9 zSDIUz`?1@azyjnlrQ+4__pU22^=ZD2%AZ-$FeY|+< zQw>&RI0RO{Nuq;pSLyA% zI$pWQmZ{CujbArA``+n9qPuY3hG>k0BjIxnALbZ%z>c8*bb*=^q4#e0gS`8D_}znh z4f9}ZRJXuqDwcvI?xp3ZaHj{Ur@$k4P|mr`CQza=kgf#!IBx##_=0)0hS49yJV=TNp0sLBdUzlFw-+fIB&;C4>FfpRJIP=oI-(2@M-xxK`^w|* ze8KK?I-HK^cz$C8mZMK^>LITd=E;MnuWX3Nn!FBI9QOchIq_nccK|Wis)$jtW2K)d z!H9RdOtQ_HO<=tQDg1m$VE8EkSA86~(_#u?-a)4fQ>PdJxPHi$c&8#>y!6#2dz;m| zvD&+3{HCvpU8leP$3K#vG&!T*Y@{u^X5CMJs;&k3S6mC@`BaW1;m0@NcPrK%Lrnx^ z-hMP2DCxms!i~Y|j>W+s&Utb!nXE7T@Wdy`$&=q92MYxvp8h(sgC@?rMvlXGRpED4 zQB4c@FsK##jAC9;Tr&C9Ev9Ay9nVi~-m}#2jrhaa*=^+Z!oCq}CDY%qcu^&MXEm(Z zq%u|kXMoo!8q6*jAs$Nt2x&8h_kdnwGGM(oDY(u`OeSHMz)2Vh2Ym4PYLCmEbh&Im zMm!wU(nXy)Ub-m5OS*}b_QC_x8%8=@?xi(K~Lxm!!h71lTk7);xvd6L49z85)vZQ$+!mU=J$}&nd0idi898}!;P~-;{|9gRYJYcUS8va$Q(}I{)*bnY@b5`i zLt|ZKl2r0GBam@F2k4F};1 z{5~v%0qoBU>ZnO%>d-Qhmk;i{JPB^o-p^feMbE&8{$@!T>gee1`Dx*|{DM?mfN@R+ zU;8N$K3dmQPn~2qR&pcQ`a#S)^8WQXa-|aRz_J{<2x_<@k&ddy|Nm){T!P>J9;xt7 zHrE7vA+J73Zeg*j+kCZYc&u>q2=#gXUR(q8FYogV7JZ)4QlF>k?f5)@eSEmPZT_F@ z>cbT)hf;gyk_TpHckJA`{$Ofuk9_XNnJb0`mVZiXM0bJA zu?Y=I)=Chk1yc|}zl2i{mmdcQjA*e~Y!(~tay%ANGT7*NVURJC-Cu~m>$7)1b$#F1 z*ohM;QGNmfgw+!jjnZb&WB-%t_`jPMgkt-s*8a*My|3c!KZDJH`c(v@?8CTOr|ekN z2~+_zb$Go-U{8?#CUHLsetNtEi-tl5Lnso81Ou!nrom-!)>%znib*M|F1KYGqP?j2|5?l*s=1` z|MPP)tvV-i+vGLxSba{{kKgy@vQsLKxd2CLT&NQoh4Ym|X#Uptt85q&)Ih9eX)5Z2 zjkQ+WN3>2Vf@w+>c(rI)#E@yD$!gpW`d5%TqC=+X`ugf>L8x!6Z>-B^(y64JsE$|1 zK%!81%_>uQc+FK;?nfnvnmwyd_o?M*n$Nz)+@FTE$_On&JI=j`qM4LyA_k+_Mr;-^ zw}gsPILt~c^kp#`7ORL&Fqv(p{h&Pt>2-6+Jl)zF3JF4Mduw}3b5mnOeO)$`0kyuC zqhs1lXG6#IX}=&LbQJh(85nFY1<2mP$S}%?qNm1UDH1kfW51V@f)eHQgGG91dv%QQ zH$i*+c_GE>UZ!|`J>F+r+t07J7I{A{eTCxFyTMu5uay*`j3Xj+0t#DU>#pd-{K=2^j6ABTY@dF8v6dvIBTVW3uwp0A?YiFLi zK7sRn|Ja!LC)~ZSBG&ijn@)cn#Z%!yy42d<9oP0Qj$6NXe@N$59RC`n&qgah;`pWF z_$5To2jvX7U_aF>&_D`_Fnk<5NKCJnYNIf6Gaa~Dw}R)xM%~OV|6eRFlK3asq1WK3 zHy5gk3&LpXlwPNp_!vEPu5tkPChSbGTtdNs*I*_|0)w2Qpdu1EDxf)RzDS^+0s*1N zEP@gEbU(&N2Wcc}$S^I-hz=sB`?3=DrBG&HmRW}LOLk=8_bV1e zdTjY#{9>8KQTO5JDV}{+XaMVVp|}rWbYX+pP!EC#-5#PD6g?_}wEc)>PAkeupt?Fi zsB5Te;NmA<6X6@M@~j(>fzoGm>-NN|J8z0jdarKFEv(#ff1=Yq{bhA=wS9D{w%0yH z9$l}s88 z$#fEQ8@BvGzsH5a11XoY3W$R^l7cQ|pi37!pg(zTLk!8nFL*rAU05p};|4l(4!Ax zS9*e=i#TXCB@7xhYYGUn0rYx^Mk1dqqlsCHvD%f-=m>OUM?RdOfdL~!5k{WQo5sep zQtRz&!-rS!{V{EpDZjSKBr-K!+hj6@Ym0)| zpj+E69lWh>o$rr-FIV`>L{HE7M0d}`VeDttKq%4YG(15>68sXFen4faK>M>S}LqPagm5`*^&KCtN{(V7!qu6zD^BEnh+y&uu3WC$^bR+r!yBcv-pv~%yQ_hH+Wj`1zexR%P>B6^z&oAr7jB3cbyLc9b zSaJOopa0vduI+F8^qS_5e9z>X{@la>@m#cPo!B+DA(yXu^aeSRiWaVoH#KA*V7{$Q zAh&RQ38}Ieb3{?71@R!Xhk(Bug%L%m1Y0&#g&?6*S`B*|N6&0=JjT?~CzIiDvN73E zpAF05M5Z?`qeae#U+Vfg(w+xembRwU;DVc(aoJh26ZyWAl>r^rq zwAo)H{{wP0gt;)Nf7n6v2o6LuF5+?2Xc6>LahjF7PbHH^Q&b@1l%Xk|7(bSYfShe?$V#G7&G9ti#z&1@gV5mVV>Jfg zy9~%u6CMKPayqrN)slIez2y3myv}pp0h8@1p+RJ0n?AjBpX072n7fV~k+d-@l$kTw z9EbJoeHty^6#iLVNAYjOAHcZ@k_|x!L@>D%7Wi3>Ag*3G1C3Lt#e=*M7S+`K8Z8Vc zDsiBdG^PrmI}p&mM6JfLCqa|PdhFlc)0eJsfNgL( zoHY+t4##df1S=$VRJA+fQ(kM~U1pfUu?}*0{{iNg#r=dnM+-=Uk~(!kZG^DnVebo8 zm(^KmgN|lkEw7frmNUCl2@GVWE?a<1aJ+Rmk8tZkf4P(Bw#h?!7SEdqe6uV5Rh6?UdLzheqQMN-ACR> z=ZNP8oRpwTL=kDrUWMQjQ!Kz8GmwHsTuYdt&nF1JsIMjxf)9A&z_-QJz|sSP&(f76 z-^UqhN5aSHMENxJCjpyp;S?R~+LEz8LcUYxK1T$dQy|aM^{K`i9WB`s?~F}!b@XR5 zU7hMGkJAnxsB|Uccs3Ik4^>9A1WzZgBlGOD=bb!pWb{|R>O0cYfy&qX{Epq{?JH!S zoNuky*27>ej?qvpt}nK0>m;*wn8R!0CCm>EKc0fmRj{}SK}EEpH|^9lPA@=0>;eRR zqajQUrOe`uyW-^IKYse@-xTg9=a8S=G zleNFrA#gvrM8{Vv+=xhAqNHNg;dN;x4LZl1F!7LJ63n1zF6a=E=%pE6aZ0l`t4Otc ztc*wdlcR6%1G5xIu~w*MDxW8rt}xX!#LECH$*#CrB@D@w;3rkRmz-0Dbn4IpC7lNf zA(Bit|8Z^puXnH-46yUXdhVm~F%Jz^Ks2cp5CxdVCEUvoQz101H@HrXl>qyIjoXhG zEV`S z@6*eY9G&x}jOVD|=ppJKAVt5CFau9Mhkhfzf8J=<%bPylj{4G_>iI+EirP*&xQyH? z9MXT!<=Pk?A|GU9(D^7>pC+x(N%HI}eeCM@+r(|EoO99fL=cI{%Ho!b0!k#JPCy}Q znJ_D9SK|>Og3RcZlP)y>Q(oD$%z06iP2{QQSWZoA80mkR38vku zzH~H^+E<@VHwHpuGj#k-@Z&amzO^Wg95ru2P(d*0B{YqlVw9{v70JbdD~K!3F^l93 zxvlWQ-#q>FkE`(T-F?U0P4j9D!Gn1In{&)Y2VM3l&}BWK354-BAWY0;E$mHklIBud zh|xxruTACD2g$hfnh9QK4ejaV)@;K>1L%kucIL9c#_^n(fmzOibk-GY^${zHJwBb6wa#P{DJMJi+G0ht9SvnbS$H8{+pl?lj zp3=+=YyJ<^W*=4tJ;W%fMw2uZ0PB6NiKwO%*A9Xj-au5~_8~$5rKlO<(;(Z}tuE-D zJQ$7a-PeD3hb5wHo$T7wFf$ekG^IDMzhz6sO{3# zy7ptm_P5`k+l)3?_lPj0tYJ2zBp}X=o1&3xy9KmCx|?e>$hWA0$(=C5rRc3iMzK6> znVb$on|x~9ShPDivTb-Im)TbN)20jiuDxOEC7?ALZ?!KVBi|+Sh39ubroFAJ^JnSKABE(YdSN|0m%)y8eAy`Tt_f(lGiqoEo^$utJOA;+a;Cu&_O*{df{Deb7>&UtgYb zulQ;2je9uLX^fa&ADcNUsJ4;lr)Ni8iNboqz{rA;8gkqzT(pVeEFg{M^^5+cXP4l= zKmJkd!f-Qg8;Vmj*3XZ&q17xJZ3a=Oz+k8fAVP&m>*{D%!z>trJDOe2N)y8nU{P-+ z00KF2staD0&%=+dC!c+mJXo0j;~&X`>n7lT>!!F|@YB7qh3$>~MH}8v_XcZ!eSguH z>!>E$Bd+;AY`&#Ks{2r!O=u^50&A6fY<7UZ3Grf(}BrsB21iyIet9L!EwQy{5pCU zUSs`Rpxs9G*qvODO)b|^`IJ$P++C<&fKsS}9hPegM9$e^O_PCbmvU%5c?PJ>Y+hNqlG}U!m zr`W7wdUvb))`-SF2GlO7iVEzm;=WC3P}|-d>E5xl1O9vCjW-s5{Np0OjZmG5&ByXZ zHlNdHjtf7a=e%2S(9A3vQ#TzTzyx`oz~jpOVBgMoUOu^fVSjke+XspSe&^?oI=t;q1b0yhEURLy+nXFlzn^ZR{;O_U%mMWgP$S@8z$% zd*3gA$$gX^bl+Nq8YN_AyiI+ST#mWjE+=|WaS!`FvgFBq=j6$oe|Y=X|LF#?t5A53 zwBWI(%8U-WFE3*IayM^>^R$EV!$tf&{YtSvl>--P{?Z;e2b@B+u!n^)R$zdp9kgT$ zH;lhY{5Kxw=+;1nYt*YltYkr1MzcBigW0ECuIi+WMDpZyj(W4%Ba@s<{+E+A1I>{J zU)Jq$1{^zoczfYfCr^@=&o(#O?bB9Q;98hR7Y*cPy4*7`cB2rag)=CJl3gkbIqBJ$ zGsj)I@BG$Yc;Mv0gUm;Q{Pzsqd&i2hj`QU==^b8^QjgIJpc=4Djv%eyQVi9FE>%qO zTX>i*UuLx6z6tNzzI|!u&VvX4vhRf#_T8@P_Rol;?41-F^($wtu^nU#%M)|JkMB@Af-I@5Ko65avS?w}XjYYy z((5w70fl4)=?rHySW{l|9T-%7{nn+c>mNFJ@H3&&PEz}w>Ctl^U~ARPb?Iu%S9V)X zh&wffVg%Ums6np-xLrOU-IQ@Tg91vDC78RJUbB00;`^?yGKuG2d7dOyUET7){=I+u z%ZoaL-GzhXuCdO(!C%1kdIv3)0`sNsq%5=m@#Mc3U#4-j^GapRhZX5S;21E= z1-FOKVm3-RAO@O;;ZpRLQ3Pm2 zdygvN3RobX9UEN7P2XylkBXqUEFly$>QWvocqmps_(jQLJ$C;;dXAAV2lD#{KC7;5onD(gpkU+|IOTc zz{gQteZzC_Y*pRas#RHOyLwx#R^2PBTE&(n%eJgu+&vG z-Q>v?Kz@;JK)I*D)xb#(j1<@6P-iB7OypOv7r2U^?VYBqlo<;w#Vv$?Q|K7wXSEC&YV8+gF<%p1$NXkI zrC7(s(*8-%ZIJq)eS#avIiJMP-qE;dOyrivz|xX!EIO%(i%RWWl^t>)K7L~VffJ4A zEpKdYZd|;$sSz)}`Pi}BZaKc@NZZKRhE3yRn>UO}Hhcr!TUUxQ;VLeAy;Z*c*JyqL zr4_4>D(-6*?;|$JZccH%LB9UU6c^{YM4y}D#D2w};5A|_#KyV7%fg}|I2sMXkXs84 z?I5_BC4<(8h)zpOOiXj9xg42^wnVGn2C+>=07tVBpYWP!G>4zdGG$b!I1cy3@wgS^ zanbRBCQJ?w4Qbd2^4U5f1vls{Ra{+Emc-5RpkUAz3 zL`0W*TeRW~w1U<#7ns-z+M(*o&CSTj4dj*=7ed!TKZ^y~PZtYXaB%4MxPhVh1C1LX ziaV1kab2=lQ4v=SImUCMMH&_@((o#cB3h(p(V|2I-I@~+^<4o2nD45%*hx&i;_Bk6 zigIU>v(WGT_hLm0^I-Lv0!Q=Nv0wnnACD#SUfsjiHuV#{H8%%Yyr)Fo&tK5`CTj7z zl!KhhRd560m2&IrBy}RKVW#ErWD4zholKTZmfZ8&0m<2!nXHIeUPWG@q$o2t)9=ce zSH>(=bNVu7)`d9u)%nHDQs=R3ah!T)ug&L{%!gW8UVh2_kc+OXeUuNGgbz!@!TTU8m)4?kYoi&xRBMtiB4DwNIqOq>J*2(r!6B* zs~s>!{z1kKaSKnRo5PsuDT_E@;J^UdpOer@#t5~&@&Jcx7UO!v22bZP zQZGcT!{NwtE@uJve{4R`SXJk7}YlDQC`H_moH6_a%t z;1+R%;nh(zPgyBe6Fz9vnMkW4JRqVn23JR*2N7l6Fw!?$tB!MV6UcC0UxlQ9BppWFJ07>>|j@ z35V;`$mu~e4d_5hez_YOdGLd@H4a-DQt~lv@$Ad+IR7(u)br zulG;e(;S|1af}1urq16>!)xj4nf*E*%}Pt{+$j#Jpg58wPq93fB3b?)LjQ<^Q-OO@ zf_P7baCI* zY3POZB+#=wgJ}0qT}(rE7?iY75%rea!SFs~5}A-igrYsGm)WZrS0B8%JExkVk6xRi(BN{(4_~l!tC!8`a z`P3)qCxo|lrqLjr%2O{24`mfZU_e&1skB3?2t))H97@(X%|rY$vhMh>yVhChY;I|6 z^i*co=B}Yqmez2T8+u9*vwX9L*bNY2&Qjph-lMKms|MZ9K6* z&6YFfs%t!PK*)5CdtPg{rJZL?Y;7WcnPI1o9=na7O5fT!xv9xLVXNABp3iD3*p%q&;wniiuOSFxWw|PiJCK&M_o`6N8dSZk<`WWw)2Js>ZAr2wA~x{6Y}`i zg(smw7f;5ohHib51;&Y{2d7FzYOP8=nM}>Fq`77oV}Y^}JY#~*BBV-{q$NA#-)F|% z$i3y?U`1eX@cU=S2vN>`inD2+pcm@+WhP+-3~Y)8_2hPp4(QsI<<0W=Ol~_%(}^}I ztPFu`Sfm^Nq1DhzgHZYOClJb9sMxS${ClVe+lo zcR_xBLEZ)XR^$8#Ybp*AN{A~f+8Qbk`D(?|6xx4EGKq}g^z~I1fP@Ut~i}aB#l$+wgP@oqjh>{Lb=;z!JkGhbmn*OS+r$ zpZsZ2((SkFE0AXP`-^K195|5Ndhzhk#qB9WH7f=O>Q_#@^2#f6j1@3mfa)&|7iq+5 zCzCX#hJh$p;4U$d;}VUDf+2<6s~42;35Xp?h%Nou!9s%~K$EOUJOf5BdT0rr>@-JK z2KkJ|DR^{Iu!1@Y0_yvAnjJ8=I2}$WAu<8 zMgAWnc8s*eA*3DMHZJJ~I^A#=H}|H2aB4;dX!p4;lNazX=`rnUqP5v*NhVKaNMM~K ziDv%-6e+44pV%H+*HYG;uGxL8$n^q5Cv2Q?iCj55ix#bt^GAd@6|02sv{(=78Cnji>X*O7 zm8=dF3PKeq8AAp8<{7qc&Yg>`V%I-e63ww-IHYI9*yDHU^)`C{9(JAjG@qR3(~RP+ zo)LXrm$PyIM>Vs&ut3mb6%QYw&LNOM`Bw46aNRv{AsxZ6Vu7{f$t3^)rn@Ao!QR96;zB zRc&Nee<>1*IDzQPZ2*e+V!3cv?#xS*A2=YR2*<6+J}--X%4Dr!^}r zIcs^ia}~=I16t`Ce3`AmQBHBaRlfe$waV)a^7T&w%tjDS@pR1pS>O6Bb(g1r_N~{P zecyT|2$%J(e|u^m26vTIJML1lB&_7v@JK?Q5{@;Z&d-VAPYnCw@#M3B$dkyA=-AnH z*q2`sdF76|egI2Aw7)yrB*xZ1#nrfpb8^=(;b|fItJ=zVl|<{kaa7*UzpjwD*)oug z=N0+ctVk%WgXxZUhf0;M%+_a-V<(qma+}?`ER)-!71=Ly+#d{4MvLv$uR3_qiZ$mB zHWWHDoc^-zuER}b1%-#UPT;1hj_HJ@Eq%l0l{#-;Q31d7B4ci0WEVQVQq*51tbvK_ zPqI=V3T}wsb2}@FmLzmST`jZSoW^SQIL(T4*u^?-D;jPSYwg65OZMzPphBCqhw_@7 zwJQ(SG^qa0@5PI+IdSbxH(qMVxhcce-X2NmTzRKdKOenH>%?V*(;%})Qs^WhL6cJu zD}w4o&)qP68+snS5h+4%Oe#O03V9nUkUCIMdt9f*YPE!MqX`@2ZP5x6H0_2K@nl)O zMx^?97$>@!}OCx_nDNFZGPO{qn=vBJ+-e7xA>}Q-r_8z?34w#umf1zX3?y*c$P9(k5e z19K@sFuJ{77jt{DRAv)pXf1kcmoT}y zZm`VfZ%MOMlnv|jsD!LJB1*7@@Hd5M3k&w3wMToNsmRZ5b2ko7 zhbKb=Yf4JZOTA%FL-E=M+_b8#sXNo0m*e(k+FN=GmzB5nW~Nv(E!CE^M!#2-FFy1x z%}e%#odNvrGB>%vvd$(;n=TKRoqHOy6YqoD4Li-}eszRYEbPm&t z;ki_|`HkpjyM$pe$n_4I+nEL3QnYF)8iqMN(GOX9K4RI^Hk4qv*hSzsL!2PDvQ2Aj z7stvV?x;L>+xByU!ReO|RX+A|Ss+l3wmuA$J=}LL`RaQBs8i6^EYgPcC&l_6?0SQI z{gXAy>#g$j&tk6cVb`hd|H?dUEW4*f{_Gd4m|u}ymv9e7fbdk{9`w9U#yw~mR#Kx; z4KXhw1o4Xs^ZXunjzfWfNH_xm!ZdFV(bMtp5WAui8y^=jd;i?|mdEp=*kiF2>>07M zBF#rifWDnP&AFarSR1KlltbMG4G&983iJIww^P~fFi~^nc8Bu^_3i@Q4wd6NzCf$P zxg-0(WS&OjbstoY#}&8r;KK8Ct3000aC_V=8a*xGD0QZEXu4SH$o%n$PTS-&!D>5qHwx%2L2V=_qh#>7b3XNu>11}Es&D4s6! zX{*G)1Wt^TuW~~&<;{YB(ER0=eF`*LJL1z&WnkOAps*+;XOjC>j>CYGgiX$1mb=u(1*A@F| zp|DS+Wsa0UP{R-Xoy^mm-guG$U}WeUsW)Ex&ELM{z&RHZR+mC;9uYHPpxEXWkEJ7M zZ=kH1u7-+pFzeWL$vTC{7)=#E2$ z{@~(dLsC+jHxDmvYI=U@-thVXbYWy~VNq}QkBtVtKb4z5Rs{S=~*YED_Gw(&D@@K8}IE~b?5p+O+y#2>OLQRJF=8;umHUk z$wxn97()Cy$N?26>Q6tBu!ZD$t9<=4?k>gk68ZWU-0h0%(dR_Cw>Xh*K8^OQTgL)G z$uM|}F&U-@uwd}BO8$9(-DILA8^|SK5ih~PYz!3<#e<2zftH_w(d4EO32si4JCP4~ zSwo#KFEiOB7*)&emN+sH!s-TLrN(H9w8XGxJQ`zZ=8`!Zw>+FgEA(45JnMCCq@XpL z@s4qH(E?~qTw{1pg~XtFy12ZEX_3q&2{yH4S^&aY2w0+R=`101=jim#MTZVmt;kvA zbyXG@;pYC%HCqd8H{(ioS>$(%10J{YB_r&7!r+q>1L+I96C|seZ6SawMhjjTjYhC0 zoY0hxho*GA39a3}?dSuyT|P2#^v;LgeHRrY-Q$l(zKr}t#3_pL6CI!lVa)S(r%|BY zEiCRJ+n^~~kxHrZ<`-FX>8s==JN{VJ|=$)Uv^={iD^3`^c%&TIVSGqFBE2z!(eTvtO z+yBij_kT+l`@d;o`oBFH`2?jVM>ZhSXXp|l1+H2*hIWHbjy{*JF*94kz3e<^*IVW5 ze_gG--XLH9#H+ksD_)0O>r2@6Q*KJPbp3YJ%f>@&@+WDXyqa(*POmhv-C)$+Cwer& z=f@hQX%=jh27^tI8l}}o-jfG?mDDH=1|Q4UGxjM{2IJ@UDbpzWlsV--W#1?K-re(+ zNg^;VS>Jwq)4FxT*AHDZIeh8R38n*u$h%*{j}Q&W$K`Xw;WdD4hG=d!Qmf45)Wm94 zhaQU6XaR*Lx={u?<#LHbosc9$9Z+jDU4FmA!Eye4e|}!B!{;Dc5qWZEq1&AZje}#m z-zu6$(G>NNSgOxvAw0}?=9MnWT;4sKQa(M?k<}V%Y<~FCr(WI6lsi0BWfLt|g zjk+r-iQ_WT?P*E2B&*RtK9=CoCB&eqVvkzrurOKxD53{)+i1E#n+~4RkQo(x_MJMr6g4hHi zdN5d#euFB(S`Z@7#R{&yvul^Fq{QVcDR%uDtCME$BL6Neb-GH}`gfo!k)2N@E9Hu? z(Tr5Qg{-{{gw%;5P7)53OmH7_yQLDdlOXU|KxTj@qhvrEQSlxz7a``3a8B$m$#wGU zRq$&Vf*LIwU~wF>UOjFTLjW2904hpy3ys^z@iL-Q{H17lYKkG<)KeWW6$!QstI6mI z;5+mD&pvEUO-X$Md3~jNZBUnNEcZmmnM}^i{&1>+*y=Do+>x4s`F1t{qevrU?!sw9 z2~T4eRiJ_Mt5jl@YMu}bt$4}P1VSye4V*)5NJ(N(EM1(OR>4)!6A{M6!> z%Ch8!s?&4Qdw5^E*_4rCGG#=L)K?p;QXH<2rS)(LcMG3HR5{HfMCB?iFcJ$P8W3;K z?@3kZvB7Rbmw0`sTo-vc8KYXgyq1jkP9hmshZ9n1Ml|ra^C1TqE&y4DLmy32@G31# z&U4)v;dHR__(+l|HaBmW-*p7pLWqW^7|!DbB;OBninW&t!@eWt=_a^ zU52Bmu(1-~=_*Q0FefA?B>COma(_W`qFtYmpiT7WxQnG)1aIJPayd}z(kL)S%sT)f z#yv2%QD+YHzw&qmliaA2Ho#KUT9QgF(Zn$HMoMIOL*9;OTp7Vae@)J^{v*wk751!# z%ZkU>t{vG_I8@l|E3R<*8n%_M4CZ&`4+VyzGU{ey23sr6Vp%aL|T9jbKP=# zZUjB5sWm|UN9T^^6-+E%?kirE@9#ucKKC3-c;%HJ|5$o<1HO@LAI&2g;5YqbNbGLi zFi>5!a%|=5lA;y8=*p?7%MbSV?-yxuphiMdGOY&?)8CpyP?~n5QLxcYzZ$v+LyVet z&8^{td|yiX@QT{z9(25-LL1VhWuSzg|D5Rrj#Cr(E9BfvBWAms>j`(8kXDy~^khmn zEvM(T`f<87dO4j=H2_9qpff2UQ3I{jpqxbo>dGc3NVYrM?aXmxWoAI*K~|J6S(jem zCF>Ew8UgD2q3M&h%23Ej>>VvR)l5M$QTQukLS&OL*3jzjU9vCDp;sBv$Y(0;k?q@W z%5C2e`QouYBGlUAu5>D3a%@UR`GOXfkr@xw}@4w z3_7SN$h!q{46|W0U?4ugIvVm`w-$OThuoGxfdA~86TYj)43Wo$vEnpmrXd|w3|yFd z$;J0X?A-||8UCD?-W=#iMWM*cx50qYmt8geTI5g2M*lqb_WA=?uF8D%Rn|j$0$)kS zV}gv;BoPCTSr;}HH!SJkflkJMra5E~f;GA{%5g$4PY8qN(J)D)2*V&To z^_UV1(7nJ^+!^`jzKfcT<0&PpM$xv}$EdA$*C{XVA@8<8Y@Ar>oY-Si>@`W-Oa?$Z zu8{HcA*#GsIEz3VZR&Ki-=q-RXcJh5dyf2Lw6C+W*yOO*%=`mCGTV)Uk=s`e_{@=0k;uk+&pAD|qX4at5M6 z3=~VWf;YPF_|*q~hQ5*#`LegZwWXzVDSBedrd`|dBkQk=JW$=#Q1hvjN41#J4Y$vJhukmeU7z#!5xuK|+9yZQ8_{R- z^_-5&5BrH;h?c-{!0(#-cyK6lI${N=;UyL=eN7O3Zh#jR@b#B%hF4ui?MbpPa4&f; zbifIOOX)sd4(?2_F9_3gQ0;_rkUp3!d;=UMboJ|X_UPtitDdK;-HCh2cAXK%%59l8 zV>;S@;n760x}8WR?o@mC(aT>WJM@F~7oJ#=A&u<=s+-5DnH`X8W>?5Hvtb1}srKun z6>{G^g?{xbBt$l&tMKw?CtjH(4-C<>hhoI2XNs1v%4N==EdhW66)fucd3d zG+dNOL<1rxvIbNf4H}0EbA%X4B3R45dECb?QwcMS~5RY1x^Iq5K0(5JqN{PxHYRfa@va; zT3VW0457+~@`}!m@c2b-Yb&~1I)|F}cBhWD<>b^=R@P1ii}Nb#+6GFN2O4@)b*s7- zjRnP8G|LFzQsC@KQpvSw0@Pay%o5B7l@4mr2vE-lJiHn$Vb8LQOdsBTQG))X+mUbj z$n0DAk;u>cwl(5{Xx`>B{u(lW_0)%-$6cYgexG!m%~xz*lq= zL_Fm2C`Tb6{Yp(|LcZHwsPEFOZbiFRjd>=df#H93EK1GE%*sw()G@o2?0`8VrD9d& z;Ruysb7~_7XkDZVu{NSW*S@&e=o&-UzjW3hBRih|R zUgg*sauSE>-Y0u5f$9r-1THQyGlPEM~<>8wm@%LfMz&nOQKkk)gK45Uj zRi>wh{=8kpH=M*r$(m2)(qrqI)W~&BYQ<(j=?1&SL~cy+X<%C9OimdxVvzDmpE$at z`2gP&V**RGv+tt8)f+`V$`!Al~u2aaBHK<0fHp^4_IfxX2} z&nVxe#S8yAao5ZzGw5HqWA^c=%%G$m5tb04_z@GbX!gM7Px_TcE`)Cjt5WOVA~8`R5}Yj3#nx*OF? zI>_H!H>%O2+KpRY-?(M-26d#1t#cS`0C^n>PkNl@gAy9)vr;*K*hA+LT*qXk)6A?jF>*#Q z=yaLnnU*Mt^tq9z2%XQ+XWw?4;^`6(7_F>UGhHX3hR%IDqZgEBH+wE_esN6r0U5pY z%ox2cf#|Q~L{?^#1)|wxSJ zvGz;)PWW~_o-QdSX8jwwBoyUVy!+INs}KDAK2+3OPtIBS?VTGGuNV80eL}~aLbNiX zV{6H%)f%jx)T!v?(;nnQJmY3+DhxfpaWl9Lz%5@H!Z7Mj4xgxpF9`SDCE z`o&D-!`9Z;Ma?oJJ|!ajk=chBIT+3e{xG2hI;4fe^(nOfcrrO9&cGELIeS=_H1bhP z#vHChEe{2E@FzgjElMNgs@6qH>SB+Um^p(zatGb()U&H6Hi(v3cq%l>)?WhD_a71$ zpvgqcp$t>H-3Hz=`sGO^%TcCJa7(LQrj9pXe&u^t8!!6I-@AGFjb6qHlgm=*obKQ)x)02AxyNbyn0Xm%0zs z$l>5xDl{{=beAA_sjkUIvzh>hiAC{_}Hn=iTL`k}R1j0PA!yvY{YYhP ze!cz3lNhBu8lFHu*|+77e`s8kl@)n|Y~u}2){FjeeiPxTiOlvkcFHiUnwA=7QCr>@;y{wLIn#Q<2c3@(I!;25ZkuW+QNh@boZ14J+S+KrJ{$x{B~i5q9H z1;yxsOHa|gr6b>Tgr9)pB72MMD>Z{0Qgfer;5AAul`7KK6pKI=XehXcu77LVoR=A7kP~=(f=8}q?L%Wa!Hb5>JQpN^^O$K_L6D$NG))k zBTS#5o1LmoWJM$;C8Z>#NE%MM2sPko4_6+#5f^VLT7Klucl_a!Z7t0xHF6UE&~>@< zgAeHbKE-dPzBjrbEJO>Yty#6;7$BDA1Z2XJ?X4zSAH2_OHe1bBW#xHYR`jK^6-Qr= zuPxeGxctcAg)=kvY`OCfN4GW06rkkD-|(Z6r_f@N5-}fuw-Q<)AD}v1nVN*5)h*ea zI;2yh9pJbil6)H^d_qVz>bx)-89fHQ?7(C^@Y7(iJLKf8$EU*w8V?`;&Wf9G=(d%w zUlREkxgx)!e`en4?|kd(=*dE?P*pE>(D~zNmkHfQ80+n<+X+QdyfqV_m`;$FW-9U%*;P8#i=K{ zBTpST$Y{fnU!$A|F*hTxQ4-&vxE?O!lo$P$zk^sNxmx|GD)n)*=B>r)f2QCX8g2J*JZzTBi@Hb%dN`i^dq#*QcUR?TU`heof?2&B~5BhV@(9 z*UkQO%bq=3SRNj}gV1N-+QNxCqQ^p9i)IBGVzPp$i?2e;3JP>8lp%V3;Bk}3O>JbgOvh22ugqv<9TlG2g-D}OJPNO|%_UCeM>pOUeWp5R8`k&_R zVmbYHMe7XtR1XkZUEH^UxAd%ma|dENh@OA6#<&!d2bi_wo+Kg=$JQ7pa>W!yp$Sgy zudcoJ$f{N7J_ByQXJzEuXz5Cnx>>FZ48Cj!=wNn)HAdQ98}VwUgRutNlTx!P#wuA4 z3vm=C;_BAN=>=NR@in6$$QIt=nf60)>hjU8HUNIp^lb~X(? z#Br1ICjQ(pLtu`l^x@-R3di%6MxKN23*ax+P=9G9XYmX`HG%wGYZQ`eOacg&eH1UA>vifdMSiRK&_0(IlL4+8#&C4QpuN z4Z`q@{RYk;K_bbJqKp^$jW>@8rJ~pHu`4N`WxpZguH+XRC-0@*H_ZxvI9Z_M#0=JmEu}72EmvtJ2EK39afC|IwxZIb0v%@rf7%;w|kET-icN(eUNnV5N^1HrKXv4~_H*S&qq`{ zTv+7Fc6wjB$Y0t}Zp-)C5+tL2S^0q@7ac6_%UiZ~WLbBYby>)tTawTG3L5HH$OD@w zlgw>y7LjgwAox^zHpMC)D$MVY1fGZqt>L>oo_vo_P52m3+{N$7jZ^w7mPRF9``%-U zkqj-%ZSXbt3$>+fl3ZI*MYL%K6$Y6_DC7Q;H z%}jM~c>(jhoFtCJV}{bpEKmk9BiDEqkeh#8D42xEr^j<4xrT%TIny{TS$Hh%V$$G-msGFM!lo&s^6swYa z>uKCbIKgHys(GSx0w5%t*50S>nVFXZ>hQyy21QRhBv*;Ct(e>BFImc68kc4j@rQ;Gu^Vsa&< z1vy4g2Gvu}iWQ9=jdI1v)@_INr(;UUlu?nvFm0`+$+uoQpFwf_qBLiL#`|i;82L%r zu4pIsWq@aZoc(I3C$42REW|bi^JCOPA&Q$QgM@%31pMf1I;KgYGdoOW$5K=9xUJq$S1+h&kJ! zf|0}rEb(D{VLlicADnI_AEMe9?m=?864k+EMQ4MghsiSG+5b@AV4>;c#x8_AgL$FPKaPM2)a@jTkP*DRm4GW zL-_uzjPnR7a6kY;vY6P5y_DDBe^1o$;EN-&54>?ZqNh{rm~EWRD1aM?ia!`KPhKoG ze&Si>3=4{14$rCi)%ahm>d%N}Gs}@)IibfU38d0&SHTb!2 ze{0`Yd!M-9;@dh!<>>4+>vsN}_8cbk!FW_xv+>|Wg?zX|k`Lti5jswqYecWtiQ{Lv z3tDphZ&bdFC~|GK$+wCguZK~IL1B9$3^5LqGv@{ zcu6u+sR4HcST14#V>Q{eP@)>VUI|FA*9~wwT>!$A6`c|QBgC_CU^09HSd50w~bLjPKa?uRq$)O4@=a<=;7ChzJdVty%W7M5%@(j z_%(32fOav#$U%~`fQIQbW`o&6}n*<+G7WL)HSU3^mqZwPpvohcI8mlxWZ` z2^EM1jk2<`d|6(P*(G>g9;!)-ZOf%?OK4$*CyBus;3_4+7hl%8z2TgSx~)}{^@O^a zj*>;{=?Dr5otIS>qeabY_ErxL1twc|?fY^zGTJ{{(i-_iN#L$a>l@fw0Xg_XLbIEj zc+3uYvLf8Wp@9{wR^SH$a@%qm%){0{Str%dHqIWPD z$e~pZC0jaxe|T_h&)U3|>(?%7Y-+#o2r@Re4_FHv#R1J>R9JT8NOSuQqoMk$z}PFT z1DV%*a(XAK>!qUq#9XAv4Z%cvS!A} z7SEUtnin!9`aw?O89Kk<2O$E3sB1gq5>PB}O6DmL11=~9Q{{qCbe+urJ9pBsHQh99 zvk)%cx^ZJ4pV1~+-9Kxr5d=hsL57j~%9YBEA=W;N4}l^VGuOf!rg7sO#=e1VF| z#bH??j-6LYGsYLhW{ApbY#H?@5E{}f$!h2phB}g9p#c@liz13rV}a3VfYrt1s9*7R zDo^=k*Iat(i60$YYt|PmYtHui%~}UCxXwNQ_;;BUe=qXcxfeH^##2fM*Pv}6(WN-1 zKy~yqZc(@{C6SoxkoXOtEV9+epGmnCZ=h4FVu22tmzrjCxsRtgaWh1p_JQ3+Rq}4;;2=NpSQ1mT@ssW>{R-!&RtXXy&#a;-4kNimj zo5JE$WMfdo139O8>0sauk=;^S2Kr^{DfIsP2WWQ2Nir23ZCY~qTHDLW;57-Cc%)Ll$fAZ@n$1N%zZUK;n|`{6_kP(A&9yLv^K3@i$_@A zbM0E++S-eUH~Kb~OF@hcHBD8U?yhUDTP3Y={xS0IT=0Xt5Y}V}n8)cv$cx=KkA=V%cMH@HH;u`ZkZW3qlzS({&HpNZWNjbm%KAC}zWjf<#TJl1xl{_)6P zML+)YgnkdKf^6o;S1J7XdJe1fgnBKf;UrTJmz6di%lV>m~zG zld+`IYS_);Mq=wBs8E|q_B<~&S(wy_C}va_lSP`AW-vf4Y)7WSX0YbEVzNl(4lP;> zt?nOP49_)Pu<^CcE7zY}QFF}OzG@^`Us2N2jM5j^^en}RmiFetn&kV`7q>M>uFNUS zci%{+nb3(I!~&75*|c>mJsN||l%PhIno~0b1eh*vp&L!4zJZ0QNFTF>>F4W)U88mCEq+>qGk{L*nRqh6NaP^k+FRI$KWc$8D>q~;_pQ6P4?!~sWC2iME zFF(BG_yyi$EnT8df_w_*=UF;G_n;TJ=yic}(fQ)_w~Dqm1y1#styi?`M6uHHU#{DOmPYj@YJJAl$7AN-Mgq4dw*BwvyqgkBnga%{bCDJQpXPEM|uBgd4>lP~AwYUiM|6$uPtc5e0VP<3m|MH~08 zUgTb!zj^!Zvma7FTBMRUTn%mQ z5|lt-8DU3Ul$dndtIoSXOjsc1pV}W8?cWBO#h2O>k#g_Dpc!y;s;DZXJ z*zZo=7R!`~7(4Bz{nmx~II&<{oS0v1su2pH?O#29xO#fJZvQmOjQsAy53%stYf+w> zDNp}PlwVKKccq>B6n#wRHa1d?tEl|@!FejWh_%c`jQ8vl zRCw+7aUQ4aE52pr@U3r`R;4YD+=?bDf{q%pr6V^%+PK6=j=VFG@=>gtprV6PBN3=8 zsh?hviNS#2M$?Z>!~gHShlMxZnEgmPqqE4qO`hAEyH1H=qbnyZ1$uMCiebmH;#3YO z8$jK3QQeO2b7tyxcJHo+uPU5#-GzOJTCcmP?}FCx$43U%3=a=TXUr@a2g9z(CkHQ& zfo?v;@+92o;6u}h{QqENIm`vjJ+c4Xpl{%nvP}F5)juv^HL=LI*QMvnb=-q8m|5|B zTF3q7>3h(t@O<>(gy>sD|0JJRVBMs;1V~yxBGyf-w(=^zsz4+m=FFeR}L*&=<_Bj zy!d{LR*=2XfpVK*vs4DSkic>$0y!*MjI7)Mer#n?U)7S*^KD^YWpClYaA)cHWu1`^ zy#7F5ULQJ?S5WRZP@h0ewvoGqU&crEbyk8|4i2)k-cqnFDbEa!P8^k6u>gvMzo7P)8CjT>I9ix zvUEV&u|4_{eXfLk3!Vk`4Zk#d@%~G9UAmt~<=&<~1(O$TNjuk4&&%?e2<6_@v5&1J<->^i) zZbHP<)A{KB>1Rr7^2+7$e{GiVIMPlj!Eo;JJfXwNInIE43(m*AIc!;EU&g_`$%mqX zEBGoP=z!vgMB58Cmexw7#T=GVRR)~NxnGrHW6#pF zW2c03L$8saDV|KixnaP$5e};6VcqJYjrC+anE+M*$Oli1_8*IQLv0mV)m_8qUQ)lK zb6tCNRv;_XsCwncs>Z5bleN44+QTcRTN{>Gg_h>!T@aHt6S|%xbfp7bHlkNsiCztL z{j~9MZgX|&bk6RAqzDDhEiTNh_R#cslbto00oRtqmtWQf13A@MA@8aX&iTrP7hYG} zZ82WEylt`3v;^wn5&pq(^&X!^>ftBISjfsn?}_s0H25=FLzE;E5rb4BN%%9c$U^jhwuzA@^xpKq`eO%HowuVQJW*T@ z2ivpH{;F`Sw}1BDMDCR699rNuvErpCk-P6!{V-R2gbiX9)hbh3MSvJyo1dD97i1)rANjfy5(VMWBhc7&p){9 z;U!C^XOhm#udc2Pm6W1Q1A}XZ(5twL&Z?#zz?w*_Tzo4D@TM>y#dMdTAD z#7I=>`n8Zlcvc?^mlFM1hqStJ?kqn7EnAGNxGWKgE*e*-H55d#sMuX|gd+}BWL0&J zY?(dRVhw3g1;pl=3;^@4R*F(h7 zP5Ott4f|iZ>W2r1szT3^FKYYQzwr%rcHzHJ{q!^#y5JcwbkYk$vW3eqbRp+JcHQ2V z$?56C{Z~J6{;Klw7wH!kKKX=D;P~oSS)U|P*AQ4lB8r^@HxEb_5i}QE2s9_Vd1TO> z8{ctYP3`X5fdiLz??BJ(TJhYP$KNGiC~!|r%{?cg=eCZ#*G5j2hH$OLNbzzaPOhJm zU~=LCJ`e@V*=Wd@GFTP zS`XKY-sE%0nZkTyGhq9Z>y5-Ne3{CV3+22XuyL{4E#sofa1&>sHSnO9nhMe$z^O}) zQ&B%<(gM0|GY=4jZ$)c5qmCONJhpS(SX1rI%}h2JOj@FZtwh5uHHLn*F^#^LzK37N zxm5q4^xceZm+@NUU?sL+fr!^?kZPc#?_psnSFaeAL!HORQG#Y_VF=GMx;GTyC|X+0o^ll||%)t;@-FR;Evb%eiq)^YQ|* zWbpgNepk--u`qH|>&m5KPW_*;a5gxt;2CjRV3fphV`^>q&m%(a98cy2!^99$xH3Qc zF7st-s4p|f^@n@&kVcz})S7alds&F?Wk#5XH3J|8Z3hO|IH%^IGp5|gkQ|hQoK{;W z_pz$QU0(2Pnms;<$uEr3isRxemqA)DjV)J#w6=A}b9wethvcf-4?=Q=Cb?y_hkQ-mHN!ifXxanh|OX%9M%2F zOR@FRb%v7c0|&B8gwaEL|M$G}{+ApSd-lBbsni!CljuWK6C>}`QmL(KSCa!+1ZQcX z)f<(bN`Itjj@(peJ@l=amtR;l-O@6B`Q>%{4qr#cS^FJN=mLwy4azvunVEQyrw0NL-`Lt3jG5S7h zS-JEB34>KfWC3{Nh;$;m9}%4m=MurGJq-q{E*67j^7?W`3>E;B{PQcKFa%Z{09M_i z>a@C+x?HcXYiC{Ej?S`9S0Js(vA4cPTfCy9ZN=+empdaZBlE5e&YaG&B>`R2ffXwb zx7qBysVR?*^e+u9Ub(!vbg{ACpY8TLMO#-x{iL}Nm6fqq354|1L$B)iF1J^NUU^Rs zy%I+R{oa03*Qr2Wb*))P22s)Ht}{ydEXgS@ODL9wRb#Pm#Wq5}Bd6PJd~9gB z(Jb{hn4rGg__(X!g19S-jJxu~^1cVXY9KTGZCHmB6QYmzALO|@&K5RnK$TH*ZQwx- z60OOMbyl*FwPNRrnuFiFY}Yv#CHySqcUT+QfNoHHJ_YDXqMf3lLrI%j+z!xGt&PnfT8#e#@Yx?-t3kbJ*(t}a}iX2mKsM0_O@$gZ1Glxn3kNN!-F2?!>W z%Pe64f)sfbrGi1Ps5{tOk(5TLa5yUR(x^k&mfF{ffskAuzT#+N`k%RIY~my_5R1bF zb84JJt!i3)I|h3N#mkw`3_9aVHgX7{SKsWJCK88O#nZK;=y&~HksqLvVt=kT@-qHi za^$N^MH$;c-bZWy7zp1Ji3v;Jr)r1MlSMTt&3X*>$^)#A3f!0%Q|ML4urMmWy|o8K zaLmj5yM9Y!?;ACWMQkxQQbMkv=02FoehEjVLvs;Vb+L#mPnih<{}SgW%cetD=WUxHfIuGyqpkQ2E=da0e^tQw1w4@}Ny3$ZWSPn|^B z_!DTjBG+(yo5rJGpg5~s?qN~ygWP%HOgO9HzlXE(%W5F{7i}B@hJd$dXnMM8|KUrK zf4B+Cbxs9GiN_s##I-bSPI3cYPJ zjCG#kM&&t`r(zEF>F`tvSxV&j96VJp5GSxUVHoL|6I;9O%M0yUE4qL9c!AGudRL5( zlX1R}p>ijYYnCMaf|x4hc+T_=#OvU<{*@xn#vVQ`ftbOi`>MBewr;A%XqBoi^gD$-5F~k^zZJLA>okXlUVl-%|GOgo#{hUhhrfp)rwF4T zMDtki$8sLagXnEVev2SqzZK0!{V(+TtK#*~Wn2}@Junj)6c<-j7lW&^SRfI>l3__t zv!$3*h&Dyj5%lxZ5r}+cuqqmJiDo2JRBJ!bRs||*)PGdh1Y;5tn%df$BGr@A#_y0n? z|7UV+7V`Y!Vyc1*VX7<)Q}y4V`l5+c^v%el5cr*n=FZ$f-}Sz@4p=QzL}>dSJr~Xv zQx*J=F;!8g)tb@XE+#V9$nLA@%cU+;q92Rs!#<)A3JgzWGYcsy4Wtv(#Q#`4Rd69Z z)qEe8QcVtE6}Yd6nP{nVM%Cp#9g+;MRA|je&R;k!mMRz@OXa76JiuN|c!NH>mb~!# zvEd6Z9~(U~Ju>*tJ0Gq1$@jkZlND^fO39i`fO8#PN@Y;#sgLltEvdB`^w?oLv7V4 zDP{JR(Y~?L*2pgk0>8-292}bHr&ytn@nOP451do!6!^3dped*XG?{Zxk7i=7GXdR%PlaswS+Vvslnyk9ei_ zbo*%UXn8A>O@Or%xJ(6}iHCIl7^o7B87V@xz6EZQ@Jxeq@J!|yJQDz#WDQ6jL>U_d z)rII{B-6@hFJ)@c?W4;_Dq5+0{{($bbH&<3|H8+3fa*%|@Jzvf6VEizv^Bh98#o(o z?kKKNA4c8+LdL`((u|BmW=DI6OBzJo;tfi}L*o4UXwD+VGZ_Un&tRfaJX3HEp2-QJ z2_>dOIkV_vSqF`sRMFjqK2Xf&>qzHm7dX82dF&5AA&G@cygsy zoz>i&gsPE&J!qmq6j#!%DAMnnUU!hwRF5R>Buwa_M(EnGb;ICbrv}M(bvgsXK$MXE4 zG2M~FU;TDuV<3oEU2;(>O4sH84D_Xc)6t za1Qx71cwaaMC5z=#wusMr*h5aP17k|TaO(sDBHF6U4QA8J?B*f%PLf_M@(bYD*yJp z!oN9M>%dvCZ{wSPH8+>GuSmV-u(NG>XJ3DV*Dc1~D5eABVObA;gXSK7Cni7n%s8)L zJe-#t08!w)%q(v?Z;7X)XnJX%r{75Yl`u5Bdp0Z65Aq! zSV(iDb0WqoxB$lMG|@R_3KxS%<;;oF#R`e}@wyn>`E!Wei9Q4>`zgN5!F>2Cg%3Xt zzAKI&-Iy;qcV zG{enS>!CZYM#Vb!vc2t5puD)nSfh6{wL$g zWsB^he0%(`YkQw2^eGc@SI<0!kFP7-021!+A&_t7rzY@Ldd7)8+000*OFCUow%{3h zvOyHsCii4hK!D_)Y(W46MO(6M9T6gT8AeLda(qcw@3h%b3hMd;zkAcBBRQ=U6eMKU z7Ny@lF;Y;Hz^ecqgfn+UzJA39KV+1jn&7ukUB^TA>sj<;3(oDwmV3H>Y#>8GO_Whg za(GkGkB#4Qe3RwM5#bX6HKkj%DJXO4`Dv4fFNm}((&$VM`}Hp@UHX^5+$Q0hUVH8J z*Z+R=ioWq`%Vn2|zP9jx>}z8Y6{W8&JYqPrtBu%7x192dzP5$?uLaMh|5|WP|24uS z%uPQc>pRnrfII5F$Y-Je!|l}P1~}X^I&JRw%ob1QJAP8|6b z1(BjK?woxriW-&9j+1{{=0%_ zdY2{kUHDGOi@yh5kvc?kX?0E1g{jXU68xtuY`rr6sstfOuYaFR@C0PQ0 zmiwtdU-u-k7UT8Fvq!yb>0&0ODH)ooh`HSwWuH7Z&0?ma`pEw2O)sKNDepC}+g@9b zwyaq-Jc297HbqVj4?Hf`ok;{b_$0ZP-4DpmG5ztPUCRy7>z*N2&^O;Zgtnm9A|<#| zt~-Q&0R6$$J*+?YI!^J-XE+_#EnzM7p!))(67%ckzGWWRQu;*<*ixeeTmHcC-l0$M zGncIeVlI>V=NSoMaj}+mCDt;1KGssRAlA}2Vu(B~j1-ydmgF?FbpJ+uqRp56HWjPp z`t9o;j1-`~ZEJV8n8a~EL1>8EJI^ln&P$hj=Ruotx9CNJ-g)=G{evI;A#xL1i{80> z@GHYgK0iVEyn^yMBI55r2tCP{a4z0YuYXa_$-VPjw14_Sm`OX!q)U&*Olo2=lYA62 zx$V*8S61(>x$5%A@4o2Ls=d|64x`e@ProEzs1#{_OTO5C`y2W`UQEuBmhfUPIsH8% zW-^tmf|U4}$t+oIa!_x5F6W1qc?DXHn7}MG#&gB3`z&UAXAPF^Z|tty)O0~_TXt<; zX?0a~qoJfEkelnNbv71G)#1hdmcq#lZEIa{c|lK0dRl=$H-F6Ia(Jz2&0cS`#ekxlqi1EPHjZOEGytAHFNNj6hLV{pw~Zj^Fdt#dhYu7!XtH&CAjie_5JmFXmcpl zdouF@GKaK=P(uDr<@H|iILq=S;=}kuAKcZ^wtAAcQzVFQ*t{;K#350=UqYN=0TYr8~wRYj0t># z8_3$n{FU-rGLhfM^s!TpUtCCHA3M{b7Y?E4&>N8=*!1G_Ir{u3rRSrM>GO?}t%qKv zzkfsQWA_QM11cBpV`pc5>@@TG*!5>D8fX@3>MVJW&m7)=_`b#tk7lLT=|i_i?nkRw zyo5ZPuHE%)?bb_u?0$`Zj8}<$?7se(1!;LCwuR51)6R~g9qRNt)}apmX0?DcTo19~ z&Eyk#@+T-x>vSIgvp~`Q?liX&vt3~A@9bjty97<<8N1)%A73|f@ZzhlojG{P)w6GO z_w;t6vCi(Edk(0Znl$^*+ka5qu!#KK->XI|HGM1Y>08m)tBQO>?0tt$!n~-oQhi?Z z9{Krnz3&ujRO)@FiG%+O3Fy5GoZ-Bc;};Z_g#EBke_^w(A9&?Qfl?RJb8>yl_3{}c z;s5Lk{9pS2!`^#<$5~u^uzcOh`h|>OV7Y-PKA!ZtnfQ=l@-vN5GzW%X!bt zoH=vmob!thZ4)Kr|E+^|PXFw;asFR8mIr>q&FSCa=Q8xctB0&25;z ze(&|u@KFWeIrK+k-<9Aw8<+p5yJzPoE_JPqY97k2cn3Ha;~|Ur>TfwcV>$ zjg6AwZ^V9A5E%X%gI`pK^=R_^za%zdT>hUZ3H}{^?|0C9ZvcvheD2NQr(^7^Y3#eZ z@V91B`nT?Oll!04k9@$aoj$zbiEqrzd}Fq( zC>#!l%D{%fl|#cIGj@dx|L})DjJ=yznCH8MvF@&bpW`*+yL7AqwPu+3Sa+tRSa&8C z>&}d^?woErniC7K?&6@Lz@M$-6`gx)8}=Gf0xDoU4$pMO53qs&=qDYtqXPK>TP z-e9q`_*z?rI#n~h)i`~+!Qhs5mqd}o=wpuuxyC35%uF*fptTd zF9(WL%D;f0jSPcp3MgCgia-iwDu*)qblW9G@*G1QFUQbKFrIT)vJ2s;&~s^M=EQ_V z9hZ=3T6paMlaXdtnAm|XhpK?rVe$Eh%mFNU>eSWyw;hqx&CE2&W;Rs8e=4f0q3wRl zHP?LR3H5&= zJ&;vQI%1MhAR6~~mfGCzEHoBWvp0gTW?zWlv9PAD*Dqg{<;Zu9bA#e+A%%rUzJ-iQ#rY|;?@76mHHRq!t$*hJ7x|Ys$aXUtcr3!fXgl6 za7!EZK+x;*74m0ryxNJEqFD;KGewb^b{Ypyu?P;Hj>Ey@jo#!Jq9Mru;ZYYCAOkZl zxlqTZ{FxTs5G`1kR=Cs+C`B;KYG%>{?Px3QN=&_7s6fe|S;s22oXu#MnQ6?vc0E+0 zRiW~dcC19p9axDTJ@98T{HtvX0iN09hF+7Psk4xQTc%pUVh-XXAF4i z_I&FzPwXEqt3Y`}coUTS_~RU|9NNn)nIov9a|HFtas)*t_N7#Q9EY>lhhM(Cb>r;p z)kB~D#sQiG#6#?_Af3kt&OP}W~T&GE?rQxSi0cXX15g|2yUObt>YZ{$GOf& z_P_Tg{0CIty=>XtU!<`H8{xZAu3$s7md+K_EsCwDqp|h$sCb%Iuhqw;3}%WJPZ>nW zdX3XPo?X7S!^68~XJ6b4p4{IUdwb2AH~;Vl$P*d<$Hn&ci?`o?JL((jd?mOnsKR)9 zp=hyANka3iRRq`g6r$Pd!QlV`Vh0hAq^Bd%B3~#ILgfR*4s^gr!~^CzFfS;eg8|e7 zpFGor@bl(D}7%x6D+cJO%9 z$mc#6+uS{HC*?y!^D7_cR3_r(DdO<*uv<^h;N|Jscm@@w4?LuBIPqRTA>mTs5S~2L zC#@;*dW>*6Qi^6i1xLIetg5e)trW@Bu?E&}oG;h~_ug02czK^DTohiOi^I#ilClBm zQ|x;Xq@%zN2B?ETaju8Ik*kA zd4uE3(P*Gpsr(HY9=l1ST|e{_8Y`~|^7avOFgZn;EC*ARn1ji=MFko`(TFTR!83Z> z0k|3EyGCR0Kf~nw2(W*&jOdPb6abMp9|%PeXaj4Z$TTXH86wDpeUyPyG1)9k#$_6x zjcF30989NM;q<1`E)6wj52MseH#BILaGDk~-c|6}R9|t?vPw%>ZZX@6a{U==8k2ib zE3un()v&}XEOHl@XJ=MR?MnHGq<(=zmGQQ+`|x(`S6wn6Q-=?g^ojYHq6PVw0u9+d zA}gRhh2J_4Toy*R8Ul<2d529uS5;CAQ!Wbr=hC7*qd9@ zJupG*r#}UXyjLjB-Yi%*^g4rwcZM8+`oKl_k(N@x9XhmxNzaGmVw%`^NVpXGoKC09 zi}vdLT+Ae3cu7(*N2<%+zPd6;PR{HNa1UR+%vo9xtX|gHoRQnx*x38L-Q_mu_2w^Z zuoe{-)aRvs>RPy;*Xi1=6RX#bH&@gy@2rhfN~>~B7KfF|!$kfDjDe?vvUcea2A*3i zKuO69T746%*GyKLPz6%Y@hHcfpl@l}hh1H%J_-?+N8#{M7zdFW|QY&RN?%hH} zJDzi0Luiy3&JK4Uom9!Zokp_*uN?N-Lz0!_hwDPQR_tRprVVtX*Y`}oj&|;> za0x6szPE?LvJ+_&eLX1r3*3+WJbu;8Oi4H6<54QFAZjRSXu{1lwmHo`+(({{-N4d86GibMz`Xj!8|I9ZB- zq6|Cl& ziNxfmgt1SGW^(H+<+6lO z%$^)W!NJ*^PCIX1)=RK>ct{R~M2Pql^?5RQA~d^UW%#ffDpsJtbFR8&ya+S|;}M**y0j$?zL*ypz%0!eHU`Vc*7*v12?P z#>9?^7UXFnEWAFHyU0IJ2K$gv5_h1?olm*(`IHL1o3Tr{T+KyfAYZU&lJRUT4I4Cu zEiEQCJ`bB)bDv}F@!5aTrc2D#oQ2;zw!o;v*mvN0MrSRJeaF+#9QK`PkzCD42s}R~ z8|k)Gd3#0<=jK+xTz6nfAjmvacR&)3bT7CX_cas$h0f5a_%BIL zlus{Y=xOigv+-o)19;A)@nV1iObn1Dr=G#Wy8`D@EgY3PWaXlY{?g=mnZN{XwXM7r^NaaH-zB_<`mS1n#A&H~^clv~w z7!UkS_fg+8PSCh?SHL5JFr@FrKAO*fI}?30bPPon8$&^M5d+~pUbrBcQnUm>9p!-1W}ZaSG#lq{K&wu=L#m`#sk_97i*TMC;_$H%6F)7EOWdaWLZ(kXK}oalp{ z3^rXHIGsbq(aG@YLSu7bQD5lL)`nS7?kE;c$HsJJ+w&Z;!q&-x2A9p- zQ#HQs8?jGUN6TvSDt=Rcd~<#wmH+rIxsQwxb`%>-fzvHOrPHy=nUGNh4K+uzn3$ZY zDQ0ssamL)fU4xCouIR*gFc>M@d*Cl6l{G4tt~2G(d|+xzNzK*)Uw)2f6}T(Xq+4gx z&qVx~r*ZHj$kRv2$>iB1Tu!El#+XZ*llh}@X=HZYa7id!w(rosec|%Kb+Pw9_wry) zzRxwZqA${$~Yrw821>Z+ujv8u)R1=9s4E4m(y|ha^^+x<(R`k8eh&#EVTuzh- zF30sM_#>!EM5xlJ zh!?SebBt2>aRX8*LOyaLSUJi#Rq&9eAS(nDu9I@-nUj(3`k9ADx1_gU6?-ZYC@lw; z*e`$Mfo4y8>y5GBtS-p^IupAZT_ zYg<2u{aIYRbQJUdVflru7*)J*yJY!=Q7Znoa=D|g?)at^_5nZk?05Ui0t43;l?I{= zhMXV17q2!;V#u+cT`mM4Id%<8pFHuy!)W)epXc7S`&F~?gC4m~I8U!qc_n_oN4b0{ zfAk>a+ldg*K0LRO=AJrSr+w1=#6r&CP@g$)c;i#0r8DE>^=l)g3nNDI^ByANVlNS1+@WX&A1|)$QU+WT zaHgOrW&NV4af}g+W0^h#VUD?WAetQqGACLRWDd@LB2W-)@_N1XGY{`R@>^|9bFr?n zs-z6mF4wHANqvkA4-c&;H?GhX1qyLZ8Nv$psVlHfG{bT6QSt|MaruLKI)BhKi4ieU5b@F8h| z3n#l6nwt!t*}2tMC<%NvmJ9q&`E=~++v}F82m#8y5$wbJ0XyL#Rz$lDOb($mo8*!R zySXGnU0W7TA{<~MG#n0Ox44~lo5_gt2vs;(8z~E!h?hu+zXg5@mq;jZL7NPIOhg3@ zMZvyPn>^zq(%1{Kk$~PV*8)|;9{0MLnOI$!M4IFM(r$h3`|qPfLesv}5B&oE6Px>D z-?78yn{U3ES)(S%ihtQ36rW3o{6Q7NvX9^n0`s4rchSBeX!|Y9CB%iC$+1L#371GH zS~QVRGy82Wk?`Bdet$3aDzi#&e)(l4rg07N2b{llhK(<3gTKXaXOJ89rU4XIf~5fe zCZHG^u-~K+EK5yIm843rT2F%_pyP_tNpQm(xmUk<+fT1)80i1}=MkzkGtfMJ|a(0L<)^V8Baxi*_3Ag~F@p1Ci- zeA_EPel>jAec*R&F4}M4bCTv{HLy8ZjciU<8Wbdj!fL}gSwEQvuf7Uov5nw7+5L@) z?@z*qp<3PWxmPfzY9+fCcH#FVU|2O^468=Ke?Euo=>XryFrLS`?8~`!rk2zx@=2)g z^iVUvF@eGXNFm?<(as`Tbr2Z+7EOPtUaC_m;B8s%)HFWWBvVLAC8hTUXjcg?pK576 zH8gyxwe{+u23E-as{(&FG`oP1{*i)dqK2`@FCu_IIc5jYt+)d+)G5r#UFSejJcs(Inx+mg# zp{wWit`#e~7U=@^o0s9a(!{QfA&f_l_xmDxmQLd1RUsaO1RjD5@)FY6@O-qIvH1aC zxc-KN-N$~=*nDkM6T(H^x$_-3Hg7F&J{V)p-hK|>mx11vhEiJaDG=F;@~_Z#2dhZ@ zQoOrqB$p{=3TX;d55T5TiQ&WwMLbZ>Kac(F@>hW`*6^brfk(;C|BODfcJ!1eSrGwl#;B#bn#SKM^h3LQvClE=}NIHBHr6)2n)9G|(omnlT(}&X2OiQE>;p`!S z=K-% zOr&&B>j!$&^%?YRfZwr_(1B3{R)RMK%P#dv&3;RtPeNQgpJP}*M(!qa7fRN8SiDn{>Z zMcx<%`Z6fjVfF%KU1vZx3^Kjfqd;HBn^#nL8p#YHX@ER+c-!pu!%#sEpK5s(DoCg& zpL$sJ)KjX#>~NI@b+NyVbLNGs&ojOt*U0cc{R2U4K;*;GdEWg4o+_D{QU0o(*4^un`%sUWmVp4T7vgw16`){{cTlpDvvMdBB(as_o( zwb!)&82GZ3Z2m?@)__g&cJn z<(LtmdV>J`ysv%oSix5gy>H(Gvfq6dY@dlq$@Oi>q`@)NZgLM^n>8q-4DI0v1Qi4q z4*~Mc<2~3mAyhB$Wk|iSfD^6QJ@2&3q~bI~t^(Rk{GG2u06$9+P<2DA!!@=7?sXB; zyZzm_uYLQ`Ze)1U;O+si9n{92j=gm~npMEJq}0-57wxDfRl+p3%)z0Y9LSfnRUP%F|8n<^BF zWpceEhNJD!T$95|(u?(q0_h16Ail}!j|)hDhybNONFiH`6wO6a_$oVBLwMc%1%m@e zw!n5h5sVh0on$r&RhQxr4fG)FGqNJ0`-luBM!x z(b1KK4S7{-509Q}@49A?eA40W)N2o(ICjWr?&|5eZRhqc^enX9Aa9wFw_Jud`P18qD9MtGLTuv6-osyHAXpS}@NeO_E$c8&WDP1p|3Bo{96D3N`02gb6 z+u*WUXz8UcEj>ARCb_6219^FNTV9?msYGLMJ+M$>#71iVMj|8kz( z>{xEFl`N;vi@mU&lb;>S54Bej%$asMPmT^sj`)gSGxzi4>7e9^+kea6&&kz6$rZQ1 z#NN-z*Fnh_x4%Zo6Si}5c2M%f?Jp*@%agXFakG#8eu3~M;sPu8gY0)B`X|_NVB?LO zmq0l?4xGGk^Af0Huh;U%%}bz|z23+hH!p!OI}VO;`a8}ZJ;IIyj*j?$oyY$xJpSL{ z@&5{s|1&)PU*Yk8j>rEiJpQlZ@&5{s{}Vj^U!nO=$Is`+J@b5yE{~(jSvy;iXlK)O zWgNX5j>j%Mj$fhs(aw%zP7V%A4!HdRb{uo^a8UBV?U&hcc!oEQF@LCCFwBm_bG&hk z<%8SD*!!>Ijbkh)+}^|9e}XrTvAl45KRZs(@WyfC`?+>`(smRGzm7K!UgO3AnBt9t z*SK*&N_pepHEtY`3f?$)jT;A~m^ThyapM3!pBo3SapQod%j4*Bc3-84 z-&e78C7(Y3Hl&BJ{(Ftqf6MXpXm9Dn`tLPb|J5>fjvx)LZ;X82Aday6Ha(_i(DV!J z^-o|rC7(Ay348rFF+Gc>m$TR3f$7;a-Ns&jH>OKzx{LZ=T-TKQ-usA~684eG#C;_B zJzhWlmhMMHpX1TrBpzqy=a+c>_$IZF#Po-G{q-i;&(6=wyncBT>}Bmq0mmoYeSR}x zU#sNrYw3L|>X$d^etC^Y-@?+*gCDW_h2Jl4G5rF6@cZR0reEL>e!slM^b7pK@0Yij zet|#u{qh#mFYpJyU*4ko1_>JLsH4oV)l{c-kwPA(2gE?7TIviEcHaZvKX?Q7ZlIXO8fIpOwY z?ERd)9F)9pdl##pIJr3}`QY~Qgm(GDcG`X}Car{)a1d*vS=OvHAt@B3pi>|~m;BV? z(4$qzUqCdYjT7ENb)W)pMgoygJLRzK;x`XO6*?V3=o~t`*$7{t$x~2{OB|A=#x}Oc z!v{;i!9o#ed4rnHEY-GZy-2Ih$tg)q)pb@5Zzvk8H5Uzd%9Zk99%*gvI2n6uk47t+ z6#9Mnb{{x#8w z@Ul9xsiP@h;>-^h=Z$G1ZZLCS&FYB%O&R(A6y1Vu+hg-0&5Yxm7Os+X*_>WjyU_JBYB;3jaR zA*QOY&JSnT1`BH+zfzV%_p=7d!UAVzQM3Tz$GKJM0<>vnHpNYp>xce$E41*fInJE; zEgODo9G*CKy~rt-4DLa2d8}e<+xFu(MRM{6q8mFZjUj7}SC(HWDb7&0rChowM<;J<$M}x8Tm+nPtGSnGR>FDS6Cr6Bjd#CuRoJ#wwG_sMBUBGZfNnc(25nmKGN?96*&I z3rL3?)l4&!0dV2KppG|#_7yo)hU4^*9vXeO3v0eoRZiAPjO7Wj@r=WdM7e!*qW z7|CvJ1~W(pmBVkd!8we+O&`@L73mTo5E0EHfS=MxEVH1e05Pi&6(S0`%@ZLdUp_1~ zDROhmET4YrB{>u%cw3}CY6#TnzJ%9 zQpG}sU;HLHe27c{4>Vz630WEPYOK21}>`KV8Wx&vwxJj#*(x|x5lCbw%{$jv6i zS^{|{;D|=$ol$HY${tf{z)ccKin_{W&6Q`et?68n@Z)SLy5(g_D`&o3Zn) zonR_<`|55=Kf-?@{U{++QMn`y_KXnKSVTfqQJ;#`r30zS>zd4mrtiI}sH=Dn`14D5 zgUg1w4}S8;P!9eUH=L{AhjJ@M=Sq|Z2@rYM)n+!4WD`;_fE;DrZcW&sRZJAwk~rHq zf3%rgFlQsQ3$CNzRc0tM=j9dU)nt{H)auGg!gVhVQO}V?s^gf)D~JMxkjH z!uc!2RW)#sPBW)N)P&k4lj)EP9mtr8gp>&Ft+J`WoKoj*ie7)%U{v!|%_6BeOhOf>w!Cj7}m+BQbmgBMl*Mt;>eC zSGGPI9s6bxnQ`KvS9`YHkxCr^w;w1Pt?Bj8?%r8g8Vr>B?NQQt?a9uWw&+|I_`~tj zvB0WT6Dx-%cT_TKml2de(ER$t||R?=#=b|@7+z5Wu9n$r878mRZxN~yMNq`CV* z9XD2LNgW|2j6`SKB{Qn^iweVG-)M6iI`iO6Jrfin>_Ak)7FWcMZy$)FIuu5k!5MVp zcoN`I^9B^O79igq_(@d3sM_rgA0AX!pPKsg#jv2Z)lymtz9QBSRxh7!_{7n}7gA$2 z_a6<~+8fc(!ZjG)0k7d&;hv~73(GK5m;z-eKxQdsqnV(?dR#uVEO7%0#Y)kmDF}6R zQ+1i!uGJWW1z-dYrYlHaXSJfi#115^^D!o&0>wLU>THM_FiN|^iPRYfyuyLMz~ypV zv}em~YkrM>1{^**xVLm{2&|5MezbRV_6(AHF&v{0!||YjJzf?~bI9O_kRp;cw=>w& zi)IoV2iWSSZL}_O*}#KdpI$&8yNN?iq*k!)tkz&j%S6;r!K0OY_~_O9VskdbA)}?b zX?);&FI4KK7K6=k;_CFTW&Kd`$M!Q#ZAY6{cBjVHZjJrvQEz8$OSiSS8O00C|7G3_ z-XP6HHncy}0JJ}aVgXz;+}N#*R4aJn$nL#IE?0E<4|z+RL&rY%lmhr-FJ^(GSDg&_ zf?GF$^sLxjSe`ZTo4#k`es*?GRmtJ2mS0o5;#gx(M^43E(nlkOx78nC!Qf&F1l5FH zv=iqPsVXVo^7D{hiEz*`9pxhpVfyzVy+LpXd%fl&%Y%p6h4pXTWLDR?W1f< zOyABuAK9GnU*Cb_D}yjbbz%{M2_x}&>o~PQXsIwURDlXxmC#}cfbYBq?I5ZAy_a9c zmXCF?LrLieH)+6i?`=_Y8jep&#ls7*3XNFia^MF72U=s8C5AM7Yj(BG3Kc@g4{ika z&K=JpPhm|!**Wi!c^HcYK3A4T;`kM)B%4S;k6L7H$fyZP=^L&vGpfr>5(=HCrdpl) z{WFKsMc=;aumdh#%j)wU_Qobj*-s*yG~it9JeG$P%I^iJ7r1k^bf|+Q@#kt?3(wUY zE;nU{EI9UI&(-X^t7`Xkl@9nyodHKp%Mnk7wX|TMoU}H~_VpgBwU|2}hFnWw`J9>oPwb;2Dcd(}BA53jonOABH+iO}|Y8(M) zsc)dPYhP{c{?0&duFaa0VVjlW456EE+@;l zb2Yf9Ns%mauGY2qxf+yk>e3R9V}B88r?T89kvhjbEq^z*<50YsJL*6yL<$M*YB(Tv zGHiAMl-{71>O8qti2b&|2NEI0ZKl7B-HdJea#YG`o z_h31m*Ssm3W6jjxpVz*jt4R|VhJe?YkS*um1sf+sS9w?MZvTass z-F1Plxk2ux*h&M>}_!L$+rG{U3lyARXs!BXdS@+JFtSFa3VeA zDBN49QT!WR-K1IRaQ6q59i^F|@=zK{yosjGJh;jU911u57l5M-7+>6^m2b4Dj_vur z!v4>Fz}|h8m%R7hzunbxS6%ispIW;-_6Km8T8WRx7E24v#4hP&K zF<>gyj5AR$y)85lDxXPlRXp>mG+YDM|X<@0|Zz(PZ_w5*}+gkJR zJ+qIDcSh>g8YREpHl1nfF4ODh9&4*@X;Ebz+lTYGsc$h8UW68pDm@US09A?*rNC84 zgb}`R>R%J~jSf-vvc+QYT09Q9D_~bRq>?lv0+dj)3G-03Ky!mv5GcUv%?K%X>^;>p zb*M2Xpj*FVYjC7|>$KE+QBoH0!tDsS9{l8oV?*~nFj#SBKRMJ{w4&(bVbI@E;LOPd zIJeAAt|s4s6A0rO5E+pFXYoG15Uo0DK%{s*DoKh6?c0#WkNs%P6lN3Nt3d8OPK8V9 zbV*Y&->gn#JZOx$EpmHov{RR{ox&mV+0lCc@?c3*Ms{O)=VYD9qEQW45SV0;9=dqziS#Xr_ndgC0XH;c z?hvc;{KI{_ckVn`JW|tBqzRYw`W@B5vbE!dxi+aZU7R&A{I}z$Pwj0w*jn4-a4Azs z&Cuks=s@?aj6aoH*O!PZ>PmL>hpga>uG-00Ys%(*ecnU7A}|qlggXpv)z1?D zWNpbGBOIQTUr`vr7^e(j$q(T^*Tdht@H&AoDl^mIY=b5r&Upn00EE~kz(zhDWUN)= zFlJj^VF-a37lt5r9iYLx1=fAl2)vsG?k*}S^v4D=$Uh+HZaiN|+P|PC?8vUr15`Rk zh;k4`a4ZOr;fYfCQ7KV8bGo>i%N;_hy189rGZ|1FX@^W9lS|TcxoQtiTo9vjQ8I1> za9!_q{M~=y!fa#X?wz|R=Yu^ODh&p*qZ^k;vpSZ8w&SO<2Le2c+z!b7z}o2{)=t+F zKjqo)99>UbpM*|I48ufHy0JMq-E<&1-MpGlKhM%FBYgS=mTqn5(}N73X}5zXlhO}> z2Y7TT`y6*8|2b~<`f2bYM@LxMH2q%iZT74Xory8>kx*x;6rFvqL*gW6muR<3TszoS zUVDhWANR+C`?+@9FN?O@asMp-d^_%^rP@({E!B?tZDIR)wjK4~!uAVnJL<=U?Navp z(!g&Mz7OpmL+t)hOMELST~D7?$J60>Z6lJ>jiKap)B5Ceb2pzJWZnzM-@Qrc2f!D2 z``i$_&(#vYN=nxgpHD)E{BI-_osn(w8?k zdj35~*I|9Xlh*eL>^Noq8T?(JhL(FaG<96)+yLNR6SD7`trjw+38leh-C6I|DAh)cdYnt<{5k>o`La(;_1&rhAdvlG=N;0A>%aD zf|V!oKesf~Df2&pJXZ;BhIYD(C?d*j|Q~%w6R6=jG^KdZ*P4pQ?4boEgX!fRaPFa>*JF zIgS67#Yw;ND;8z8Tq4tCHYh8+YKtmUA<5Qe)hnyq=jd+w!0WZ3Pb{RrJTp5}lBUwy z3rn-$|0p$ff5hUYguwps1i|`S(R|q-w@xI|^~9}7=-fJyNN3iG#OE;UMB??#IziEc z%=N6^Poy(?AD^+|=NzQ@e>*8%Ph8~rokOgjT1&i?l&+^^xZ>&XdnbsbbYnY_^f@N9 zZX~(hyn%oHd6sUO&r-V1hsp*|2NX63|)rf0GdySMKD((f%^umH1uiIs}^5(nbL*~0Y z$%z)|N~W%M@{YNZ>#W#yiHBeR7k$$uTASf-Vze3mo06-v#lMNsYYoI?bd0apIF**c zS7}+|Osvw~f=Poa zX0SCw8yXtx(ch}em+6Y3*Q`3;G%~hfY78Ni{l0A>rW{?XA&6z1hE8(C)S89xS(y@9 zayf+!i|S}-6ezd#*_oNMFMi^CPoIK9j(rCdqDs9uPLKZn_*xn)S~04nA>wLjXim<| z9{cL2z>6^-jWL@H(^iRp&$6{N?!mk+QcFX}*3yXYOMWelPsgqXr^;f#1KM&_4;MVU zHulJP?B1z=H)ifae9nb+Fqo=6OW=vaD~#qz0My=WZ4AmO&Q=b>Wij-0Sqy~r>d>gf0j4a*?fxbqC&J|b$we3ut`pySymfu zO^Lmh3>TNdfJ#=|BEDols%?S6-`Uz0R23^KmM26`?AbEAWBY+%+3r#}v0mt1pLyda zGuQV0^k>CkF=&cCk{b5^jH_#b#+x-+T?-Sht_4-t$x2wLx)!3P>snBU7AN*aODZRy zkNE1N(T3dc^W(c}_IHuB4F@|r)>}pf)RUtFgM$NO6Y7DH(px&F8$Sl#+pDh*A);;(c|YIog;>Si%S=-XG{%h%&#Yj{-yN(!+8EC)Ux1pC|%0}c4&kuQ>TL3 z?e~BED;a)y4O7QLir0?rwo7SU{ZTz#%wj!P%Yv)qW=K-$f~(z@l?d6PVvAjbNa>p4 z+2J*0_;0twJmBZI{Ee^wgadRO^cC<2vL3D`!Dx{RkOE~INdcAe;%E{9O0|T>;dBW_ zT(ZN$D4OAOjfc8+3`VV$?z-h?JXMaW!tpAy{+4UTPS&@yXf56gdNTkRFc$bve|Y zV#mVJ87f${YHAeBj!r?-;n3NqYwK!i>g#L1c$4z!rxiEuA3WalsWab4cEi~Esc|}X z2H~4nQT-AtuYQRREVC7maKX~VNAf1di~l~~C-vl1bod%hj-8P2=;~9KM2gF8sDO#v zBvq@V+RD-9l}DR55B2*?eQKp6=qc}Yv-9|ITx)UZ8YaB5;!F(_QCtlZjNiH@#aqUYBx5yjOmQGjb2qANDquig2aee>_X_BD_*9NQ26 zQa|@Sf~{Rrg>4}XMl_IV$O^d5tLY3(o6=Gn(6lx_wg-aY1m=7vk5?@;!T6bbi zpnGNp{0S8n&sUjM6&7geJ$*wvs?^7p6-P#2>_u8frDL1J9RDo3oXQH=C5C3S3K{6#~0eebPZHFR|Az0FKVl+YXkp*%uQhY zIy5$uti}KP`~U3kWVX=%^l#4g`rqIG6TkVk`u}sk7wi@OhktXr`jKS6lkbK8-}#-m zcl+Pp|INP__C0 zqOq<-*IF>XJ~&a+RgpRr)TsUDV0oyBl+FEP`_97U)=1?FyXX1??FSp{g0Wtk<5i=v zzjxJg6n_j(fRvChvyhMiZZF zJHUFYCx~SzRXszKp_WT=lDbF|pQO%rRD&B19^A7B{*?xUrRa~m`++;|eDJ|L?|5K* z=hdfo?L2dO2ka>1PoIQ+E+UF9;~Y8w=r zPV_n?VrmCK?s!pSW!=j1Ep4Z}n(VdSa7|@JDBD?79?thftu?Fmk#`q#6jpXiMLn%$ zBa!iXyQMN%R=g_g_Z6DVO)Dusr483UzK6&{qd|l=8?6X5sac4ID=sXK>Wt7L#I9SZ zNTSF2Z6RAop%DZk0abv^?4FLj{;kayZ^_)+eakJk^n=HIvAuWPLA^r(W%N4idlRuO znni*XAO!+pHr~uqL%>A{Qv@kOg!zMKH1aQDeB=SPD(3{A`s{Tg0{NH6+3UHh2BH#~ z+~IWFrDBNz9rZ9}Pgt~a+K1zi*}&xwii0KnMO8c6>el77mUNcZY|?nOtH24e_RG59 zL|wyFc~L<_O=Hb;dIlI{=8p)EIqYLXn@xm7uLdas8xW?Xv?A>USxjLeln1yIw}}Nl zCYL)^!q3rS%akAvxfE_On&{Jg#bq1n4(+X*?pYD_7X+g1!pcEOpfKNFsU-uY;EBLw zL*v%!dv4lx$8c_^VaM9m*ma%t4dpJ|<}ut4^7$*^K0F7@&^)86TI2d227Y~yfrR=V zI8VNP-~pKeO-2A$8Fbci-#>Q08T&Q(JlQmN(M`G#bi517Mge7`fwJ+VJ$bHKla6X} zw4&nlv@qBlb|?&&ORIJHU4>ew){z6XjG9eOW{R3H(D82U0@v`eVmuydIZ{+@Z)@FB zF}tRGO-1GE@~yW7{2`^sT3isR3OAUSN5dd@Ph=n%=#T6Qm#hnQ=XyKBqor>ar0Z8|YHc(SGCnA4GucyWm z{9rJ_oCh)rou|9wHTT5f8%ti^4jvlnI}Y!azk~1 z;5o>H7tP}2dK-aRrwEX@n6ozs(8ra$`Il99&UkTiRZ~y-wq;j$HQDOCB{h{*p)6N% zMWoOTRrkOlvNpfHplrERyrR8)G>lbuxGXdjDDWcH-HUvg^VgGN$bS~9jKtI12=zRr zcY*d!0qu(`Z*k}T*mK|7bl07k8$0dSUfT=4?~AR!c#%GrI0;_HcxZLeDAL{8PtuoF`pbg|V2m9du7#p(ZNbn$F|pnPN9^uD^8l|9vde^FhBuyR-uDk^YPX~|%DqAuRK zwk<&yXUv~~x){wLbbiI@;zYHZpmg8c^_$qM;7j0@xjWpX2Thd!U+LZBQ18}ay;~iv zNYJ|}fUcQEDd0Zlg9Jq9zovdy+y0AKxRZSJUf4dg;=`4`2GqN`GniL%cu@L%u2@6j!0M~}CCe2v_;HWZ%T0YX`^#v?Pq(xTid zOLy*;W#p5=!ARNGtJkg>Ie2>9UsP&$S0jy#?RjV?{tfcsLAJCD>SQOalVwmROOxBu z;|aF3hj2S>j-(2iv;GqGaoyTTTeNvFx~si$Z%%7=xOFmiH z<&UnAiu>Ek$4UbJy4vcz2$d9oUY3 z))$+6@IgvG4k(}ZVgDNu7TqGccqs!K+QkmWF1GRQ;zYCfN3pq3SxH|}_0IMqeXXU- zD{41tbB#mb9NGI7eQ-@f)252ihMMMvBhV^dPn}s6!Z{(qW5|`Li|xsE@pzmrM&YAe z!03nQ;zVWK7bxFQHw_Kr-WAn_{$gktTUzrof>0Y*s>wh(_+DU5bMubsuY7LzJtMiD z#(kST&e)0WrshhgZ6}T8TQ&a{##j;&=BRgo)#aCkQ?sz};40wZY^NN%yy09lNIQQG~f?!0QuC6T#l%jrhLtFTt@OxBnr-+eam$rq+$z>?l zU2Riaje3;lo|mYMsvss&#mPEB zC!ar6wX3spSJkQgv73)4Z?TZxnYHjWLTbi+* z9O#&6r0is05o;%Fp#AqYV<+=<^1omwJC?SS6Vx)~wqc^Usj{)Bd`HLGt|muaPI>K2 zX|^|5Ra)e!wMFx%YG^w-I~Cf=w2LFW6`IMu0%#`Z=D?S`pq*^~H`&SNo&&KLzP0({ zmoqo@B-+VND5v)^mN9K7b3TrbY$wZ|uB7TY0TKae=x1Ud6qS_@6j$$D*02E@%XPWs zbrnIKPYabaGM594?*iG&wdLuVV2qk4eypGFMm4SeC7T)RX{X-t@$@uS(?_A2o~k>% zxAySLUZ|!6wH-ohTOl->^IQF7D2dGswKO)G8#d!8P$Cc7%)k2BHuJCE-}Pqfhv0I& z&FrTAph!;_C)d*h3-xrdrwHlkoFsahGnz$HeTJ#@oM>4ke{OWRWUOo5cqFs}# z%VOKqh&OKiRS_m6KZ9N&UqXIrHCm0;Cbcn3m8Hb%u{h~^94Ec=rz&@K!8Q5hfr@6$ zmo)Z@X2YFE7qc#(9K`E#PXN@X$F_`3jTXfok`iEkVE!IZO1ErmP10_r+w<9W zPttaD|BXrRx6tiAw%wbw9o>H}$^BN|`_CnLzm@m=b4i}hv|HJBU($B;{tHRoZ{t0m zYR^g9j_$uX$^8!A{WmA!Z((~*()M!LK8V}%==N@^9sHj5JNy-F1{d*uelgqe}_Nk6IOqE8(2VR*_I2qU&G_V9AMHrwiGji4;v<(IEXIdZq zS*hVpq%m5T1#QJ_C?+N3&x~zFriwjlGx9A(TsO$3vC?&eoUT+!Tv2|$Z&k!I6P=Bo z=E9!kYx~Q5POHgXkm8A?nDhpR85nFp*HV+)=-V{1>4>pHR#D=8IoIv6S!*M7J^1%P zFP={y)jmYh=)HCD6Au7A7>(U%1+{H(uv*}EZ^v^B`BRIdg}G)8WgDUm0%J=h^``o; zW#~+_442x!W2>qWT6w|1GH*}q%G%mqr*nhJV9Zj>je48I;?d-}tUri2?WHzbiM_$$ ztS+uDD>fF%uhwc+28l4stW@b^&zrP5V`i$RNN++q%{BiP?mIbLjiF7b{Kz&Tj+-zk zj9N8{n@DC8qVG}jJgMrQvOQzUzLgn{vQYDIgIy1dHlxj~0~h;SS8l6QG%711-qxy` zt`}Y9MNT-4kWO|05!g&V4g{$N*e5a~?JETNRUo?*$ff3K0B)eH40bcC8#!kTr5i!K zZj@5m5#65;qoGNe(cNcDh5-Wf@Ed07WS=6bIwh+ocHP!6lTLJ$;9gj?y~=ymLxYP zXh}4d-SB&+$j9JVMjjg}J(i{HST2WSz4s&e7UNYCxs_H)s2&b{$9DV<2lEaA`wrOd zB4RWT&V@YS8j3!!nfL`Y-{yl<`+SgX56lOFm3R@h8<}>%Z_kJA6Zn2p(smzw{yN-l zPTFpT_ix4RmPPMhi{Ece+U|z!Q}}*cQvS>5bD)Yx_uG@+Z-Mu3$M-v!b^*WLHE*Y% z?@ao92M9xb^(R_i)zI>-;p7KupuYMwB|oYi@Z0lY`vktbo0GO%;r&~2 zyJgY)*W&kEleW8I`xL(4mX!Z;5P@U#*OdH{+;4&RZ^!pLn05ib-31Ei=Q|fZADttE zK5#Gj2GlD#(d?|ujI>m-2o(qh87Tfl-qnxJI93tM4EMwTZWy><58%QBG-40b@1BUp z6A(u+lAdGuz#-)<``w1E?T zo6V2@(A7C`%(=l&KIXGtZEg;S;UD-(3;ZwoLu)qLoqZSY@3T=A+!XpT1hp`rET}A-R2*QMd9<+^Y4Hs@$@V{5X5eDE0U5!T=T({bJ*^(s$fzf%dW(=J z@!!0Q`2_vZ%BUWKoqJ(i`is^FEZ$LS`B1U zA!GlMm~sJ1mPYw{=r0t&e*rQ6Q#s(Y0N*lHwJJ9%52>b<6-|c97Wqc`A;m^T<^9u! zY4GUx`)`8(^nZWgEc|DHs-?nw8=2Zk=?v7Lu)os@T~y6XaC#@p%<%96Z2`v<+iTqX zGg5Vz^*WL=YN4$|q-?`!YRHi{j=|}$AvhseW`gU5$!qdBZ16rqjzKI@v*$Z-qNyCr z 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 literal 0 HcmV?d00001 diff --git a/rustdoc/latest/FiraSans-Medium.woff2 b/rustdoc/latest/FiraSans-Medium.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..7a1e5fc548ef28137a32150b6aa50a568cd53d02 GIT binary patch literal 132780 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�|o|A<_G9#bJ&K$mXTSM@kZfZ^-ZYS)6EG~kHJ{! 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

TIWHPC<_9>em(Cvlhuf-BD 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 literal 0 HcmV?d00001 diff --git a/rustdoc/latest/FiraSans-Regular.woff b/rustdoc/latest/FiraSans-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..d8e0363f4e1a000568d782653291e14c66ee3485 GIT binary patch literal 183268 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

)Thpg9J)x+@B(n?maf9&#`PQNHtKX<@|CQ`> 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 N#!G)s;j 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 (}T-D1^GP<^82Uij;8#+ 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 V7)~)yDZnpu49h_gZvJhn{{a>V-DCg& literal 0 HcmV?d00001 diff --git a/rustdoc/latest/SourceCodePro-LICENSE.txt b/rustdoc/latest/SourceCodePro-LICENSE.txt new file mode 100644 index 00000000..07542572 --- /dev/null +++ b/rustdoc/latest/SourceCodePro-LICENSE.txt @@ -0,0 +1,93 @@ +Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. + +This Font Software is licensed under the SIL Open Font License, Version 1.1. + +This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/rustdoc/latest/SourceCodePro-Regular.ttf.woff b/rustdoc/latest/SourceCodePro-Regular.ttf.woff new file mode 100644 index 0000000000000000000000000000000000000000..7be076e1fca99ac23aba68ccfb6e4b94b776b772 GIT binary patch literal 68152 zcmZU)1yr1|(=WV0ad&rjC=SKlt+-RPxVsd0cXuhexD$0W_cA{(nhKR9zAPxFPy%kopgq zlNfYKsLM)!_GSAl!~G9INJ~h5w%?e24%+`Y;PF+&?UuBPvN`~8NB8+yI{<*CUkZo4 zDy^;|1^~S60RTv{006NZ#D@X2vO4S6&wi7iW9fd9aq9N+;}1I%M*sj;1^~b<0suHH zU|k%=EN#6k004$S0HAsl0HMl4c>Zx?Wp47HIki9gasP+#E2sIbJ}W=#5>ysDg&pISAq$bpOTZbQ?&yk!00Ej97siQTX53w`x{G1n}{vtNQ_aCWB;|LknkNi@>QHh zsNe1YP*C8{F#sFH$PfRO6S>HL2*2|~;eVm}EJJ;+`F|x(h#$sg#>U-O7lKew>Vp9< zANP|jEXKy-ORFo%{xh?x+HDmlu zf3Ez>_vbxR;ATmSWG%pX84=WLsB(zH2l$+~CIu>kY78gz(w$@U$ z-1%cY?>F$Q`OU;`y=BVxFxs3e|M){`gYa-`bhKieDW4z-!e~vlI17D}Cd)L7zBHC^ zPfZGsr7{>P=sWy@qbXj=xf%g|A5AigbLuks1oU2V!3Otrf;dj7gfm@bh|R%E{@)DL z@@$`%;GalDW05i7VVO#SSwTAP9CBhM7gF$TnCv9`pj^0odsu^g$Xoaq1Y!O^qhKj? z(SYJdVX+=`7#KIoGY2AB+Q{$D_?Zi8Yp7m=IlD--S+svqP3zec#(MX>cYP0h#f$Nn za%Bui!SDkj-MA1`cm!QeLWAeQR+X%Ay}^j_8T4vnM^eZJW?rg~q=gRa`=nKatlTubGBnf13Xw{V)Hnewf&?|vxZc+TdBX$+8k%y|uWT<$BE0=;|Ny$s_ zz7-klq0yR-_J_kw`e7)2Q|$Avp7oNQWuwB0XlKsFkK(cv_V(vS#Uv zA&WKbw<=TQ=qfa`(Ts_P48j{c8bm9?8?6kpu!alf9GhILUf8-GgC^VTUPVknAQBN1R)NAZSMtq7331pC?7GGsU(B#W_(c?Ru*)E!I zpx~WZ3WFUx@SbQChj=2Vz4R~Ky*CYuZZSJrPwWSxKZEd>@Ue9h;%jLE!mu~ zl4{P8_Pm}X1z+>tSe@b%Ssfyy@n?7@|H2yFFQ54zhU_hle1&QBptnB0tKYXDR@E+>t5tD78Q6R_X&E^@(Jq>q z?V~fMVT$hI$g?`0=Ge|)1dJuNwIElu)m$t#Ec|^Q$vlaxb%|NmkW7V9QIcRa^e<#y z4E+#eFjK!8D0YX#LXo14E|KQjhaZyZ8MnZ*e_Vyda>SP$yDNq@R5~Xd>U`VDFYJ

sGP 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Ɋz2 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 literal 0 HcmV?d00001 diff --git a/rustdoc/latest/SourceCodePro-Regular.ttf.woff2 b/rustdoc/latest/SourceCodePro-Regular.ttf.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..10b558e0b69a74b8329766fffbd5f64356c7230d GIT binary patch literal 52228 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 Dg^bl@ literal 0 HcmV?d00001 diff --git a/rustdoc/latest/SourceCodePro-Semibold.ttf.woff2 b/rustdoc/latest/SourceCodePro-Semibold.ttf.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..5ec64eef0ec9423bf81951f21ff4aa0392415e98 GIT binary patch literal 52348 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 z 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 D0=ucW literal 0 HcmV?d00001 diff --git a/rustdoc/latest/SourceSerif4-Bold.ttf.woff b/rustdoc/latest/SourceSerif4-Bold.ttf.woff new file mode 100644 index 0000000000000000000000000000000000000000..8ad41888e6e3f9f4439052ae6b14ece2cdfcd7cb GIT binary patch literal 110552 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Ǭ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 N>ZPvCW|kqQ1ONsnDE9yW literal 0 HcmV?d00001 diff --git a/rustdoc/latest/SourceSerif4-It.ttf.woff b/rustdoc/latest/SourceSerif4-It.ttf.woff new file mode 100644 index 0000000000000000000000000000000000000000..2a34b5c42a8aaca17a3c6a37a33489ab0cf2193f GIT binary patch literal 78108 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 Ef5?p+(f|Me literal 0 HcmV?d00001 diff --git a/rustdoc/latest/SourceSerif4-It.ttf.woff2 b/rustdoc/latest/SourceSerif4-It.ttf.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..1cbc021a3aa22e1469542d531e9115fb78d497ec GIT binary patch literal 59860 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 literal 0 HcmV?d00001 diff --git a/rustdoc/latest/SourceSerif4-LICENSE.md b/rustdoc/latest/SourceSerif4-LICENSE.md new file mode 100644 index 00000000..68ea1892 --- /dev/null +++ b/rustdoc/latest/SourceSerif4-LICENSE.md @@ -0,0 +1,93 @@ +Copyright 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe in the United States and/or other countries. + +This Font Software is licensed under the SIL Open Font License, Version 1.1. + +This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/rustdoc/latest/SourceSerif4-Regular.ttf.woff b/rustdoc/latest/SourceSerif4-Regular.ttf.woff new file mode 100644 index 0000000000000000000000000000000000000000..45a5521ab0c77a02ebf55a3f7305faccc02e2894 GIT binary patch literal 103604 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 literal 0 HcmV?d00001 diff --git a/rustdoc/latest/SourceSerif4-Regular.ttf.woff2 b/rustdoc/latest/SourceSerif4-Regular.ttf.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..2db73fe2b49e8cfcaaf1d5311a610e730b8ed502 GIT binary patch literal 76180 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 literal 0 HcmV?d00001 diff --git a/rustdoc/latest/ayu.css b/rustdoc/latest/ayu.css new file mode 100644 index 00000000..25ae9525 --- /dev/null +++ b/rustdoc/latest/ayu.css @@ -0,0 +1 @@ + body{background-color:#0f1419;color:#c5c5c5;}h1,h2,h3,h4{color:white;}h1.fqn{border-bottom-color:#5c6773;}h1.fqn a{color:#fff;}h2,h3,h4{border-bottom-color:#5c6773;}h4{border:none;}.in-band{background-color:#0f1419;}.invisible{background:rgba(0,0,0,0);}code{color:#ffb454;}h3>code,h4>code,h5>code{color:#e6e1cf;}pre>code{color:#e6e1cf;}span code{color:#e6e1cf;}.docblock a>code{color:#39AFD7 !important;}.docblock code,.docblock-short code{background-color:#191f26;}pre,.rustdoc.source .example-wrap{color:#e6e1cf;background-color:#191f26;}.sidebar{background-color:#14191f;}.logo-container.rust-logo>img{filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);}*{scrollbar-color:#5c6773 transparent;}.sidebar{scrollbar-color:#5c6773 transparent;}::-webkit-scrollbar-track{background-color:transparent;}::-webkit-scrollbar-thumb{background-color:#5c6773;}.sidebar::-webkit-scrollbar-track{background-color:transparent;}.sidebar::-webkit-scrollbar-thumb{background-color:#5c6773;}.sidebar .current{background-color:transparent;color:#ffb44c;}.source .sidebar{background-color:#0f1419;}.sidebar .location{border-color:#000;background-color:#0f1419;color:#fff;}.sidebar-elems .location{color:#ff7733;}.sidebar-elems .location a{color:#fff;}.sidebar .version{border-bottom-color:#424c57;}.sidebar-title{border-top-color:#5c6773;border-bottom-color:#5c6773;}.block a:hover{background:transparent;color:#ffb44c;}.line-numbers span{color:#5c6773;}.line-numbers .line-highlighted{color:#708090;background-color:rgba(255,236,164,0.06);padding-right:4px;border-right:1px solid #ffb44c;}.docblock h1,.docblock h2,.docblock h3,.docblock h4,.docblock h5{border-bottom-color:#5c6773;}.docblock table,.docblock table td,.docblock table th{border-color:#5c6773;}.content .method .where,.content .fn .where,.content .where.fmt-newline{color:#c5c5c5;}.search-results a:hover{background-color:#777;}.search-results a:focus{color:#000 !important;background-color:#c6afb3;}.search-results a{color:#0096cf;}.search-results a span.desc{color:#c5c5c5;}.content .item-info::before{color:#ccc;}.content span.foreigntype,.content a.foreigntype{color:#ef57ff;}.content span.union,.content a.union{color:#98a01c;}.content span.constant,.content a.constant,.content span.static,.content a.static{color:#6380a0;}.content span.primitive,.content a.primitive{color:#32889b;}.content span.traitalias,.content a.traitalias{color:#57d399;}.content span.keyword,.content a.keyword{color:#de5249;}.content span.externcrate,.content span.mod,.content a.mod{color:#acccf9;}.content span.struct,.content a.struct{color:#ffa0a5;}.content span.enum,.content a.enum{color:#99e0c9;}.content span.trait,.content a.trait{color:#39AFD7;}.content span.type,.content a.type{color:#cfbcf5;}.content span.fn,.content a.fn,.content span.method,.content a.method,.content span.tymethod,.content a.tymethod,.content .fnname{color:#fdd687;}.content span.attr,.content a.attr,.content span.derive,.content a.derive,.content span.macro,.content a.macro{color:#a37acc;}pre.rust .comment{color:#788797;}pre.rust .doccomment{color:#a1ac88;}nav:not(.sidebar){border-bottom-color:#424c57;}nav.main .current{border-top-color:#5c6773;border-bottom-color:#5c6773;}nav.main .separator{border:1px solid #5c6773;}a{color:#c5c5c5;}.docblock:not(.type-decl) a:not(.srclink):not(.test-arrow),.docblock-short a:not(.srclink):not(.test-arrow),.item-info a,#help a{color:#39AFD7;}details.rustdoc-toggle>summary.hideme>span,details.rustdoc-toggle>summary::before,details.undocumented>summary::before{color:#999;}#crate-search{color:#c5c5c5;background-color:#141920;box-shadow:0 0 0 1px #424c57,0 0 0 2px transparent;border-color:#424c57;}.search-input{color:#ffffff;background-color:#141920;box-shadow:0 0 0 1px #424c57,0 0 0 2px transparent;transition:box-shadow 150ms ease-in-out;}#crate-search+.search-input:focus{box-shadow:0 0 0 1px #148099,0 0 0 2px transparent;}.search-input:disabled{background-color:#3e3e3e;}.module-item .stab,.import-item .stab{color:#000;}.stab.unstable,.stab.deprecated,.stab.portability{color:#c5c5c5;background:#314559 !important;border-style:none !important;border-radius:4px;padding:3px 6px 3px 6px;}.stab.portability>code{color:#e6e1cf;background:none;}#help>div{background:#14191f;box-shadow:0px 6px 20px 0px black;border:none;border-radius:4px;}#help>div>span{border-bottom-color:#5c6773;}.since{color:grey;}tr.result span.primitive::after,tr.result span.keyword::after{color:#788797;}.line-numbers :target{background-color:transparent;}pre.rust .number,pre.rust .string{color:#b8cc52;}pre.rust .kw,pre.rust .kw-2,pre.rust .prelude-ty,pre.rust .bool-val,pre.rust .prelude-val,pre.rust .op,pre.rust .lifetime{color:#ff7733;}pre.rust .macro,pre.rust .macro-nonterminal{color:#a37acc;}pre.rust .question-mark{color:#ff9011;}pre.rust .self{color:#36a3d9;font-style:italic;}pre.rust .attribute{color:#e6e1cf;}pre.rust .attribute .ident,pre.rust .attribute .op{color:#e6e1cf;}.example-wrap>pre.line-number{color:#5c67736e;border:none;}a.test-arrow{font-size:100%;color:#788797;border-radius:4px;background-color:rgba(57,175,215,0.09);}a.test-arrow:hover{background-color:rgba(57,175,215,0.368);color:#c5c5c5;}.toggle-label,.code-attribute{color:#999;}:target,:target*{background:rgba(255,236,164,0.06);}:target{border-right:3px solid rgba(255,180,76,0.85);}pre.compile_fail{border-left:2px solid rgba(255,0,0,.4);}pre.compile_fail:hover,.information:hover+pre.compile_fail{border-left:2px solid #f00;}pre.should_panic{border-left:2px solid rgba(255,0,0,.4);}pre.should_panic:hover,.information:hover+pre.should_panic{border-left:2px solid #f00;}pre.ignore{border-left:2px solid rgba(255,142,0,.6);}pre.ignore:hover,.information:hover+pre.ignore{border-left:2px solid #ff9200;}.tooltip.compile_fail{color:rgba(255,0,0,.5);}.information>.compile_fail:hover{color:#f00;}.tooltip.should_panic{color:rgba(255,0,0,.5);}.information>.should_panic:hover{color:#f00;}.tooltip.ignore{color:rgba(255,142,0,.6);}.information>.ignore:hover{color:#ff9200;}.search-failed a{color:#39AFD7;}.tooltip::after{background-color:#314559;color:#c5c5c5;border:1px solid #5c6773;}.tooltip::before{border-color:transparent #314559 transparent transparent;}.notable-traits-tooltiptext{background-color:#314559;border-color:#5c6773;}.notable-traits-tooltiptext .notable{border-bottom-color:#5c6773;}#titles>button.selected{background-color:#141920 !important;border-bottom:1px solid #ffb44c !important;border-top:none;}#titles>button:not(.selected){background-color:transparent !important;border:none;}#titles>button:hover{border-bottom:1px solid rgba(242,151,24,0.3);}#titles>button>div.count{color:#888;}.search-input:focus{}.content span.attr,.content a.attr,.block a.current.attr,.content span.derive,.content a.derive,.block a.current.derive,.content span.macro,.content a.macro,.block a.current.macro{}.content span.struct,.content a.struct,.block a.current.struct{}#titles>button:hover,#titles>button.selected{}.content span.type,.content a.type,.block a.current.type{}.content span.union,.content a.union,.block a.current.union{}pre.rust .lifetime{}.stab.unstable{}h2,h3:not(.impl):not(.method):not(.type):not(.tymethod),h4:not(.method):not(.type):not(.tymethod){}.content span.enum,.content a.enum,.block a.current.enum{}.content span.constant,.content a.constant,.block a.current.constant,.content span.static,.content a.static,.block a.current.static{}.content span.keyword,.content a.keyword,.block a.current.keyword{}pre.rust .comment{}.content span.traitalias,.content a.traitalias,.block a.current.traitalias{}.content span.fn,.content a.fn,.block a.current.fn,.content span.method,.content a.method,.block a.current.method,.content span.tymethod,.content a.tymethod,.block a.current.tymethod,.content .fnname{}pre.rust .kw{}pre.rust .self,pre.rust .bool-val,pre.rust .prelude-val,pre.rust .attribute,pre.rust .attribute .ident{}.content span.foreigntype,.content a.foreigntype,.block a.current.foreigntype{}pre.rust .doccomment{}.stab.deprecated{}.content a.attr,.content a.derive,.content a.macro{}.stab.portability{}.content span.primitive,.content a.primitive,.block a.current.primitive{}.content span.externcrate,.content span.mod,.content a.mod,.block a.current.mod{}pre.rust .kw-2,pre.rust .prelude-ty{}.content span.trait,.content a.trait,.block a.current.trait{}.search-results a:focus span{}a.result-trait:focus{}a.result-traitalias:focus{}a.result-mod:focus,a.result-externcrate:focus{}a.result-mod:focus{}a.result-externcrate:focus{}a.result-enum:focus{}a.result-struct:focus{}a.result-union:focus{}a.result-fn:focus,a.result-method:focus,a.result-tymethod:focus{}a.result-type:focus{}a.result-foreigntype:focus{}a.result-attr:focus,a.result-derive:focus,a.result-macro:focus{}a.result-constant:focus,a.result-static:focus{}a.result-primitive:focus{}a.result-keyword:focus{}@media (max-width:700px){.sidebar-menu{background-color:#14191f;border-bottom-color:#5c6773;border-right-color:#5c6773;}.sidebar-elems{background-color:#14191f;border-right-color:#5c6773;}#sidebar-filler{background-color:#14191f;border-bottom-color:#5c6773;}}kbd{color:#c5c5c5;background-color:#314559;border-color:#5c6773;border-bottom-color:#5c6773;box-shadow-color:#c6cbd1;}#theme-picker,#settings-menu,#help-button{border-color:#5c6773;background-color:#0f1419;color:#fff;}#theme-picker>img,#settings-menu>img{filter:invert(100);}#copy-path{color:#fff;}#copy-path>img{filter:invert(70%);}#copy-path:hover>img{filter:invert(100%);}#theme-picker:hover,#theme-picker:focus,#settings-menu:hover,#settings-menu:focus,#help-button:hover,#help-button:focus{border-color:#e0e0e0;}#theme-choices{border-color:#5c6773;background-color:#0f1419;}#theme-choices>button:not(:first-child){border-top-color:#5c6773;}#theme-choices>button:hover,#theme-choices>button:focus{background-color:rgba(110,110,110,0.33);}@media (max-width:700px){#theme-picker{background:#0f1419;}}#all-types{background-color:#14191f;}#all-types:hover{background-color:rgba(70,70,70,0.33);}.search-results .result-name span.alias{color:#c5c5c5;}.search-results .result-name span.grey{color:#999;}#sidebar-toggle{background-color:#14191f;}#sidebar-toggle:hover{background-color:rgba(70,70,70,0.33);}#source-sidebar{background-color:#14191f;}#source-sidebar>.title{color:#fff;border-bottom-color:#5c6773;}div.files>a:hover,div.name:hover{background-color:#14191f;color:#ffb44c;}div.files>.selected{background-color:#14191f;color:#ffb44c;}.setting-line>.title{border-bottom-color:#5c6773;}input:checked+.slider{background-color:#ffb454 !important;} \ No newline at end of file diff --git a/rustdoc/latest/brush.svg b/rustdoc/latest/brush.svg new file mode 100644 index 00000000..ea266e85 --- /dev/null +++ b/rustdoc/latest/brush.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/rustdoc/latest/clipboard.svg b/rustdoc/latest/clipboard.svg new file mode 100644 index 00000000..8adbd996 --- /dev/null +++ b/rustdoc/latest/clipboard.svg @@ -0,0 +1 @@ + diff --git a/rustdoc/latest/crates.js b/rustdoc/latest/crates.js new file mode 100644 index 00000000..98e653eb --- /dev/null +++ b/rustdoc/latest/crates.js @@ -0,0 +1 @@ +window.ALL_CRATES = ["halo2"]; \ No newline at end of file diff --git a/rustdoc/latest/dark.css b/rustdoc/latest/dark.css new file mode 100644 index 00000000..474fd9c6 --- /dev/null +++ b/rustdoc/latest/dark.css @@ -0,0 +1 @@ +body{background-color:#353535;color:#ddd;}h1,h2,h3,h4{color:#ddd;}h1.fqn{border-bottom-color:#d2d2d2;}h2,h3,h4{border-bottom-color:#d2d2d2;}.in-band{background-color:#353535;}.invisible{background:rgba(0,0,0,0);}.docblock code,.docblock-short code{background-color:#2A2A2A;}pre,.rustdoc.source .example-wrap{background-color:#2A2A2A;}.sidebar{background-color:#505050;}.logo-container.rust-logo>img{filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff)}*{scrollbar-color:rgb(64,65,67) #717171;}.sidebar{scrollbar-color:rgba(32,34,37,.6) transparent;}::-webkit-scrollbar-track{background-color:#717171;}::-webkit-scrollbar-thumb{background-color:rgba(32,34,37,.6);}.sidebar::-webkit-scrollbar-track{background-color:#717171;}.sidebar::-webkit-scrollbar-thumb{background-color:rgba(32,34,37,.6);}.sidebar .current{background-color:#333;}.source .sidebar{background-color:#353535;}.sidebar .location{border-color:#fff;background:#575757;color:#DDD;}.sidebar .version{border-bottom-color:#DDD;}.sidebar-title{border-top-color:#777;border-bottom-color:#777;}.block a:hover{background:#444;}.line-numbers span{color:#3B91E2;}.line-numbers .line-highlighted{background-color:#0a042f !important;}.docblock h1,.docblock h2,.docblock h3,.docblock h4,.docblock h5{border-bottom-color:#DDD;}.docblock table,.docblock table td,.docblock table th{border-color:#ddd;}.content .method .where,.content .fn .where,.content .where.fmt-newline{color:#ddd;}.search-results a:hover{background-color:#777;}.search-results a:focus{color:#eee !important;background-color:#616161;}.search-results a:focus span{color:#eee !important;}a.result-trait:focus{background-color:#013191;}a.result-traitalias:focus{background-color:#013191;}a.result-mod:focus,a.result-externcrate:focus{background-color:#afc6e4;}a.result-mod:focus{background-color:#803a1b;}a.result-externcrate:focus{background-color:#396bac;}a.result-enum:focus{background-color:#5b4e68;}a.result-struct:focus{background-color:#194e9f;}a.result-union:focus{background-color:#b7bd49;}a.result-fn:focus,a.result-method:focus,a.result-tymethod:focus{background-color:#4950ed;}a.result-type:focus{background-color:#38902c;}a.result-foreigntype:focus{background-color:#b200d6;}a.result-attr:focus,a.result-derive:focus,a.result-macro:focus{background-color:#217d1c;}a.result-constant:focus,a.result-static:focus{background-color:#0063cc;}a.result-primitive:focus{background-color:#00708a;}a.result-keyword:focus{background-color:#884719;}.content .item-info::before{color:#ccc;}.content span.enum,.content a.enum,.block a.current.enum{color:#82b089;}.content span.struct,.content a.struct,.block a.current.struct{color:#2dbfb8;}.content span.type,.content a.type,.block a.current.type{color:#ff7f00;}.content span.foreigntype,.content a.foreigntype,.block a.current.foreigntype{color:#dd7de8;}.content span.attr,.content a.attr,.block a.current.attr,.content span.derive,.content a.derive,.block a.current.derive,.content span.macro,.content a.macro,.block a.current.macro{color:#09bd00;}.content span.union,.content a.union,.block a.current.union{color:#a6ae37;}.content span.constant,.content a.constant,.block a.current.constant,.content span.static,.content a.static,.block a.current.static{color:#82a5c9;}.content span.primitive,.content a.primitive,.block a.current.primitive{color:#43aec7;}.content span.externcrate,.content span.mod,.content a.mod,.block a.current.mod{color:#bda000;}.content span.trait,.content a.trait,.block a.current.trait{color:#b78cf2;}.content span.traitalias,.content a.traitalias,.block a.current.traitalias{color:#b397da;}.content span.fn,.content a.fn,.block a.current.fn,.content span.method,.content a.method,.block a.current.method,.content span.tymethod,.content a.tymethod,.block a.current.tymethod,.content .fnname{color:#2BAB63;}.content span.keyword,.content a.keyword,.block a.current.keyword{color:#de5249;}pre.rust .comment{color:#8d8d8b;}pre.rust .doccomment{color:#8ca375;}nav:not(.sidebar){border-bottom-color:#4e4e4e;}nav.main .current{border-top-color:#eee;border-bottom-color:#eee;}nav.main .separator{border-color:#eee;}a{color:#ddd;}.docblock:not(.type-decl) a:not(.srclink):not(.test-arrow),.docblock-short a:not(.srclink):not(.test-arrow),.item-info a,#help a{color:#D2991D;}a.test-arrow{color:#dedede;}details.rustdoc-toggle>summary.hideme>span,details.rustdoc-toggle>summary::before,details.undocumented>summary::before{color:#999;}#crate-search{color:#111;background-color:#f0f0f0;border-color:#000;box-shadow:0 0 0 1px #000,0 0 0 2px transparent;}.search-input{color:#111;background-color:#f0f0f0;box-shadow:0 0 0 1px #000,0 0 0 2px transparent;}.search-input:focus{border-color:#008dfd;}.search-input:disabled{background-color:#c5c4c4;}#crate-search+.search-input:focus{box-shadow:0 0 8px 4px #078dd8;}.module-item .stab,.import-item .stab{color:#ddd;}.stab.unstable{background:#FFF5D6;border-color:#FFC600;color:#2f2f2f;}.stab.deprecated{background:#ffc4c4;border-color:#db7b7b;color:#2f2f2f;}.stab.portability{background:#F3DFFF;border-color:#b07bdb;color:#2f2f2f;}.stab.portability>code{background:none;}#help>div{background:#4d4d4d;border-color:#bfbfbf;}#help>div>span{border-bottom-color:#bfbfbf;}#help dt{border-color:#bfbfbf;background:rgba(0,0,0,0);}.since{color:grey;}tr.result span.primitive::after,tr.result span.keyword::after{color:#ddd;}.line-numbers :target{background-color:transparent;}pre.rust .kw{color:#ab8ac1;}pre.rust .kw-2,pre.rust .prelude-ty{color:#769acb;}pre.rust .number,pre.rust .string{color:#83a300;}pre.rust .self,pre.rust .bool-val,pre.rust .prelude-val,pre.rust .attribute,pre.rust .attribute .ident{color:#ee6868;}pre.rust .macro,pre.rust .macro-nonterminal{color:#3E999F;}pre.rust .lifetime{color:#d97f26;}pre.rust .question-mark{color:#ff9011;}.example-wrap>pre.line-number{border-color:#4a4949;}a.test-arrow{background-color:rgba(78,139,202,0.2);}a.test-arrow:hover{background-color:#4e8bca;}.toggle-label,.code-attribute{color:#999;}:target,:target*{background-color:#494a3d;}:target{border-right:3px solid #bb7410;}pre.compile_fail{border-left:2px solid rgba(255,0,0,.8);}pre.compile_fail:hover,.information:hover+pre.compile_fail{border-left:2px solid #f00;}pre.should_panic{border-left:2px solid rgba(255,0,0,.8);}pre.should_panic:hover,.information:hover+pre.should_panic{border-left:2px solid #f00;}pre.ignore{border-left:2px solid rgba(255,142,0,.6);}pre.ignore:hover,.information:hover+pre.ignore{border-left:2px solid #ff9200;}.tooltip.compile_fail{color:rgba(255,0,0,.8);}.information>.compile_fail:hover{color:#f00;}.tooltip.should_panic{color:rgba(255,0,0,.8);}.information>.should_panic:hover{color:#f00;}.tooltip.ignore{color:rgba(255,142,0,.6);}.information>.ignore:hover{color:#ff9200;}.search-failed a{color:#0089ff;}.tooltip::after{background-color:#000;color:#fff;border-color:#000;}.tooltip::before{border-color:transparent black transparent transparent;}.notable-traits-tooltiptext{background-color:#111;border-color:#777;}.notable-traits-tooltiptext .notable{border-bottom-color:#d2d2d2;}#titles>button:not(.selected){background-color:#252525;border-top-color:#252525;}#titles>button:hover,#titles>button.selected{border-top-color:#0089ff;background-color:#353535;}#titles>button>div.count{color:#888;}@media (max-width:700px){.sidebar-menu{background-color:#505050;border-bottom-color:#e0e0e0;border-right-color:#e0e0e0;}.sidebar-elems{background-color:#505050;border-right-color:#000;}#sidebar-filler{background-color:#505050;border-bottom-color:#e0e0e0;}}kbd{color:#000;background-color:#fafbfc;border-color:#d1d5da;border-bottom-color:#c6cbd1;box-shadow-color:#c6cbd1;}#theme-picker,#settings-menu,#help-button{border-color:#e0e0e0;background:#f0f0f0;color:#000;}#theme-picker:hover,#theme-picker:focus,#settings-menu:hover,#settings-menu:focus,#help-button:hover,#help-button:focus{border-color:#ffb900;}#copy-path{color:#999;}#copy-path>img{filter:invert(50%);}#copy-path:hover>img{filter:invert(65%);}#theme-choices{border-color:#e0e0e0;background-color:#353535;}#theme-choices>button:not(:first-child){border-top-color:#e0e0e0;}#theme-choices>button:hover,#theme-choices>button:focus{background-color:#4e4e4e;}@media (max-width:700px){#theme-picker{background:#f0f0f0;}}#all-types{background-color:#505050;}#all-types:hover{background-color:#606060;}.search-results .result-name span.alias{color:#fff;}.search-results .result-name span.grey{color:#ccc;}#sidebar-toggle{background-color:#565656;}#sidebar-toggle:hover{background-color:#676767;}#source-sidebar{background-color:#565656;}#source-sidebar>.title{border-bottom-color:#ccc;}div.files>a:hover,div.name:hover{background-color:#444;}div.files>.selected{background-color:#333;}.setting-line>.title{border-bottom-color:#ddd;} \ No newline at end of file diff --git a/rustdoc/latest/down-arrow.svg b/rustdoc/latest/down-arrow.svg new file mode 100644 index 00000000..35437e77 --- /dev/null +++ b/rustdoc/latest/down-arrow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/rustdoc/latest/favicon-16x16.png b/rustdoc/latest/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..7cfe6c13550d31bc31355616bbb9cb77fd1b25ef GIT binary patch literal 2214 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 IIpoLx0#^I3DgXcg literal 0 HcmV?d00001 diff --git a/rustdoc/latest/favicon.svg b/rustdoc/latest/favicon.svg new file mode 100644 index 00000000..8b34b511 --- /dev/null +++ b/rustdoc/latest/favicon.svg @@ -0,0 +1,24 @@ + + + + + diff --git a/rustdoc/latest/halo2/all.html b/rustdoc/latest/halo2/all.html new file mode 100644 index 00000000..53825dc3 --- /dev/null +++ b/rustdoc/latest/halo2/all.html @@ -0,0 +1,20 @@ +List of all items in this crate + + + +

List of all items[] + +

Structs

Enums

Traits

Functions

+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/arithmetic/fn.best_fft.html b/rustdoc/latest/halo2/arithmetic/fn.best_fft.html new file mode 100644 index 00000000..626e8636 --- /dev/null +++ b/rustdoc/latest/halo2/arithmetic/fn.best_fft.html @@ -0,0 +1,27 @@ +best_fft in halo2::arithmetic - Rust + + + +

Function halo2::arithmetic::best_fft[][src]

pub fn best_fft<G: Group>(a: &mut [G], omega: G::Scalar, log_n: u32)
Expand description

Performs a radix-$2$ Fast-Fourier Transformation (FFT) on a vector of size +$n = 2^k$, when provided log_n = $k$ and an element of multiplicative +order $n$ called omega ($\omega$). The result is that the vector a, when +interpreted as the coefficients of a polynomial of degree $n - 1$, is +transformed into the evaluations of this polynomial at each of the $n$ +distinct powers of $\omega$. This transformation is invertible by providing +$\omega^{-1}$ in place of $\omega$ and dividing each resulting field element +by $n$.

+

This will use multithreading if beneficial.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/arithmetic/fn.best_multiexp.html b/rustdoc/latest/halo2/arithmetic/fn.best_multiexp.html new file mode 100644 index 00000000..9df10682 --- /dev/null +++ b/rustdoc/latest/halo2/arithmetic/fn.best_multiexp.html @@ -0,0 +1,21 @@ +best_multiexp in halo2::arithmetic - Rust + + + +

Function halo2::arithmetic::best_multiexp[][src]

pub fn best_multiexp<C: CurveAffine>(
    coeffs: &[C::Scalar],
    bases: &[C]
) -> C::Curve
Expand description

Performs a multi-exponentiation operation.

+

This function will panic if coeffs and bases have a different length.

+

This will use multithreading if beneficial.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/arithmetic/fn.compute_inner_product.html b/rustdoc/latest/halo2/arithmetic/fn.compute_inner_product.html new file mode 100644 index 00000000..9a12a024 --- /dev/null +++ b/rustdoc/latest/halo2/arithmetic/fn.compute_inner_product.html @@ -0,0 +1,20 @@ +compute_inner_product in halo2::arithmetic - Rust + + + +

Function halo2::arithmetic::compute_inner_product[][src]

pub fn compute_inner_product<F: Field>(a: &[F], b: &[F]) -> F
Expand description

This computes the inner product of two vectors a and b.

+

This function will panic if the two vectors are not the same size.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/arithmetic/fn.eval_polynomial.html b/rustdoc/latest/halo2/arithmetic/fn.eval_polynomial.html new file mode 100644 index 00000000..6ae0b895 --- /dev/null +++ b/rustdoc/latest/halo2/arithmetic/fn.eval_polynomial.html @@ -0,0 +1,19 @@ +eval_polynomial in halo2::arithmetic - Rust + + + +

Function halo2::arithmetic::eval_polynomial[][src]

pub fn eval_polynomial<F: Field>(poly: &[F], point: F) -> F
Expand description

This evaluates a provided polynomial (in coefficient form) at point.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/arithmetic/fn.kate_division.html b/rustdoc/latest/halo2/arithmetic/fn.kate_division.html new file mode 100644 index 00000000..5feffd68 --- /dev/null +++ b/rustdoc/latest/halo2/arithmetic/fn.kate_division.html @@ -0,0 +1,20 @@ +kate_division in halo2::arithmetic - Rust + + + +

Function halo2::arithmetic::kate_division[][src]

pub fn kate_division<'a, F: Field, I: IntoIterator<Item = &'a F>>(
    a: I,
    b: F
) -> Vec<F> where
    I::IntoIter: DoubleEndedIterator + ExactSizeIterator
Expand description

Divides polynomial a in X by X - b with +no remainder.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/arithmetic/fn.lagrange_interpolate.html b/rustdoc/latest/halo2/arithmetic/fn.lagrange_interpolate.html new file mode 100644 index 00000000..17d53d67 --- /dev/null +++ b/rustdoc/latest/halo2/arithmetic/fn.lagrange_interpolate.html @@ -0,0 +1,21 @@ +lagrange_interpolate in halo2::arithmetic - Rust + + + +

Function halo2::arithmetic::lagrange_interpolate[][src]

pub fn lagrange_interpolate<F: FieldExt>(points: &[F], evals: &[F]) -> Vec<F>
Expand description

Returns coefficients of an n - 1 degree polynomial given a set of n points +and their evaluations. This function will panic if two values in points +are the same.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/arithmetic/fn.parallelize.html b/rustdoc/latest/halo2/arithmetic/fn.parallelize.html new file mode 100644 index 00000000..0e6ef4fd --- /dev/null +++ b/rustdoc/latest/halo2/arithmetic/fn.parallelize.html @@ -0,0 +1,20 @@ +parallelize in halo2::arithmetic - Rust + + + +

Function halo2::arithmetic::parallelize[][src]

pub fn parallelize<T: Send, F: Fn(&mut [T], usize) + Send + Sync + Clone>(
    v: &mut [T],
    f: F
)
Expand description

This simple utility function will parallelize an operation that is to be +performed over a mutable slice.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/arithmetic/fn.small_multiexp.html b/rustdoc/latest/halo2/arithmetic/fn.small_multiexp.html new file mode 100644 index 00000000..cc9e9432 --- /dev/null +++ b/rustdoc/latest/halo2/arithmetic/fn.small_multiexp.html @@ -0,0 +1,20 @@ +small_multiexp in halo2::arithmetic - Rust + + + +

Function halo2::arithmetic::small_multiexp[][src]

pub fn small_multiexp<C: CurveAffine>(
    coeffs: &[C::Scalar],
    bases: &[C]
) -> C::Curve
Expand description

Performs a small multi-exponentiation operation. +Uses the double-and-add algorithm with doublings shared across points.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/arithmetic/index.html b/rustdoc/latest/halo2/arithmetic/index.html new file mode 100644 index 00000000..8bd94472 --- /dev/null +++ b/rustdoc/latest/halo2/arithmetic/index.html @@ -0,0 +1,58 @@ +halo2::arithmetic - Rust + + + +

Module halo2::arithmetic[][src]

Expand description

This module provides common utilities, traits and structures for group, +field and polynomial arithmetic.

+

Structs

+

The affine coordinates of a point on an elliptic curve.

+

Tables used for square root computation.

+

Traits

+

Extension trait for iterators over mutable field elements which allows those +field elements to be inverted in a batch.

+

This trait is the affine counterpart to Curve and is used for +serialization, storage in memory, and inspection of $x$ and $y$ coordinates.

+

This trait is a common interface for dealing with elements of an elliptic +curve group in a “projective” form, where that arithmetic is usually more +efficient.

+

This trait represents an element of a field.

+

This trait is a common interface for dealing with elements of a finite +field.

+

This represents an element of a group with basic operations that can be +performed. This allows an FFT implementation (for example) to operate +generically over either a field or elliptic curve group.

+

Functions

+

Performs a radix-$2$ Fast-Fourier Transformation (FFT) on a vector of size +$n = 2^k$, when provided log_n = $k$ and an element of multiplicative +order $n$ called omega ($\omega$). The result is that the vector a, when +interpreted as the coefficients of a polynomial of degree $n - 1$, is +transformed into the evaluations of this polynomial at each of the $n$ +distinct powers of $\omega$. This transformation is invertible by providing +$\omega^{-1}$ in place of $\omega$ and dividing each resulting field element +by $n$.

+

Performs a multi-exponentiation operation.

+

This computes the inner product of two vectors a and b.

+

This evaluates a provided polynomial (in coefficient form) at point.

+

Divides polynomial a in X by X - b with +no remainder.

+

Returns coefficients of an n - 1 degree polynomial given a set of n points +and their evaluations. This function will panic if two values in points +are the same.

+

This simple utility function will parallelize an operation that is to be +performed over a mutable slice.

+

Performs a small multi-exponentiation operation. +Uses the double-and-add algorithm with doublings shared across points.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/arithmetic/sidebar-items.js b/rustdoc/latest/halo2/arithmetic/sidebar-items.js new file mode 100644 index 00000000..229fbe92 --- /dev/null +++ b/rustdoc/latest/halo2/arithmetic/sidebar-items.js @@ -0,0 +1 @@ +initSidebarItems({"fn":[["best_fft","Performs a radix-$2$ Fast-Fourier Transformation (FFT) on a vector of size $n = 2^k$, when provided `log_n` = $k$ and an element of multiplicative order $n$ called `omega` ($\\omega$). The result is that the vector `a`, when interpreted as the coefficients of a polynomial of degree $n - 1$, is transformed into the evaluations of this polynomial at each of the $n$ distinct powers of $\\omega$. This transformation is invertible by providing $\\omega^{-1}$ in place of $\\omega$ and dividing each resulting field element by $n$."],["best_multiexp","Performs a multi-exponentiation operation."],["compute_inner_product","This computes the inner product of two vectors `a` and `b`."],["eval_polynomial","This evaluates a provided polynomial (in coefficient form) at `point`."],["kate_division","Divides polynomial `a` in `X` by `X - b` with no remainder."],["lagrange_interpolate","Returns coefficients of an n - 1 degree polynomial given a set of n points and their evaluations. This function will panic if two values in `points` are the same."],["parallelize","This simple utility function will parallelize an operation that is to be performed over a mutable slice."],["small_multiexp","Performs a small multi-exponentiation operation. Uses the double-and-add algorithm with doublings shared across points."]],"struct":[["Coordinates","The affine coordinates of a point on an elliptic curve."],["SqrtTables","Tables used for square root computation."]],"trait":[["BatchInvert","Extension trait for iterators over mutable field elements which allows those field elements to be inverted in a batch."],["CurveAffine","This trait is the affine counterpart to `Curve` and is used for serialization, storage in memory, and inspection of $x$ and $y$ coordinates."],["CurveExt","This trait is a common interface for dealing with elements of an elliptic curve group in a “projective” form, where that arithmetic is usually more efficient."],["Field","This trait represents an element of a field."],["Field","This trait represents an element of a field."],["FieldExt","This trait is a common interface for dealing with elements of a finite field."],["Group","This represents an element of a group with basic operations that can be performed. This allows an FFT implementation (for example) to operate generically over either a field or elliptic curve group."]]}); \ No newline at end of file diff --git a/rustdoc/latest/halo2/arithmetic/struct.Coordinates.html b/rustdoc/latest/halo2/arithmetic/struct.Coordinates.html new file mode 100644 index 00000000..1d897cc6 --- /dev/null +++ b/rustdoc/latest/halo2/arithmetic/struct.Coordinates.html @@ -0,0 +1,105 @@ +Coordinates in halo2::arithmetic - Rust + + + +

Struct halo2::arithmetic::Coordinates[]

pub struct Coordinates<C> where
    C: CurveAffine
{ /* fields omitted */ }
Expand description

The affine coordinates of a point on an elliptic curve.

+

Implementations

Returns the x-coordinate.

+

Equivalent to Coordinates::u.

+

Returns the y-coordinate.

+

Equivalent to Coordinates::v.

+

Returns the u-coordinate.

+

Equivalent to Coordinates::x.

+

Returns the v-coordinate.

+

Equivalent to Coordinates::y.

+

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Select a or b according to choice. Read more

+

Conditionally assign other to self, according to choice. Read more

+

Conditionally swap self and other if choice == 1; otherwise, +reassign both unto themselves. Read more

+

Formats the value using the given formatter. Read more

+

Returns the “default value” for a type. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

+

Uses borrowed data to replace owned data, usually by cloning. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/arithmetic/struct.SqrtTables.html b/rustdoc/latest/halo2/arithmetic/struct.SqrtTables.html new file mode 100644 index 00000000..b1999b33 --- /dev/null +++ b/rustdoc/latest/halo2/arithmetic/struct.SqrtTables.html @@ -0,0 +1,97 @@ +SqrtTables in halo2::arithmetic - Rust + + + +

Struct halo2::arithmetic::SqrtTables[]

pub struct SqrtTables<F> where
    F: FieldExt
{ /* fields omitted */ }
Expand description

Tables used for square root computation.

+

Implementations

Build tables given parameters for the perfect hash.

+

Computes:

+
    +
  • (true, sqrt(num/div)), if num and div are nonzero and num/div is a square in the field;
  • +
  • (true, 0), if num is zero;
  • +
  • (false, 0), if num is nonzero and div is zero;
  • +
  • (false, sqrt(ROOT_OF_UNITY * num/div)), if num and div are nonzero and num/div is a nonsquare in the field;
  • +
+

where ROOT_OF_UNITY is a generator of the order 2^n subgroup (and therefore a nonsquare).

+

The choice of root from sqrt is unspecified.

+

Same as sqrt_ratio(u, one()) but more efficient.

+

Trait Implementations

Formats the value using the given formatter. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/arithmetic/trait.BatchInvert.html b/rustdoc/latest/halo2/arithmetic/trait.BatchInvert.html new file mode 100644 index 00000000..3bbaf661 --- /dev/null +++ b/rustdoc/latest/halo2/arithmetic/trait.BatchInvert.html @@ -0,0 +1,25 @@ +BatchInvert in halo2::arithmetic - Rust + + + +

Trait halo2::arithmetic::BatchInvert[][src]

pub trait BatchInvert<F: Field> {
+    fn batch_invert(self) -> F;
+}
Expand description

Extension trait for iterators over mutable field elements which allows those +field elements to be inverted in a batch.

+

Required methods

Consume this iterator and invert each field element (when nonzero), +returning the inverse of all nonzero field elements. Zero elements +are left as zero.

+

Implementors

+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/arithmetic/trait.CurveAffine.html b/rustdoc/latest/halo2/arithmetic/trait.CurveAffine.html new file mode 100644 index 00000000..ea715ef0 --- /dev/null +++ b/rustdoc/latest/halo2/arithmetic/trait.CurveAffine.html @@ -0,0 +1,48 @@ +CurveAffine in halo2::arithmetic - Rust + + + +

Trait halo2::arithmetic::CurveAffine[]

pub trait CurveAffine: PrimeCurveAffine<Scalar = Self::ScalarExt, Curve = Self::CurveExt> + Default + Add<Self, Output = Self::Curve> + Sub<Self, Output = Self::Curve> + ConditionallySelectable + ConstantTimeEq + From<Self::Curve> {
+    type ScalarExt: FieldExt;
+    type Base: FieldExt;
+    type CurveExt: CurveExt;
+    fn coordinates(&self) -> CtOption<Coordinates<Self>>;
+
fn from_xy(x: Self::Base, y: Self::Base) -> CtOption<Self>; +
fn is_on_curve(&self) -> Choice; +
fn a() -> Self::Base; +
fn b() -> Self::Base; + + fn read<R>(reader: &mut R) -> Result<Self, Error>
    where
        R: Read
, + { ... } +
fn write<W>(&self, writer: &mut W) -> Result<(), Error>
    where
        W: Write
, + { ... } +}
Expand description

This trait is the affine counterpart to Curve and is used for +serialization, storage in memory, and inspection of $x$ and $y$ coordinates.

+

Associated Types

The scalar field of this elliptic curve.

+

The base field over which this elliptic curve is constructed.

+

The projective form of the curve

+

Required methods

Gets the coordinates of this point.

+

Returns None if this is the identity.

+

Obtains a point given $(x, y)$, failing if it is not on the +curve.

+

Returns whether or not this element is on the curve; should +always be true unless an “unchecked” API was used.

+

Returns the curve constant $a$.

+

Returns the curve constant $b$.

+

Provided methods

Reads a compressed element from the buffer and attempts to parse it +using from_bytes.

+

Writes an element in compressed form to the buffer.

+

Implementations on Foreign Types

Implementors

+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/arithmetic/trait.CurveExt.html b/rustdoc/latest/halo2/arithmetic/trait.CurveExt.html new file mode 100644 index 00000000..7f2b84b7 --- /dev/null +++ b/rustdoc/latest/halo2/arithmetic/trait.CurveExt.html @@ -0,0 +1,67 @@ +CurveExt in halo2::arithmetic - Rust + + + +

Trait halo2::arithmetic::CurveExt[]

pub trait CurveExt: PrimeCurve<Affine = Self::AffineExt, Scalar = Self::ScalarExt> + Group + Default + PartialEq<Self> + Eq + ConditionallySelectable + ConstantTimeEq + From<Self::Affine> + Group<Scalar = Self::Scalar> {
+    type ScalarExt: FieldExt;
+    type Base: FieldExt;
+    type AffineExt: CurveAffine + Mul<Self::ScalarExt>;
+
+    const CURVE_ID: &'static str;
+
+    fn endo(&self) -> Self;
+
fn jacobian_coordinates(&self) -> (Self::Base, Self::Base, Self::Base); +
fn hash_to_curve(domain_prefix: &'a str) -> Box<dyn Fn(&[u8]) + 'a, Global>; +
fn is_on_curve(&self) -> Choice; +
fn a() -> Self::Base; +
fn b() -> Self::Base; +
fn new_jacobian(
        x: Self::Base,
        y: Self::Base,
        z: Self::Base
    ) -> CtOption<Self>; +}
Expand description

This trait is a common interface for dealing with elements of an elliptic +curve group in a “projective” form, where that arithmetic is usually more +efficient.

+

Associated Types

The scalar field of this elliptic curve.

+

The base field over which this elliptic curve is constructed.

+

The affine version of the curve

+

Associated Constants

CURVE_ID used for hash-to-curve.

+

Required methods

Apply the curve endomorphism by multiplying the x-coordinate +by an element of multiplicative order 3.

+

Return the Jacobian coordinates of this point.

+

Requests a hasher that accepts messages and returns near-uniformly +distributed elements in the group, given domain prefix domain_prefix.

+

This method is suitable for use as a random oracle.

+

Example

+
+use pasta_curves::arithmetic::CurveExt;
+fn pedersen_commitment<C: CurveExt>(
+    x: C::ScalarExt,
+    r: C::ScalarExt,
+) -> C::Affine {
+    let hasher = C::hash_to_curve("z.cash:example_pedersen_commitment");
+    let g = hasher(b"g");
+    let h = hasher(b"h");
+    (g * x + &(h * r)).to_affine()
+}
+

Returns whether or not this element is on the curve; should +always be true unless an “unchecked” API was used.

+

Returns the curve constant a.

+

Returns the curve constant b.

+

Obtains a point given Jacobian coordinates $X : Y : Z$, failing +if the coordinates are not on the curve.

+

Implementations on Foreign Types

Apply the curve endomorphism by multiplying the x-coordinate +by an element of multiplicative order 3.

+

Apply the curve endomorphism by multiplying the x-coordinate +by an element of multiplicative order 3.

+

Implementors

+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/arithmetic/trait.Field.html b/rustdoc/latest/halo2/arithmetic/trait.Field.html new file mode 100644 index 00000000..e16df7f6 --- /dev/null +++ b/rustdoc/latest/halo2/arithmetic/trait.Field.html @@ -0,0 +1,53 @@ +Field in halo2::arithmetic - Rust + + + +

Trait halo2::arithmetic::Field[]

pub trait Field: 'static + Eq + Copy + Clone + Default + Send + Sync + Debug + ConditionallySelectable + Add<Self, Output = Self, Output = Self> + Sub<Self, Output = Self, Output = Self> + Mul<Self, Output = Self, Output = Self> + Neg<Output = Self> + for<'a> Add<&'a Self> + for<'a> Mul<&'a Self> + for<'a> Sub<&'a Self> + MulAssign<Self> + AddAssign<Self> + SubAssign<Self> + for<'a> MulAssign<&'a Self> + for<'a> AddAssign<&'a Self> + for<'a> SubAssign<&'a Self> {
+    fn random(rng: impl RngCore) -> Self;
+
fn zero() -> Self; +
fn one() -> Self; +
fn is_zero(&self) -> bool; +
fn square(&self) -> Self; +
fn double(&self) -> Self; +
fn invert(&self) -> CtOption<Self>; +
fn sqrt(&self) -> CtOption<Self>; + + fn cube(&self) -> Self { ... } +
fn pow_vartime<S>(&self, exp: S) -> Self
    where
        S: AsRef<[u64]>
, + { ... } +}
Expand description

This trait represents an element of a field.

+

Required methods

Returns an element chosen uniformly at random using a user-provided RNG.

+

Returns the zero element of the field, the additive identity.

+

Returns the one element of the field, the multiplicative identity.

+

Returns true iff this element is zero.

+

Squares this element.

+

Doubles this element.

+

Computes the multiplicative inverse of this element, +failing if the element is zero.

+

Returns the square root of the field element, if it is +quadratic residue.

+

Provided methods

Cubes this element.

+

Exponentiates self by exp, where exp is a little-endian order +integer exponent.

+

This operation is variable time with respect to the exponent. If the +exponent is fixed, this operation is effectively constant time.

+

Implementations on Foreign Types

Computes the square root of this element, if it exists.

+

Computes the multiplicative inverse of this element, +failing if the element is zero.

+

Computes the square root of this element, if it exists.

+

Computes the multiplicative inverse of this element, +failing if the element is zero.

+

Implementors

+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/arithmetic/trait.FieldExt.html b/rustdoc/latest/halo2/arithmetic/trait.FieldExt.html new file mode 100644 index 00000000..3b898e5a --- /dev/null +++ b/rustdoc/latest/halo2/arithmetic/trait.FieldExt.html @@ -0,0 +1,105 @@ +FieldExt in halo2::arithmetic - Rust + + + +

Trait halo2::arithmetic::FieldExt[]

pub trait FieldExt: PrimeField + From<bool> + Ord + ConstantTimeEq + Group<Scalar = Self> {
+    const MODULUS: &'static str;
+    const ROOT_OF_UNITY: Self;
+    const ROOT_OF_UNITY_INV: Self;
+    const T_MINUS1_OVER2: [u64; 4];
+    const DELTA: Self;
+    const TWO_INV: Self;
+    const RESCUE_ALPHA: u64;
+    const RESCUE_INVALPHA: [u64; 4];
+    const ZETA: Self;
+
Show methods + fn sqrt_ratio(num: &Self, div: &Self) -> (Choice, Self); +
fn ct_is_zero(&self) -> Choice; +
fn from_u64(v: u64) -> Self; +
fn from_u128(v: u128) -> Self; +
fn to_bytes(&self) -> [u8; 32]; +
fn from_bytes(bytes: &[u8; 32]) -> CtOption<Self>; +
fn from_bytes_wide(bytes: &[u8; 64]) -> Self; +
fn get_lower_128(&self) -> u128; +
fn get_lower_32(&self) -> u32; + + fn sqrt_alt(&self) -> (Choice, Self) { ... } +
fn rand() -> Self { ... } +
fn write<W>(&self, writer: &mut W) -> Result<(), Error>
    where
        W: Write
, + { ... } +
fn read<R>(reader: &mut R) -> Result<Self, Error>
    where
        R: Read
, + { ... } +
fn pow(&self, by: &[u64; 4]) -> Self { ... } +
fn pow_by_t_minus1_over2(&self) -> Self { ... } +
fn batch_invert(v: &mut [Self]) -> Self { ... } +
}
Expand description

This trait is a common interface for dealing with elements of a finite +field.

+

Associated Constants

Modulus of the field written as a string for display purposes

+

Generator of the $2^S$ multiplicative subgroup

+

Inverse of ROOT_OF_UNITY

+

The value $(T-1)/2$ such that $2^S \cdot T = p - 1$ with $T$ odd.

+

Generator of the $t-order$ multiplicative subgroup

+

Inverse of $2$ in the field.

+

Ideally the smallest prime $\alpha$ such that gcd($p - 1$, $\alpha$) = $1$

+

$RESCUE_INVALPHA \cdot RESCUE_ALPHA = 1 \mod p - 1$ such that +(a^RESCUE_ALPHA)^RESCUE_INVALPHA = a.

+

Element of multiplicative order $3$.

+

Required methods

Computes:

+
    +
  • (true, sqrt(num/div)), if num and div are nonzero and num/div is a square in the field;
  • +
  • (true, 0), if num is zero;
  • +
  • (false, 0), if num is nonzero and div is zero;
  • +
  • (false, sqrt(ROOT_OF_UNITY * num/div)), if num and div are nonzero and num/div is a nonsquare in the field;
  • +
+

where ROOT_OF_UNITY is a generator of the order 2^n subgroup (and therefore a nonsquare).

+

The choice of root from sqrt is unspecified.

+

Returns whether or not this element is zero.

+

Obtains a field element congruent to the integer v.

+

Obtains a field element congruent to the integer v.

+

Converts this field element to its normalized, little endian byte +representation.

+

Attempts to obtain a field element from its normalized, little endian +byte representation.

+

Obtains a field element that is congruent to the provided little endian +byte representation of an integer.

+

Gets the lower 128 bits of this field element when expressed +canonically.

+

Gets the lower 32 bits of this field element when expressed +canonically.

+

Provided methods

Equivalent to sqrt_ratio(self, one()).

+

This computes a random element of the field using system randomness.

+

Writes this element in its normalized, little endian form into a buffer.

+

Reads a normalized, little endian represented field element from a +buffer.

+

Exponentiates self by by, where by is a little-endian order +integer exponent.

+

Raise this field element to the power T_MINUS1_OVER2. +Field implementations may override this to use an efficient addition chain.

+

Performs a batch inversion using Montgomery’s trick, returns the product +of every inverse. Zero inputs are ignored.

+

Implementations on Foreign Types

Attempts to convert a little-endian byte representation of +a scalar into a Fp, failing if the input is not canonical.

+

Converts an element of Fp into a byte representation in +little-endian byte order.

+

Converts a 512-bit little endian integer into +a Fp by reducing by the modulus.

+

Attempts to convert a little-endian byte representation of +a scalar into a Fq, failing if the input is not canonical.

+

Converts an element of Fq into a byte representation in +little-endian byte order.

+

Converts a 512-bit little endian integer into +a Fq by reducing by the modulus.

+

Implementors

+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/arithmetic/trait.Group.html b/rustdoc/latest/halo2/arithmetic/trait.Group.html new file mode 100644 index 00000000..06975a44 --- /dev/null +++ b/rustdoc/latest/halo2/arithmetic/trait.Group.html @@ -0,0 +1,33 @@ +Group in halo2::arithmetic - Rust + + + +

Trait halo2::arithmetic::Group[]

pub trait Group: 'static + Copy + Clone + Send + Sync {
+    type Scalar: FieldExt;
+    fn group_zero() -> Self;
+
fn group_add(&mut self, rhs: &Self); +
fn group_sub(&mut self, rhs: &Self); +
fn group_scale(&mut self, by: &Self::Scalar); +}
Expand description

This represents an element of a group with basic operations that can be +performed. This allows an FFT implementation (for example) to operate +generically over either a field or elliptic curve group.

+

Associated Types

The group is assumed to be of prime order $p$. Scalar is the +associated scalar field of size $p$.

+

Required methods

Returns the additive identity of the group.

+

Adds rhs to this group element.

+

Subtracts rhs from this group element.

+

Scales this group element by a scalar.

+

Implementations on Foreign Types

Implementors

+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/circuit/floor_planner/index.html b/rustdoc/latest/halo2/circuit/floor_planner/index.html new file mode 100644 index 00000000..26f7c19c --- /dev/null +++ b/rustdoc/latest/halo2/circuit/floor_planner/index.html @@ -0,0 +1,22 @@ +halo2::circuit::floor_planner - Rust + + + +

Module halo2::circuit::floor_planner[][src]

Expand description

Implementations of common circuit floor planners.

+

Structs

+

The version 1 FloorPlanner provided by halo2.

+

A single pass of the V1 layouter.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/circuit/floor_planner/sidebar-items.js b/rustdoc/latest/halo2/circuit/floor_planner/sidebar-items.js new file mode 100644 index 00000000..9dccb789 --- /dev/null +++ b/rustdoc/latest/halo2/circuit/floor_planner/sidebar-items.js @@ -0,0 +1 @@ +initSidebarItems({"struct":[["V1","The version 1 [`FloorPlanner`] provided by `halo2`."],["V1Pass","A single pass of the [`V1`] layouter."]]}); \ No newline at end of file diff --git a/rustdoc/latest/halo2/circuit/floor_planner/single_pass/struct.SimpleFloorPlanner.html b/rustdoc/latest/halo2/circuit/floor_planner/single_pass/struct.SimpleFloorPlanner.html new file mode 100644 index 00000000..1be0dd17 --- /dev/null +++ b/rustdoc/latest/halo2/circuit/floor_planner/single_pass/struct.SimpleFloorPlanner.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to ../../../../halo2/circuit/struct.SimpleFloorPlanner.html...

+ + + \ No newline at end of file diff --git a/rustdoc/latest/halo2/circuit/floor_planner/struct.V1.html b/rustdoc/latest/halo2/circuit/floor_planner/struct.V1.html new file mode 100644 index 00000000..e8684df9 --- /dev/null +++ b/rustdoc/latest/halo2/circuit/floor_planner/struct.V1.html @@ -0,0 +1,95 @@ +V1 in halo2::circuit::floor_planner - Rust + + + +

Struct halo2::circuit::floor_planner::V1[][src]

pub struct V1;
Expand description

The version 1 FloorPlanner provided by halo2.

+
    +
  • No column optimizations are performed. Circuit configuration is left entirely to the +circuit designer.
  • +
  • A dual-pass layouter is used to measures regions prior to assignment.
  • +
  • Regions are measured as rectangles, bounded on the cells they assign.
  • +
  • Regions are layed out using a greedy first-fit strategy, after sorting regions by +their “advice area” (number of advice columns * rows).
  • +
+

Trait Implementations

Formats the value using the given formatter. Read more

+

Given the provided cs, synthesize the given circuit. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/circuit/floor_planner/struct.V1Pass.html b/rustdoc/latest/halo2/circuit/floor_planner/struct.V1Pass.html new file mode 100644 index 00000000..c43e1f52 --- /dev/null +++ b/rustdoc/latest/halo2/circuit/floor_planner/struct.V1Pass.html @@ -0,0 +1,93 @@ +V1Pass in halo2::circuit::floor_planner - Rust + + + +

Struct halo2::circuit::floor_planner::V1Pass[][src]

pub struct V1Pass<'p, 'a, F: Field, CS: Assignment<F> + 'a>(_);
Expand description

A single pass of the V1 layouter.

+

Trait Implementations

Formats the value using the given formatter. Read more

+

Represents the type of the “root” of this layouter, so that nested namespaces +can minimize indirection. Read more

+

Assign a region of gates to an absolute row number. Read more

+

Gets the “root” of this assignment, bypassing the namespacing. Read more

+

Creates a new (sub)namespace and enters into it. Read more

+

Exits out of the existing namespace. Read more

+

Enters into a namespace.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/circuit/floor_planner/v1/struct.V1.html b/rustdoc/latest/halo2/circuit/floor_planner/v1/struct.V1.html new file mode 100644 index 00000000..ae88c66f --- /dev/null +++ b/rustdoc/latest/halo2/circuit/floor_planner/v1/struct.V1.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to ../../../../halo2/circuit/floor_planner/struct.V1.html...

+ + + \ No newline at end of file diff --git a/rustdoc/latest/halo2/circuit/floor_planner/v1/struct.V1Pass.html b/rustdoc/latest/halo2/circuit/floor_planner/v1/struct.V1Pass.html new file mode 100644 index 00000000..208c96ab --- /dev/null +++ b/rustdoc/latest/halo2/circuit/floor_planner/v1/struct.V1Pass.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to ../../../../halo2/circuit/floor_planner/struct.V1Pass.html...

+ + + \ No newline at end of file diff --git a/rustdoc/latest/halo2/circuit/index.html b/rustdoc/latest/halo2/circuit/index.html new file mode 100644 index 00000000..47dfbd66 --- /dev/null +++ b/rustdoc/latest/halo2/circuit/index.html @@ -0,0 +1,34 @@ +halo2::circuit - Rust + + + +

Module halo2::circuit[][src]

Expand description

Traits and structs for implementing circuit components.

+

Modules

+

Implementations of common circuit floor planners.

+

Implementations of common circuit layouters.

+

Structs

+

A pointer to a cell within a circuit.

+

This is a “namespaced” layouter which borrows a Layouter (pushing a namespace +context) and, when dropped, pops out of the namespace context.

+

A region of the circuit in which a Chip can assign cells.

+

Index of a region in a layouter

+

Starting row of a region in a layouter

+

A simple FloorPlanner that performs minimal optimizations.

+

Traits

+

A chip implements a set of instructions that can be used by gadgets.

+

A layout strategy within a circuit. The layouter is chip-agnostic and applies its +strategy to the context and config it is given.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/circuit/layouter/index.html b/rustdoc/latest/halo2/circuit/layouter/index.html new file mode 100644 index 00000000..0795f11b --- /dev/null +++ b/rustdoc/latest/halo2/circuit/layouter/index.html @@ -0,0 +1,24 @@ +halo2::circuit::layouter - Rust + + + +

Module halo2::circuit::layouter[][src]

Expand description

Implementations of common circuit layouters.

+

Structs

+

The shape of a region. For a region at a certain index, we track +the set of columns it uses as well as the number of rows it uses.

+

Traits

+

Helper trait for implementing a custom Layouter.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/circuit/layouter/sidebar-items.js b/rustdoc/latest/halo2/circuit/layouter/sidebar-items.js new file mode 100644 index 00000000..ce30755b --- /dev/null +++ b/rustdoc/latest/halo2/circuit/layouter/sidebar-items.js @@ -0,0 +1 @@ +initSidebarItems({"struct":[["RegionShape","The shape of a region. For a region at a certain index, we track the set of columns it uses as well as the number of rows it uses."]],"trait":[["RegionLayouter","Helper trait for implementing a custom `Layouter`."]]}); \ No newline at end of file diff --git a/rustdoc/latest/halo2/circuit/layouter/struct.RegionShape.html b/rustdoc/latest/halo2/circuit/layouter/struct.RegionShape.html new file mode 100644 index 00000000..267c5cbe --- /dev/null +++ b/rustdoc/latest/halo2/circuit/layouter/struct.RegionShape.html @@ -0,0 +1,101 @@ +RegionShape in halo2::circuit::layouter - Rust + + + +

Struct halo2::circuit::layouter::RegionShape[][src]

pub struct RegionShape { /* fields omitted */ }
Expand description

The shape of a region. For a region at a certain index, we track +the set of columns it uses as well as the number of rows it uses.

+

Implementations

Create a new RegionShape for a region at region_index.

+

Get the region_index of a RegionShape.

+

Get a reference to the set of columns used in a RegionShape.

+

Get the row_count of a RegionShape.

+

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Enables a selector at the given offset.

+

Assign an advice column value (witness)

+

Assign a fixed value

+

Constraint two cells to have the same value. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

+

Uses borrowed data to replace owned data, usually by cloning. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/circuit/layouter/trait.RegionLayouter.html b/rustdoc/latest/halo2/circuit/layouter/trait.RegionLayouter.html new file mode 100644 index 00000000..7f5133d8 --- /dev/null +++ b/rustdoc/latest/halo2/circuit/layouter/trait.RegionLayouter.html @@ -0,0 +1,54 @@ +RegionLayouter in halo2::circuit::layouter - Rust + + + +

Trait halo2::circuit::layouter::RegionLayouter[][src]

pub trait RegionLayouter<F: Field>: Debug {
+    fn enable_selector<'v>(
        &'v mut self,
        annotation: &'v (dyn Fn() -> String + 'v),
        selector: &Selector,
        offset: usize
    ) -> Result<(), Error>; +
fn assign_advice<'v>(
        &'v mut self,
        annotation: &'v (dyn Fn() -> String + 'v),
        column: Column<Advice>,
        offset: usize,
        to: &'v mut (dyn FnMut() -> Result<Assigned<F>, Error> + 'v)
    ) -> Result<Cell, Error>; +
fn assign_fixed<'v>(
        &'v mut self,
        annotation: &'v (dyn Fn() -> String + 'v),
        column: Column<Fixed>,
        offset: usize,
        to: &'v mut (dyn FnMut() -> Result<Assigned<F>, Error> + 'v)
    ) -> Result<Cell, Error>; +
fn constrain_equal(
        &mut self,
        permutation: &Permutation,
        left: Cell,
        right: Cell
    ) -> Result<(), Error>; +}
Expand description

Helper trait for implementing a custom Layouter.

+

This trait is used for implementing region assignments:

+ +
+impl<'a, F: FieldExt, C: Chip<F>, CS: Assignment<F> + 'a> Layouter<C> for MyLayouter<'a, C, CS> {
+    fn assign_region(
+        &mut self,
+        assignment: impl FnOnce(Region<'_, F, C>) -> Result<(), Error>,
+    ) -> Result<(), Error> {
+        let region_index = self.regions.len();
+        self.regions.push(self.current_gate);
+
+        let mut region = MyRegion::new(self, region_index);
+        {
+            let region: &mut dyn RegionLayouter<F> = &mut region;
+            assignment(region.into())?;
+        }
+        self.current_gate += region.row_count;
+
+        Ok(())
+    }
+}
+

TODO: It would be great if we could constrain the columns in these types to be +“logical” columns that are guaranteed to correspond to the chip (and have come from +Chip::Config).

+

Required methods

Enables a selector at the given offset.

+

Assign an advice column value (witness)

+

Assign a fixed value

+

Constraint two cells to have the same value.

+

Returns an error if either of the cells is not within the given permutation.

+

Trait Implementations

Performs the conversion.

+

Implementors

+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/circuit/sidebar-items.js b/rustdoc/latest/halo2/circuit/sidebar-items.js new file mode 100644 index 00000000..25600aaa --- /dev/null +++ b/rustdoc/latest/halo2/circuit/sidebar-items.js @@ -0,0 +1 @@ +initSidebarItems({"mod":[["floor_planner","Implementations of common circuit floor planners."],["layouter","Implementations of common circuit layouters."]],"struct":[["Cell","A pointer to a cell within a circuit."],["NamespacedLayouter","This is a “namespaced” layouter which borrows a `Layouter` (pushing a namespace context) and, when dropped, pops out of the namespace context."],["Region","A region of the circuit in which a [`Chip`] can assign cells."],["RegionIndex","Index of a region in a layouter"],["RegionStart","Starting row of a region in a layouter"],["SimpleFloorPlanner","A simple [`FloorPlanner`] that performs minimal optimizations."]],"trait":[["Chip","A chip implements a set of instructions that can be used by gadgets."],["Layouter","A layout strategy within a circuit. The layouter is chip-agnostic and applies its strategy to the context and config it is given."]]}); \ No newline at end of file diff --git a/rustdoc/latest/halo2/circuit/struct.Cell.html b/rustdoc/latest/halo2/circuit/struct.Cell.html new file mode 100644 index 00000000..b3c543a5 --- /dev/null +++ b/rustdoc/latest/halo2/circuit/struct.Cell.html @@ -0,0 +1,92 @@ +Cell in halo2::circuit - Rust + + + +

Struct halo2::circuit::Cell[][src]

pub struct Cell { /* fields omitted */ }
Expand description

A pointer to a cell within a circuit.

+

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

+

Uses borrowed data to replace owned data, usually by cloning. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/circuit/struct.NamespacedLayouter.html b/rustdoc/latest/halo2/circuit/struct.NamespacedLayouter.html new file mode 100644 index 00000000..ca870a2b --- /dev/null +++ b/rustdoc/latest/halo2/circuit/struct.NamespacedLayouter.html @@ -0,0 +1,95 @@ +NamespacedLayouter in halo2::circuit - Rust + + + +

Struct halo2::circuit::NamespacedLayouter[][src]

pub struct NamespacedLayouter<'a, F: Field, L: Layouter<F> + 'a>(_, _);
Expand description

This is a “namespaced” layouter which borrows a Layouter (pushing a namespace +context) and, when dropped, pops out of the namespace context.

+

Trait Implementations

Formats the value using the given formatter. Read more

+

Executes the destructor for this type. Read more

+

Represents the type of the “root” of this layouter, so that nested namespaces +can minimize indirection. Read more

+

Assign a region of gates to an absolute row number. Read more

+

Gets the “root” of this assignment, bypassing the namespacing. Read more

+

Creates a new (sub)namespace and enters into it. Read more

+

Exits out of the existing namespace. Read more

+

Enters into a namespace.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/circuit/struct.Region.html b/rustdoc/latest/halo2/circuit/struct.Region.html new file mode 100644 index 00000000..3c156bbf --- /dev/null +++ b/rustdoc/latest/halo2/circuit/struct.Region.html @@ -0,0 +1,100 @@ +Region in halo2::circuit - Rust + + + +

Struct halo2::circuit::Region[][src]

pub struct Region<'r, F: Field> { /* fields omitted */ }
Expand description

A region of the circuit in which a Chip can assign cells.

+

Inside a region, the chip may freely use relative offsets; the Layouter will +treat these assignments as a single “region” within the circuit.

+

The Layouter is allowed to optimise between regions as it sees fit. Chips must use +Region::constrain_equal to copy in variables assigned in other regions.

+

TODO: It would be great if we could constrain the columns in these types to be +“logical” columns that are guaranteed to correspond to the chip (and have come from +Chip::Config).

+

Implementations

Assign an advice column value (witness).

+

Even though to has FnMut bounds, it is guaranteed to be called at most once.

+

Assign a fixed value.

+

Even though to has FnMut bounds, it is guaranteed to be called at most once.

+

Constraint two cells to have the same value.

+

Returns an error if either of the cells is not within the given permutation.

+

Trait Implementations

Formats the value using the given formatter. Read more

+

Performs the conversion.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/circuit/struct.RegionIndex.html b/rustdoc/latest/halo2/circuit/struct.RegionIndex.html new file mode 100644 index 00000000..d797d157 --- /dev/null +++ b/rustdoc/latest/halo2/circuit/struct.RegionIndex.html @@ -0,0 +1,95 @@ +RegionIndex in halo2::circuit - Rust + + + +

Struct halo2::circuit::RegionIndex[][src]

pub struct RegionIndex(_);
Expand description

Index of a region in a layouter

+

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

The resulting type after dereferencing.

+

Dereferences the value.

+

Performs the conversion.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

+

Uses borrowed data to replace owned data, usually by cloning. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/circuit/struct.RegionStart.html b/rustdoc/latest/halo2/circuit/struct.RegionStart.html new file mode 100644 index 00000000..49c332ae --- /dev/null +++ b/rustdoc/latest/halo2/circuit/struct.RegionStart.html @@ -0,0 +1,98 @@ +RegionStart in halo2::circuit - Rust + + + +

Struct halo2::circuit::RegionStart[][src]

pub struct RegionStart(_);
Expand description

Starting row of a region in a layouter

+

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

The resulting type after dereferencing.

+

Dereferences the value.

+

Performs the conversion.

+

This method tests for self and other values to be equal, and is used +by ==. Read more

+

This method tests for !=.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

+

Uses borrowed data to replace owned data, usually by cloning. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/circuit/struct.SimpleFloorPlanner.html b/rustdoc/latest/halo2/circuit/struct.SimpleFloorPlanner.html new file mode 100644 index 00000000..cd8d8d9f --- /dev/null +++ b/rustdoc/latest/halo2/circuit/struct.SimpleFloorPlanner.html @@ -0,0 +1,90 @@ +SimpleFloorPlanner in halo2::circuit - Rust + + + +

Struct halo2::circuit::SimpleFloorPlanner[][src]

pub struct SimpleFloorPlanner;
Expand description

A simple FloorPlanner that performs minimal optimizations.

+

This floor planner is suitable for debugging circuits. It aims to reflect the circuit +“business logic” in the circuit layout as closely as possible. It uses a single-pass +layouter that does not reorder regions for optimal packing.

+

Trait Implementations

Formats the value using the given formatter. Read more

+

Given the provided cs, synthesize the given circuit. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/circuit/trait.Chip.html b/rustdoc/latest/halo2/circuit/trait.Chip.html new file mode 100644 index 00000000..4cfdd75e --- /dev/null +++ b/rustdoc/latest/halo2/circuit/trait.Chip.html @@ -0,0 +1,37 @@ +Chip in halo2::circuit - Rust + + + +

Trait halo2::circuit::Chip[][src]

pub trait Chip<F: FieldExt>: Sized {
+    type Config: Debug + Clone;
+    type Loaded: Debug + Clone;
+    fn config(&self) -> &Self::Config;
+
fn loaded(&self) -> &Self::Loaded; +}
Expand description

A chip implements a set of instructions that can be used by gadgets.

+

The chip stores state that is required at circuit synthesis time in +Chip::Config, which can be fetched via Chip::config.

+

The chip also loads any fixed configuration needed at synthesis time +using its own implementation of load, and stores it in Chip::Loaded. +This can be accessed via Chip::loaded.

+

Associated Types

A type that holds the configuration for this chip, and any other state it may need +during circuit synthesis, that can be derived during Circuit::configure.

+

A type that holds any general chip state that needs to be loaded at the start of +Circuit::synthesize. This might simply be () for some chips.

+

Required methods

The chip holds its own configuration.

+

Provides access to general chip state loaded at the beginning of circuit +synthesis.

+

Panics if called before Chip::load.

+

Implementors

+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/circuit/trait.Layouter.html b/rustdoc/latest/halo2/circuit/trait.Layouter.html new file mode 100644 index 00000000..23e6c69c --- /dev/null +++ b/rustdoc/latest/halo2/circuit/trait.Layouter.html @@ -0,0 +1,49 @@ +Layouter in halo2::circuit - Rust + + + +

Trait halo2::circuit::Layouter[][src]

pub trait Layouter<F: Field> {
+    type Root: Layouter<F>;
+    fn assign_region<A, AR, N, NR>(
        &mut self,
        name: N,
        assignment: A
    ) -> Result<AR, Error>
    where
        A: FnMut(Region<'_, F>) -> Result<AR, Error>,
        N: Fn() -> NR,
        NR: Into<String>
; +
fn get_root(&mut self) -> &mut Self::Root; +
fn push_namespace<NR, N>(&mut self, name_fn: N)
    where
        NR: Into<String>,
        N: FnOnce() -> NR
; +
fn pop_namespace(&mut self, gadget_name: Option<String>); + + fn namespace<NR, N>(
        &mut self,
        name_fn: N
    ) -> NamespacedLayouter<'_, F, Self::Root>
    where
        NR: Into<String>,
        N: FnOnce() -> NR
, + { ... } +}
Expand description

A layout strategy within a circuit. The layouter is chip-agnostic and applies its +strategy to the context and config it is given.

+

This abstracts over the circuit assignments, handling row indices etc.

+

Associated Types

Represents the type of the “root” of this layouter, so that nested namespaces +can minimize indirection.

+

Required methods

Assign a region of gates to an absolute row number.

+

Inside the closure, the chip may freely use relative offsets; the Layouter will +treat these assignments as a single “region” within the circuit. Outside this +closure, the Layouter is allowed to optimise as it sees fit.

+ +
+fn assign_region(&mut self, || "region name", |region| {
+    let config = chip.config();
+    region.assign_advice(config.a, offset, || { Some(value)});
+});
+

Gets the “root” of this assignment, bypassing the namespacing.

+

Not intended for downstream consumption; use Layouter::namespace instead.

+

Creates a new (sub)namespace and enters into it.

+

Not intended for downstream consumption; use Layouter::namespace instead.

+

Exits out of the existing namespace.

+

Not intended for downstream consumption; use Layouter::namespace instead.

+

Provided methods

Enters into a namespace.

+

Implementors

+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/dev/enum.VerifyFailure.html b/rustdoc/latest/halo2/dev/enum.VerifyFailure.html new file mode 100644 index 00000000..8183b5a1 --- /dev/null +++ b/rustdoc/latest/halo2/dev/enum.VerifyFailure.html @@ -0,0 +1,132 @@ +VerifyFailure in halo2::dev - Rust + + + +

Enum halo2::dev::VerifyFailure[][src]

pub enum VerifyFailure {
+    Cell {
+        gate: Gate,
+        region: Region,
+        column: Column<Any>,
+        offset: isize,
+    },
+    Constraint {
+        constraint: Constraint,
+        row: usize,
+    },
+    Lookup {
+        lookup_index: usize,
+        row: usize,
+    },
+    Permutation {
+        perm_index: usize,
+        column: usize,
+        row: usize,
+    },
+}
Expand description

The reasons why a particular circuit is not satisfied.

+

Variants

Cell

A cell used in an active gate was not assigned to.

+
Show fields

Fields of Cell

gate: Gate

The index of the active gate.

+
region: Region

The region in which this cell should be assigned.

+
column: Column<Any>

The column in which this cell should be assigned.

+
offset: isize

The offset (relative to the start of the region) at which this cell should be +assigned. This may be negative (for example, if a selector enables a gate at +offset 0, but the gate uses Rotation::prev()).

+
Constraint

A constraint was not satisfied for a particular row.

+
Show fields

Fields of Constraint

constraint: Constraint

The polynomial constraint that is not satisfied.

+
row: usize

The row on which this constraint is not satisfied.

+
Lookup

A lookup input did not exist in its corresponding table.

+
Show fields

Fields of Lookup

lookup_index: usize

The index of the lookup that is not satisfied. These indices are assigned in +the order in which ConstraintSystem::lookup is called during +Circuit::configure.

+
row: usize

The row on which this lookup is not satisfied.

+
Permutation

A permutation did not preserve the original value of a cell.

+
Show fields

Fields of Permutation

perm_index: usize

The index of the permutation that is not satisfied. These indices are assigned +in the order in which ConstraintSystem::lookup is called during +Circuit::configure.

+
column: usize

The column in which this permutation is not satisfied.

+
row: usize

The row on which this permutation is not satisfied.

+

Trait Implementations

Formats the value using the given formatter. Read more

+

Formats the value using the given formatter. Read more

+

This method tests for self and other values to be equal, and is used +by ==. Read more

+

This method tests for !=.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

Converts the given value to a String. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/dev/index.html b/rustdoc/latest/halo2/dev/index.html new file mode 100644 index 00000000..eb6e3fcf --- /dev/null +++ b/rustdoc/latest/halo2/dev/index.html @@ -0,0 +1,25 @@ +halo2::dev - Rust + + + +

Module halo2::dev[][src]

Expand description

Tools for developing circuits.

+

Modules

+

Metadata about circuits.

+

Structs

+

A test prover for debugging circuits.

+

Enums

+

The reasons why a particular circuit is not satisfied.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/dev/metadata/index.html b/rustdoc/latest/halo2/dev/metadata/index.html new file mode 100644 index 00000000..c8964f3f --- /dev/null +++ b/rustdoc/latest/halo2/dev/metadata/index.html @@ -0,0 +1,23 @@ +halo2::dev::metadata - Rust + + + +

Module halo2::dev::metadata[][src]

Expand description

Metadata about circuits.

+

Structs

+

Metadata about a configured constraint within a circuit.

+

Metadata about a configured gate within a circuit.

+

Metadata about an assigned region within a circuit.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/dev/metadata/sidebar-items.js b/rustdoc/latest/halo2/dev/metadata/sidebar-items.js new file mode 100644 index 00000000..01188025 --- /dev/null +++ b/rustdoc/latest/halo2/dev/metadata/sidebar-items.js @@ -0,0 +1 @@ +initSidebarItems({"struct":[["Constraint","Metadata about a configured constraint within a circuit."],["Gate","Metadata about a configured gate within a circuit."],["Region","Metadata about an assigned region within a circuit."]]}); \ No newline at end of file diff --git a/rustdoc/latest/halo2/dev/metadata/struct.Constraint.html b/rustdoc/latest/halo2/dev/metadata/struct.Constraint.html new file mode 100644 index 00000000..d5e9b961 --- /dev/null +++ b/rustdoc/latest/halo2/dev/metadata/struct.Constraint.html @@ -0,0 +1,92 @@ +Constraint in halo2::dev::metadata - Rust + + + +

Struct halo2::dev::metadata::Constraint[][src]

pub struct Constraint { /* fields omitted */ }
Expand description

Metadata about a configured constraint within a circuit.

+

Trait Implementations

Formats the value using the given formatter. Read more

+

Formats the value using the given formatter. Read more

+

Performs the conversion.

+

This method tests for self and other values to be equal, and is used +by ==. Read more

+

This method tests for !=.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

Converts the given value to a String. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/dev/metadata/struct.Gate.html b/rustdoc/latest/halo2/dev/metadata/struct.Gate.html new file mode 100644 index 00000000..bbff2316 --- /dev/null +++ b/rustdoc/latest/halo2/dev/metadata/struct.Gate.html @@ -0,0 +1,92 @@ +Gate in halo2::dev::metadata - Rust + + + +

Struct halo2::dev::metadata::Gate[][src]

pub struct Gate { /* fields omitted */ }
Expand description

Metadata about a configured gate within a circuit.

+

Trait Implementations

Formats the value using the given formatter. Read more

+

Formats the value using the given formatter. Read more

+

Performs the conversion.

+

This method tests for self and other values to be equal, and is used +by ==. Read more

+

This method tests for !=.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

Converts the given value to a String. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/dev/metadata/struct.Region.html b/rustdoc/latest/halo2/dev/metadata/struct.Region.html new file mode 100644 index 00000000..56232ad8 --- /dev/null +++ b/rustdoc/latest/halo2/dev/metadata/struct.Region.html @@ -0,0 +1,92 @@ +Region in halo2::dev::metadata - Rust + + + +

Struct halo2::dev::metadata::Region[][src]

pub struct Region { /* fields omitted */ }
Expand description

Metadata about an assigned region within a circuit.

+

Trait Implementations

Formats the value using the given formatter. Read more

+

Formats the value using the given formatter. Read more

+

Performs the conversion.

+

This method tests for self and other values to be equal, and is used +by ==. Read more

+

This method tests for !=.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

Converts the given value to a String. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/dev/sidebar-items.js b/rustdoc/latest/halo2/dev/sidebar-items.js new file mode 100644 index 00000000..096174e6 --- /dev/null +++ b/rustdoc/latest/halo2/dev/sidebar-items.js @@ -0,0 +1 @@ +initSidebarItems({"enum":[["VerifyFailure","The reasons why a particular circuit is not satisfied."]],"mod":[["metadata","Metadata about circuits."]],"struct":[["MockProver","A test prover for debugging circuits."]]}); \ No newline at end of file diff --git a/rustdoc/latest/halo2/dev/struct.MockProver.html b/rustdoc/latest/halo2/dev/struct.MockProver.html new file mode 100644 index 00000000..095b1b9d --- /dev/null +++ b/rustdoc/latest/halo2/dev/struct.MockProver.html @@ -0,0 +1,188 @@ +MockProver in halo2::dev - Rust + + + +

Struct halo2::dev::MockProver[][src]

pub struct MockProver<F: Group + Field> { /* fields omitted */ }
Expand description

A test prover for debugging circuits.

+

The normal proving process, when applied to a buggy circuit implementation, might +return proofs that do not validate when they should, but it can’t indicate anything +other than “something is invalid”. MockProver can be used to figure out why these +are invalid: it stores all the private inputs along with the circuit internals, and +then checks every constraint manually.

+

Examples

+
+use halo2::{
+    arithmetic::FieldExt,
+    circuit::{Layouter, SimpleFloorPlanner},
+    dev::{MockProver, VerifyFailure},
+    pasta::Fp,
+    plonk::{Advice, Circuit, Column, ConstraintSystem, Error},
+    poly::Rotation,
+};
+const K: u32 = 5;
+
+#[derive(Copy, Clone)]
+struct MyConfig {
+    a: Column<Advice>,
+    b: Column<Advice>,
+    c: Column<Advice>,
+}
+
+#[derive(Clone, Default)]
+struct MyCircuit {
+    a: Option<u64>,
+    b: Option<u64>,
+}
+
+impl<F: FieldExt> Circuit<F> for MyCircuit {
+    type Config = MyConfig;
+    type FloorPlanner = SimpleFloorPlanner;
+
+    fn without_witnesses(&self) -> Self {
+        Self::default()
+    }
+
+    fn configure(meta: &mut ConstraintSystem<F>) -> MyConfig {
+        let a = meta.advice_column();
+        let b = meta.advice_column();
+        let c = meta.advice_column();
+
+        meta.create_gate("R1CS constraint", |meta| {
+            let a = meta.query_advice(a, Rotation::cur());
+            let b = meta.query_advice(b, Rotation::cur());
+            let c = meta.query_advice(c, Rotation::cur());
+
+            // BUG: Should be a * b - c
+            Some(("buggy R1CS", a * b + c))
+        });
+
+        MyConfig { a, b, c }
+    }
+
+    fn synthesize(&self, config: MyConfig, mut layouter: impl Layouter<F>) -> Result<(), Error> {
+        layouter.assign_region(|| "Example region", |mut region| {
+            region.assign_advice(|| "a", config.a, 0, || {
+                self.a.map(|v| F::from_u64(v)).ok_or(Error::SynthesisError)
+            })?;
+            region.assign_advice(|| "b", config.b, 0, || {
+                self.b.map(|v| F::from_u64(v)).ok_or(Error::SynthesisError)
+            })?;
+            region.assign_advice(|| "c", config.c, 0, || {
+                self.a
+                    .and_then(|a| self.b.map(|b| F::from_u64(a * b)))
+                    .ok_or(Error::SynthesisError)
+            })?;
+            Ok(())
+        })
+    }
+}
+
+// Assemble the private inputs to the circuit.
+let circuit = MyCircuit {
+    a: Some(2),
+    b: Some(4),
+};
+
+// This circuit has no public inputs.
+let instance = vec![];
+
+let prover = MockProver::<Fp>::run(K, &circuit, instance).unwrap();
+assert_eq!(
+    prover.verify(),
+    Err(vec![VerifyFailure::Constraint {
+        constraint: ((0, "R1CS constraint").into(), 0, "buggy R1CS").into(),
+        row: 0
+    }])
+);
+

Implementations

Runs a synthetic keygen-and-prove operation on the given circuit, collecting data +about the constraints and their assignments.

+

Returns Ok(()) if this MockProver is satisfied, or a list of errors indicating +the reasons that the circuit is not satisfied.

+

Trait Implementations

Creates a new region and enters into it. Read more

+

Exits the current region. Read more

+

Enables a selector at the given row.

+

Assign an advice column value (witness)

+

Assign a fixed value

+

Assign two cells to have the same value

+

Creates a new (sub)namespace and enters into it. Read more

+

Exits out of the existing namespace. Read more

+

Formats the value using the given formatter. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/index.html b/rustdoc/latest/halo2/index.html new file mode 100644 index 00000000..56108688 --- /dev/null +++ b/rustdoc/latest/halo2/index.html @@ -0,0 +1,32 @@ +halo2 - Rust + + + +

Crate halo2[][src]

Expand description

Re-exports

+
pub use pasta_curves as pasta;

Modules

+

This module provides common utilities, traits and structures for group, +field and polynomial arithmetic.

+

Traits and structs for implementing circuit components.

+

Tools for developing circuits.

+

This module provides an implementation of a variant of (Turbo)PLONK +that is designed specifically for the polynomial commitment scheme described +in the Halo paper.

+

Contains utilities for performing arithmetic over univariate polynomials in +various forms, including computing commitments to them and provably opening +the committed polynomials at arbitrary points.

+

This module contains utilities and traits for dealing with Fiat-Shamir +transcripts.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/plonk/circuit/enum.Any.html b/rustdoc/latest/halo2/plonk/circuit/enum.Any.html new file mode 100644 index 00000000..d952dad7 --- /dev/null +++ b/rustdoc/latest/halo2/plonk/circuit/enum.Any.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to ../../../halo2/plonk/enum.Any.html...

+ + + \ No newline at end of file diff --git a/rustdoc/latest/halo2/plonk/circuit/enum.Assigned.html b/rustdoc/latest/halo2/plonk/circuit/enum.Assigned.html new file mode 100644 index 00000000..443e147c --- /dev/null +++ b/rustdoc/latest/halo2/plonk/circuit/enum.Assigned.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to ../../../halo2/plonk/enum.Assigned.html...

+ + + \ No newline at end of file diff --git a/rustdoc/latest/halo2/plonk/circuit/enum.Expression.html b/rustdoc/latest/halo2/plonk/circuit/enum.Expression.html new file mode 100644 index 00000000..b2f5989f --- /dev/null +++ b/rustdoc/latest/halo2/plonk/circuit/enum.Expression.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to ../../../halo2/plonk/enum.Expression.html...

+ + + \ No newline at end of file diff --git a/rustdoc/latest/halo2/plonk/circuit/struct.Advice.html b/rustdoc/latest/halo2/plonk/circuit/struct.Advice.html new file mode 100644 index 00000000..83dc59b4 --- /dev/null +++ b/rustdoc/latest/halo2/plonk/circuit/struct.Advice.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to ../../../halo2/plonk/struct.Advice.html...

+ + + \ No newline at end of file diff --git a/rustdoc/latest/halo2/plonk/circuit/struct.Column.html b/rustdoc/latest/halo2/plonk/circuit/struct.Column.html new file mode 100644 index 00000000..f06325ea --- /dev/null +++ b/rustdoc/latest/halo2/plonk/circuit/struct.Column.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to ../../../halo2/plonk/struct.Column.html...

+ + + \ No newline at end of file diff --git a/rustdoc/latest/halo2/plonk/circuit/struct.Constraint.html b/rustdoc/latest/halo2/plonk/circuit/struct.Constraint.html new file mode 100644 index 00000000..7fc23934 --- /dev/null +++ b/rustdoc/latest/halo2/plonk/circuit/struct.Constraint.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to ../../../halo2/plonk/struct.Constraint.html...

+ + + \ No newline at end of file diff --git a/rustdoc/latest/halo2/plonk/circuit/struct.ConstraintSystem.html b/rustdoc/latest/halo2/plonk/circuit/struct.ConstraintSystem.html new file mode 100644 index 00000000..8e0f44fa --- /dev/null +++ b/rustdoc/latest/halo2/plonk/circuit/struct.ConstraintSystem.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to ../../../halo2/plonk/struct.ConstraintSystem.html...

+ + + \ No newline at end of file diff --git a/rustdoc/latest/halo2/plonk/circuit/struct.Fixed.html b/rustdoc/latest/halo2/plonk/circuit/struct.Fixed.html new file mode 100644 index 00000000..dd063ce0 --- /dev/null +++ b/rustdoc/latest/halo2/plonk/circuit/struct.Fixed.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to ../../../halo2/plonk/struct.Fixed.html...

+ + + \ No newline at end of file diff --git a/rustdoc/latest/halo2/plonk/circuit/struct.Instance.html b/rustdoc/latest/halo2/plonk/circuit/struct.Instance.html new file mode 100644 index 00000000..e4140f4b --- /dev/null +++ b/rustdoc/latest/halo2/plonk/circuit/struct.Instance.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to ../../../halo2/plonk/struct.Instance.html...

+ + + \ No newline at end of file diff --git a/rustdoc/latest/halo2/plonk/circuit/struct.Permutation.html b/rustdoc/latest/halo2/plonk/circuit/struct.Permutation.html new file mode 100644 index 00000000..a8b66898 --- /dev/null +++ b/rustdoc/latest/halo2/plonk/circuit/struct.Permutation.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to ../../../halo2/plonk/struct.Permutation.html...

+ + + \ No newline at end of file diff --git a/rustdoc/latest/halo2/plonk/circuit/struct.PinnedConstraintSystem.html b/rustdoc/latest/halo2/plonk/circuit/struct.PinnedConstraintSystem.html new file mode 100644 index 00000000..dc18e511 --- /dev/null +++ b/rustdoc/latest/halo2/plonk/circuit/struct.PinnedConstraintSystem.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to ../../../halo2/plonk/struct.PinnedConstraintSystem.html...

+ + + \ No newline at end of file diff --git a/rustdoc/latest/halo2/plonk/circuit/struct.Selector.html b/rustdoc/latest/halo2/plonk/circuit/struct.Selector.html new file mode 100644 index 00000000..3f1b8a4e --- /dev/null +++ b/rustdoc/latest/halo2/plonk/circuit/struct.Selector.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to ../../../halo2/plonk/struct.Selector.html...

+ + + \ No newline at end of file diff --git a/rustdoc/latest/halo2/plonk/circuit/struct.VirtualCells.html b/rustdoc/latest/halo2/plonk/circuit/struct.VirtualCells.html new file mode 100644 index 00000000..ed43edf9 --- /dev/null +++ b/rustdoc/latest/halo2/plonk/circuit/struct.VirtualCells.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to ../../../halo2/plonk/struct.VirtualCells.html...

+ + + \ No newline at end of file diff --git a/rustdoc/latest/halo2/plonk/circuit/trait.Assignment.html b/rustdoc/latest/halo2/plonk/circuit/trait.Assignment.html new file mode 100644 index 00000000..3b071b44 --- /dev/null +++ b/rustdoc/latest/halo2/plonk/circuit/trait.Assignment.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to ../../../halo2/plonk/trait.Assignment.html...

+ + + \ No newline at end of file diff --git a/rustdoc/latest/halo2/plonk/circuit/trait.Circuit.html b/rustdoc/latest/halo2/plonk/circuit/trait.Circuit.html new file mode 100644 index 00000000..476ae5fa --- /dev/null +++ b/rustdoc/latest/halo2/plonk/circuit/trait.Circuit.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to ../../../halo2/plonk/trait.Circuit.html...

+ + + \ No newline at end of file diff --git a/rustdoc/latest/halo2/plonk/circuit/trait.ColumnType.html b/rustdoc/latest/halo2/plonk/circuit/trait.ColumnType.html new file mode 100644 index 00000000..2a15f8b5 --- /dev/null +++ b/rustdoc/latest/halo2/plonk/circuit/trait.ColumnType.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to ../../../halo2/plonk/trait.ColumnType.html...

+ + + \ No newline at end of file diff --git a/rustdoc/latest/halo2/plonk/circuit/trait.FloorPlanner.html b/rustdoc/latest/halo2/plonk/circuit/trait.FloorPlanner.html new file mode 100644 index 00000000..a291db85 --- /dev/null +++ b/rustdoc/latest/halo2/plonk/circuit/trait.FloorPlanner.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to ../../../halo2/plonk/trait.FloorPlanner.html...

+ + + \ No newline at end of file diff --git a/rustdoc/latest/halo2/plonk/enum.Any.html b/rustdoc/latest/halo2/plonk/enum.Any.html new file mode 100644 index 00000000..0a64cb95 --- /dev/null +++ b/rustdoc/latest/halo2/plonk/enum.Any.html @@ -0,0 +1,107 @@ +Any in halo2::plonk - Rust + + + +

Enum halo2::plonk::Any[][src]

pub enum Any {
+    Advice,
+    Fixed,
+    Instance,
+}
Expand description

An enum over the Advice, Fixed, Instance structs

+

Variants

Advice

An Advice variant

+
Fixed

A Fixed variant

+
Instance

An Instance variant

+

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Performs the conversion.

+

Feeds this value into the given Hasher. Read more

+

Feeds a slice of this type into the given Hasher. Read more

+

This method tests for self and other values to be equal, and is used +by ==. Read more

+

This method tests for !=.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

+

Uses borrowed data to replace owned data, usually by cloning. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/plonk/enum.Assigned.html b/rustdoc/latest/halo2/plonk/enum.Assigned.html new file mode 100644 index 00000000..5d69f192 --- /dev/null +++ b/rustdoc/latest/halo2/plonk/enum.Assigned.html @@ -0,0 +1,123 @@ +Assigned in halo2::plonk - Rust + + + +

Enum halo2::plonk::Assigned[][src]

pub enum Assigned<F> {
+    Zero,
+    Trivial(F),
+    Rational(F, F),
+}
Expand description

A value assigned to a cell within a circuit.

+

Stored as a fraction, so the backend can use batch inversion.

+

A denominator of zero maps to an assigned value of zero.

+

Variants

Zero

The field element zero.

+
Trivial(F)

A value that does not require inversion to evaluate.

+
Rational(F, F)

A value stored as a fraction to enable batch inversion.

+

Implementations

Returns the numerator.

+

Returns the denominator, if non-trivial.

+

Inverts this assigned value.

+

Evaluates this assigned value directly, performing an unbatched inversion if +necessary.

+

If the denominator is zero, this returns zero.

+

Trait Implementations

The resulting type after applying the + operator.

+

Performs the + operation. Read more

+

The resulting type after applying the + operator.

+

Performs the + operation. Read more

+

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Performs the conversion.

+

Performs the conversion.

+

The resulting type after applying the * operator.

+

Performs the * operation. Read more

+

The resulting type after applying the * operator.

+

Performs the * operation. Read more

+

The resulting type after applying the - operator.

+

Performs the unary - operation. Read more

+

The resulting type after applying the - operator.

+

Performs the - operation. Read more

+

The resulting type after applying the - operator.

+

Performs the - operation. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

+

Uses borrowed data to replace owned data, usually by cloning. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/plonk/enum.Error.html b/rustdoc/latest/halo2/plonk/enum.Error.html new file mode 100644 index 00000000..777ac02d --- /dev/null +++ b/rustdoc/latest/halo2/plonk/enum.Error.html @@ -0,0 +1,101 @@ +Error in halo2::plonk - Rust + + + +

Enum halo2::plonk::Error[][src]

pub enum Error {
+    SynthesisError,
+    IncompatibleParams,
+    ConstraintSystemFailure,
+    BoundsFailure,
+    OpeningError,
+    TranscriptError,
+}
Expand description

This is an error that could occur during proving or circuit synthesis.

+

Variants

SynthesisError

This is an error that can occur during synthesis of the circuit, for +example, when the witness is not present.

+
IncompatibleParams

The structured reference string or the parameters are not compatible +with the circuit being synthesized.

+
ConstraintSystemFailure

The constraint system is not satisfied.

+
BoundsFailure

Out of bounds index passed to a backend

+
OpeningError

Opening error

+
TranscriptError

Transcript error

+

Trait Implementations

Formats the value using the given formatter. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/plonk/enum.Expression.html b/rustdoc/latest/halo2/plonk/enum.Expression.html new file mode 100644 index 00000000..0f1db692 --- /dev/null +++ b/rustdoc/latest/halo2/plonk/enum.Expression.html @@ -0,0 +1,123 @@ +Expression in halo2::plonk - Rust + + + +

Enum halo2::plonk::Expression[][src]

pub enum Expression<F> {
+    Constant(F),
+    Fixed(usize),
+    Advice(usize),
+    Instance(usize),
+    Sum(Box<Expression<F>>, Box<Expression<F>>),
+    Product(Box<Expression<F>>, Box<Expression<F>>),
+    Scaled(Box<Expression<F>>, F),
+}
Expand description

Low-degree expression representing an identity that must hold over the committed columns.

+

Variants

Constant(F)

This is a constant polynomial

+
Fixed(usize)

This is a fixed column queried at a certain relative location

+
Advice(usize)

This is an advice (witness) column queried at a certain relative location

+
Instance(usize)

This is an instance (external) column queried at a certain relative location

+
Sum(Box<Expression<F>>, Box<Expression<F>>)

This is the sum of two polynomials

+
Product(Box<Expression<F>>, Box<Expression<F>>)

This is the product of two polynomials

+
Scaled(Box<Expression<F>>, F)

This is a scaled polynomial

+

Implementations

Evaluate the polynomial using the provided closures to perform the +operations.

+

Compute the degree of this polynomial

+

Square this expression.

+

Trait Implementations

The resulting type after applying the + operator.

+

Performs the + operation. Read more

+

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Performs the conversion.

+

Performs the conversion.

+

The resulting type after applying the * operator.

+

Performs the * operation. Read more

+

The resulting type after applying the * operator.

+

Performs the * operation. Read more

+

The resulting type after applying the - operator.

+

Performs the unary - operation. Read more

+

The resulting type after applying the - operator.

+

Performs the - operation. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

+

Uses borrowed data to replace owned data, usually by cloning. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/plonk/fn.create_proof.html b/rustdoc/latest/halo2/plonk/fn.create_proof.html new file mode 100644 index 00000000..1aa1b3b9 --- /dev/null +++ b/rustdoc/latest/halo2/plonk/fn.create_proof.html @@ -0,0 +1,21 @@ +create_proof in halo2::plonk - Rust + + + +

Function halo2::plonk::create_proof[][src]

pub fn create_proof<C: CurveAffine, E: EncodedChallenge<C>, T: TranscriptWrite<C, E>, ConcreteCircuit: Circuit<C::Scalar>>(
    params: &Params<C>,
    pk: &ProvingKey<C>,
    circuits: &[ConcreteCircuit],
    instances: &[&[Polynomial<C::Scalar, LagrangeCoeff>]],
    transcript: &mut T
) -> Result<(), Error>
Expand description

This creates a proof for the provided circuit when given the public +parameters params and the proving key ProvingKey that was +generated previously for the same circuit.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/plonk/fn.keygen_pk.html b/rustdoc/latest/halo2/plonk/fn.keygen_pk.html new file mode 100644 index 00000000..91a5cbed --- /dev/null +++ b/rustdoc/latest/halo2/plonk/fn.keygen_pk.html @@ -0,0 +1,19 @@ +keygen_pk in halo2::plonk - Rust + + + +

Function halo2::plonk::keygen_pk[][src]

pub fn keygen_pk<C, ConcreteCircuit>(
    params: &Params<C>,
    vk: VerifyingKey<C>,
    circuit: &ConcreteCircuit
) -> Result<ProvingKey<C>, Error> where
    C: CurveAffine,
    ConcreteCircuit: Circuit<C::Scalar>, 
Expand description

Generate a ProvingKey from a VerifyingKey and an instance of Circuit.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/plonk/fn.keygen_vk.html b/rustdoc/latest/halo2/plonk/fn.keygen_vk.html new file mode 100644 index 00000000..26303fa5 --- /dev/null +++ b/rustdoc/latest/halo2/plonk/fn.keygen_vk.html @@ -0,0 +1,19 @@ +keygen_vk in halo2::plonk - Rust + + + +

Function halo2::plonk::keygen_vk[][src]

pub fn keygen_vk<C, ConcreteCircuit>(
    params: &Params<C>,
    circuit: &ConcreteCircuit
) -> Result<VerifyingKey<C>, Error> where
    C: CurveAffine,
    ConcreteCircuit: Circuit<C::Scalar>, 
Expand description

Generate a VerifyingKey from an instance of Circuit.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/plonk/fn.verify_proof.html b/rustdoc/latest/halo2/plonk/fn.verify_proof.html new file mode 100644 index 00000000..a1b5f9db --- /dev/null +++ b/rustdoc/latest/halo2/plonk/fn.verify_proof.html @@ -0,0 +1,19 @@ +verify_proof in halo2::plonk - Rust + + + +

Function halo2::plonk::verify_proof[][src]

pub fn verify_proof<'a, C: CurveAffine, E: EncodedChallenge<C>, T: TranscriptRead<C, E>>(
    params: &'a Params<C>,
    vk: &VerifyingKey<C>,
    msm: MSM<'a, C>,
    instance_commitments: &[&[C]],
    transcript: &mut T
) -> Result<Guard<'a, C, E>, Error>
Expand description

Returns a boolean indicating whether or not the proof is valid

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/plonk/index.html b/rustdoc/latest/halo2/plonk/index.html new file mode 100644 index 00000000..04a2fcc1 --- /dev/null +++ b/rustdoc/latest/halo2/plonk/index.html @@ -0,0 +1,60 @@ +halo2::plonk - Rust + + + +

Module halo2::plonk[][src]

Expand description

This module provides an implementation of a variant of (Turbo)PLONK +that is designed specifically for the polynomial commitment scheme described +in the Halo paper.

+

Structs

+

An advice column

+

A column with an index and type

+

An individual polynomial constraint.

+

This is a description of the circuit environment, such as the gate, column and +permutation arrangements.

+

A fixed column

+

An instance column

+

A permutation.

+

Represents the minimal parameters that determine a ConstraintSystem.

+

Minimal representation of a verification key that can be used to identify +its active contents.

+

This is a proving key which allows for the creation of proofs for a +particular circuit.

+

A selector, representing a fixed boolean value per row of the circuit.

+

This is a verifying key which allows for the verification of proofs for a +particular circuit.

+

Exposes the “virtual cells” that can be queried while creating a custom gate or lookup +table.

+

Enums

+

An enum over the Advice, Fixed, Instance structs

+

A value assigned to a cell within a circuit.

+

This is an error that could occur during proving or circuit synthesis.

+

Low-degree expression representing an identity that must hold over the committed columns.

+

Traits

+

This trait allows a Circuit to direct some backend to assign a witness +for a constraint system.

+

This is a trait that circuits provide implementations for so that the +backend prover can ask the circuit to synthesize using some given +ConstraintSystem implementation.

+

A column type

+

A floor planning strategy for a circuit.

+

Functions

+

This creates a proof for the provided circuit when given the public +parameters params and the proving key ProvingKey that was +generated previously for the same circuit.

+

Generate a ProvingKey from a VerifyingKey and an instance of Circuit.

+

Generate a VerifyingKey from an instance of Circuit.

+

Returns a boolean indicating whether or not the proof is valid

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/plonk/keygen/fn.keygen_pk.html b/rustdoc/latest/halo2/plonk/keygen/fn.keygen_pk.html new file mode 100644 index 00000000..1fa3c4bf --- /dev/null +++ b/rustdoc/latest/halo2/plonk/keygen/fn.keygen_pk.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to ../../../halo2/plonk/fn.keygen_pk.html...

+ + + \ No newline at end of file diff --git a/rustdoc/latest/halo2/plonk/keygen/fn.keygen_vk.html b/rustdoc/latest/halo2/plonk/keygen/fn.keygen_vk.html new file mode 100644 index 00000000..0b5cea3e --- /dev/null +++ b/rustdoc/latest/halo2/plonk/keygen/fn.keygen_vk.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to ../../../halo2/plonk/fn.keygen_vk.html...

+ + + \ No newline at end of file diff --git a/rustdoc/latest/halo2/plonk/prover/fn.create_proof.html b/rustdoc/latest/halo2/plonk/prover/fn.create_proof.html new file mode 100644 index 00000000..1fed9860 --- /dev/null +++ b/rustdoc/latest/halo2/plonk/prover/fn.create_proof.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to ../../../halo2/plonk/fn.create_proof.html...

+ + + \ No newline at end of file diff --git a/rustdoc/latest/halo2/plonk/sidebar-items.js b/rustdoc/latest/halo2/plonk/sidebar-items.js new file mode 100644 index 00000000..81d67f73 --- /dev/null +++ b/rustdoc/latest/halo2/plonk/sidebar-items.js @@ -0,0 +1 @@ +initSidebarItems({"enum":[["Any","An enum over the Advice, Fixed, Instance structs"],["Assigned","A value assigned to a cell within a circuit."],["Error","This is an error that could occur during proving or circuit synthesis."],["Expression","Low-degree expression representing an identity that must hold over the committed columns."]],"fn":[["create_proof","This creates a proof for the provided `circuit` when given the public parameters `params` and the proving key [`ProvingKey`] that was generated previously for the same circuit."],["keygen_pk","Generate a `ProvingKey` from a `VerifyingKey` and an instance of `Circuit`."],["keygen_vk","Generate a `VerifyingKey` from an instance of `Circuit`."],["verify_proof","Returns a boolean indicating whether or not the proof is valid"]],"struct":[["Advice","An advice column"],["Column","A column with an index and type"],["Constraint","An individual polynomial constraint."],["ConstraintSystem","This is a description of the circuit environment, such as the gate, column and permutation arrangements."],["Fixed","A fixed column"],["Instance","An instance column"],["Permutation","A permutation."],["PinnedConstraintSystem","Represents the minimal parameters that determine a `ConstraintSystem`."],["PinnedVerificationKey","Minimal representation of a verification key that can be used to identify its active contents."],["ProvingKey","This is a proving key which allows for the creation of proofs for a particular circuit."],["Selector","A selector, representing a fixed boolean value per row of the circuit."],["VerifyingKey","This is a verifying key which allows for the verification of proofs for a particular circuit."],["VirtualCells","Exposes the “virtual cells” that can be queried while creating a custom gate or lookup table."]],"trait":[["Assignment","This trait allows a [`Circuit`] to direct some backend to assign a witness for a constraint system."],["Circuit","This is a trait that circuits provide implementations for so that the backend prover can ask the circuit to synthesize using some given [`ConstraintSystem`] implementation."],["ColumnType","A column type"],["FloorPlanner","A floor planning strategy for a circuit."]]}); \ No newline at end of file diff --git a/rustdoc/latest/halo2/plonk/struct.Advice.html b/rustdoc/latest/halo2/plonk/struct.Advice.html new file mode 100644 index 00000000..4a6c2112 --- /dev/null +++ b/rustdoc/latest/halo2/plonk/struct.Advice.html @@ -0,0 +1,98 @@ +Advice in halo2::plonk - Rust + + + +

Struct halo2::plonk::Advice[][src]

pub struct Advice;
Expand description

An advice column

+

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Performs the conversion.

+

Feeds this value into the given Hasher. Read more

+

Feeds a slice of this type into the given Hasher. Read more

+

This method tests for self and other values to be equal, and is used +by ==. Read more

+

This method tests for !=.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

+

Uses borrowed data to replace owned data, usually by cloning. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/plonk/struct.Column.html b/rustdoc/latest/halo2/plonk/struct.Column.html new file mode 100644 index 00000000..86fb7a2e --- /dev/null +++ b/rustdoc/latest/halo2/plonk/struct.Column.html @@ -0,0 +1,117 @@ +Column in halo2::plonk - Rust + + + +

Struct halo2::plonk::Column[][src]

pub struct Column<C: ColumnType> { /* fields omitted */ }
Expand description

A column with an index and type

+

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Performs the conversion.

+

Feeds this value into the given Hasher. Read more

+

Feeds a slice of this type into the given Hasher. Read more

+

This method returns an Ordering between self and other. Read more

+

Compares and returns the maximum of two values. Read more

+

Compares and returns the minimum of two values. Read more

+

Restrict a value to a certain interval. Read more

+

This method tests for self and other values to be equal, and is used +by ==. Read more

+

This method tests for !=.

+

This method returns an ordering between self and other values if one exists. Read more

+

This method tests less than (for self and other) and is used by the < operator. Read more

+

This method tests less than or equal to (for self and other) and is used by the <= +operator. Read more

+

This method tests greater than (for self and other) and is used by the > operator. Read more

+

This method tests greater than or equal to (for self and other) and is used by the >= +operator. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

+

Uses borrowed data to replace owned data, usually by cloning. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/plonk/struct.Constraint.html b/rustdoc/latest/halo2/plonk/struct.Constraint.html new file mode 100644 index 00000000..9597b9fc --- /dev/null +++ b/rustdoc/latest/halo2/plonk/struct.Constraint.html @@ -0,0 +1,89 @@ +Constraint in halo2::plonk - Rust + + + +

Struct halo2::plonk::Constraint[][src]

pub struct Constraint<F: Field> { /* fields omitted */ }
Expand description

An individual polynomial constraint.

+

These are returned by the closures passed to ConstraintSystem::create_gate.

+

Trait Implementations

Formats the value using the given formatter. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/plonk/struct.ConstraintSystem.html b/rustdoc/latest/halo2/plonk/struct.ConstraintSystem.html new file mode 100644 index 00000000..8ed5286f --- /dev/null +++ b/rustdoc/latest/halo2/plonk/struct.ConstraintSystem.html @@ -0,0 +1,111 @@ +ConstraintSystem in halo2::plonk - Rust + + + +

Struct halo2::plonk::ConstraintSystem[][src]

pub struct ConstraintSystem<F: Field> { /* fields omitted */ }
Expand description

This is a description of the circuit environment, such as the gate, column and +permutation arrangements.

+

Implementations

Obtain a pinned version of this constraint system; a structure with the +minimal parameters needed to determine the rest of the constraint +system.

+

Add a permutation argument for some columns

+

Add a lookup argument for some input expressions and table expressions.

+

table_map returns a map between input expressions and the table expressions +they need to match.

+

Creates a new gate.

+

Panics

+

A gate is required to contain polynomial constraints. This method will panic if +constraints returns an empty iterator.

+

Allocate a new selector.

+

Allocate a new fixed column

+

Allocate a new advice column

+

Allocate a new instance column

+

Compute the degree of the constraint system (the maximum degree of all +constraints).

+

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Returns the “default value” for a type. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

+

Uses borrowed data to replace owned data, usually by cloning. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/plonk/struct.Fixed.html b/rustdoc/latest/halo2/plonk/struct.Fixed.html new file mode 100644 index 00000000..1e941198 --- /dev/null +++ b/rustdoc/latest/halo2/plonk/struct.Fixed.html @@ -0,0 +1,98 @@ +Fixed in halo2::plonk - Rust + + + +

Struct halo2::plonk::Fixed[][src]

pub struct Fixed;
Expand description

A fixed column

+

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Performs the conversion.

+

Feeds this value into the given Hasher. Read more

+

Feeds a slice of this type into the given Hasher. Read more

+

This method tests for self and other values to be equal, and is used +by ==. Read more

+

This method tests for !=.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

+

Uses borrowed data to replace owned data, usually by cloning. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/plonk/struct.Instance.html b/rustdoc/latest/halo2/plonk/struct.Instance.html new file mode 100644 index 00000000..c2baf1e3 --- /dev/null +++ b/rustdoc/latest/halo2/plonk/struct.Instance.html @@ -0,0 +1,98 @@ +Instance in halo2::plonk - Rust + + + +

Struct halo2::plonk::Instance[][src]

pub struct Instance;
Expand description

An instance column

+

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Performs the conversion.

+

Feeds this value into the given Hasher. Read more

+

Feeds a slice of this type into the given Hasher. Read more

+

This method tests for self and other values to be equal, and is used +by ==. Read more

+

This method tests for !=.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

+

Uses borrowed data to replace owned data, usually by cloning. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/plonk/struct.Permutation.html b/rustdoc/latest/halo2/plonk/struct.Permutation.html new file mode 100644 index 00000000..46142b08 --- /dev/null +++ b/rustdoc/latest/halo2/plonk/struct.Permutation.html @@ -0,0 +1,98 @@ +Permutation in halo2::plonk - Rust + + + +

Struct halo2::plonk::Permutation[][src]

pub struct Permutation { /* fields omitted */ }
Expand description

A permutation.

+

Implementations

Configures a new permutation for the given columns.

+

Returns index of permutation

+

Returns mapping of permutation

+

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

This method tests for self and other values to be equal, and is used +by ==. Read more

+

This method tests for !=.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

+

Uses borrowed data to replace owned data, usually by cloning. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/plonk/struct.PinnedConstraintSystem.html b/rustdoc/latest/halo2/plonk/struct.PinnedConstraintSystem.html new file mode 100644 index 00000000..4d886c29 --- /dev/null +++ b/rustdoc/latest/halo2/plonk/struct.PinnedConstraintSystem.html @@ -0,0 +1,86 @@ +PinnedConstraintSystem in halo2::plonk - Rust + + + +

Struct halo2::plonk::PinnedConstraintSystem[][src]

pub struct PinnedConstraintSystem<'a, F: Field> { /* fields omitted */ }
Expand description

Represents the minimal parameters that determine a ConstraintSystem.

+

Trait Implementations

Formats the value using the given formatter. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/plonk/struct.PinnedVerificationKey.html b/rustdoc/latest/halo2/plonk/struct.PinnedVerificationKey.html new file mode 100644 index 00000000..be1d8ad2 --- /dev/null +++ b/rustdoc/latest/halo2/plonk/struct.PinnedVerificationKey.html @@ -0,0 +1,87 @@ +PinnedVerificationKey in halo2::plonk - Rust + + + +

Struct halo2::plonk::PinnedVerificationKey[][src]

pub struct PinnedVerificationKey<'a, C: CurveAffine> { /* fields omitted */ }
Expand description

Minimal representation of a verification key that can be used to identify +its active contents.

+

Trait Implementations

Formats the value using the given formatter. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/plonk/struct.ProvingKey.html b/rustdoc/latest/halo2/plonk/struct.ProvingKey.html new file mode 100644 index 00000000..42ffca21 --- /dev/null +++ b/rustdoc/latest/halo2/plonk/struct.ProvingKey.html @@ -0,0 +1,88 @@ +ProvingKey in halo2::plonk - Rust + + + +

Struct halo2::plonk::ProvingKey[][src]

pub struct ProvingKey<C: CurveAffine> { /* fields omitted */ }
Expand description

This is a proving key which allows for the creation of proofs for a +particular circuit.

+

Implementations

Get the underlying VerifyingKey.

+

Trait Implementations

Formats the value using the given formatter. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/plonk/struct.Selector.html b/rustdoc/latest/halo2/plonk/struct.Selector.html new file mode 100644 index 00000000..b01be373 --- /dev/null +++ b/rustdoc/latest/halo2/plonk/struct.Selector.html @@ -0,0 +1,137 @@ +Selector in halo2::plonk - Rust + + + +

Struct halo2::plonk::Selector[][src]

pub struct Selector(_);
Expand description

A selector, representing a fixed boolean value per row of the circuit.

+

Selectors can be used to conditionally enable (portions of) gates:

+ +
+use halo2::poly::Rotation;
+
+let a = meta.advice_column();
+let b = meta.advice_column();
+let s = meta.selector();
+
+meta.create_gate("foo", |meta| {
+    let a = meta.query_advice(a, Rotation::prev());
+    let b = meta.query_advice(b, Rotation::cur());
+    let s = meta.query_selector(s);
+
+    // On rows where the selector is enabled, a is constrained to equal b.
+    // On rows where the selector is disabled, a and b can take any value.
+    vec![s * (a - b)]
+});
+

Selectors are disabled on all rows by default, and must be explicitly enabled on each +row when required:

+ +
+use halo2::{arithmetic::FieldExt, circuit::{Chip, Layouter}, plonk::{Advice, Column, Error, Selector}};
+
+struct Config {
+    a: Column<Advice>,
+    b: Column<Advice>,
+    s: Selector,
+}
+
+fn circuit_logic<F: FieldExt, C: Chip<F>>(chip: C, mut layouter: impl Layouter<F>) -> Result<(), Error> {
+    let config = chip.config();
+    layouter.assign_region(|| "bar", |mut region| {
+        region.assign_advice(|| "a", config.a, 0, || Ok(F::one()))?;
+        region.assign_advice(|| "a", config.b, 1, || Ok(F::one()))?;
+        config.s.enable(&mut region, 1)
+    })?;
+    Ok(())
+}
+

Implementations

Enable this selector at the given offset within the given region.

+

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Feeds this value into the given Hasher. Read more

+

Feeds a slice of this type into the given Hasher. Read more

+

This method tests for self and other values to be equal, and is used +by ==. Read more

+

This method tests for !=.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

+

Uses borrowed data to replace owned data, usually by cloning. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/plonk/struct.VerifyingKey.html b/rustdoc/latest/halo2/plonk/struct.VerifyingKey.html new file mode 100644 index 00000000..728496fe --- /dev/null +++ b/rustdoc/latest/halo2/plonk/struct.VerifyingKey.html @@ -0,0 +1,93 @@ +VerifyingKey in halo2::plonk - Rust + + + +

Struct halo2::plonk::VerifyingKey[][src]

pub struct VerifyingKey<C: CurveAffine> { /* fields omitted */ }
Expand description

This is a verifying key which allows for the verification of proofs for a +particular circuit.

+

Implementations

Writes a verifying key to a buffer.

+

Reads a verification key from a buffer.

+

Hashes a verification key into a transcript.

+

Obtains a pinned representation of this verification key that contains +the minimal information necessary to reconstruct the verification key.

+

Get the underlying EvaluationDomain.

+

Trait Implementations

Formats the value using the given formatter. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/plonk/struct.VirtualCells.html b/rustdoc/latest/halo2/plonk/struct.VirtualCells.html new file mode 100644 index 00000000..e9d8ea15 --- /dev/null +++ b/rustdoc/latest/halo2/plonk/struct.VirtualCells.html @@ -0,0 +1,92 @@ +VirtualCells in halo2::plonk - Rust + + + +

Struct halo2::plonk::VirtualCells[][src]

pub struct VirtualCells<'a, F: Field> { /* fields omitted */ }
Expand description

Exposes the “virtual cells” that can be queried while creating a custom gate or lookup +table.

+

Implementations

Query a selector at the current position.

+

Query a fixed column at a relative position

+

Query an advice column at a relative position

+

Query an instance column at a relative position

+

Query an Any column at a relative position

+

Trait Implementations

Formats the value using the given formatter. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/plonk/trait.Assignment.html b/rustdoc/latest/halo2/plonk/trait.Assignment.html new file mode 100644 index 00000000..d70f38ed --- /dev/null +++ b/rustdoc/latest/halo2/plonk/trait.Assignment.html @@ -0,0 +1,43 @@ +Assignment in halo2::plonk - Rust + + + +

Trait halo2::plonk::Assignment[][src]

pub trait Assignment<F: Field> {
+    fn enter_region<NR, N>(&mut self, name_fn: N)
    where
        NR: Into<String>,
        N: FnOnce() -> NR
; +
fn exit_region(&mut self); +
fn enable_selector<A, AR>(
        &mut self,
        annotation: A,
        selector: &Selector,
        row: usize
    ) -> Result<(), Error>
    where
        A: FnOnce() -> AR,
        AR: Into<String>
; +
fn assign_advice<V, VR, A, AR>(
        &mut self,
        annotation: A,
        column: Column<Advice>,
        row: usize,
        to: V
    ) -> Result<(), Error>
    where
        V: FnOnce() -> Result<VR, Error>,
        VR: Into<Assigned<F>>,
        A: FnOnce() -> AR,
        AR: Into<String>
; +
fn assign_fixed<V, VR, A, AR>(
        &mut self,
        annotation: A,
        column: Column<Fixed>,
        row: usize,
        to: V
    ) -> Result<(), Error>
    where
        V: FnOnce() -> Result<VR, Error>,
        VR: Into<Assigned<F>>,
        A: FnOnce() -> AR,
        AR: Into<String>
; +
fn copy(
        &mut self,
        permutation: &Permutation,
        left_column: Column<Any>,
        left_row: usize,
        right_column: Column<Any>,
        right_row: usize
    ) -> Result<(), Error>; +
fn push_namespace<NR, N>(&mut self, name_fn: N)
    where
        NR: Into<String>,
        N: FnOnce() -> NR
; +
fn pop_namespace(&mut self, gadget_name: Option<String>); +}
Expand description

This trait allows a Circuit to direct some backend to assign a witness +for a constraint system.

+

Required methods

Creates a new region and enters into it.

+

Panics if we are currently in a region (if exit_region was not called).

+

Not intended for downstream consumption; use Layouter::assign_region instead.

+

Exits the current region.

+

Panics if we are not currently in a region (if enter_region was not called).

+

Not intended for downstream consumption; use Layouter::assign_region instead.

+

Enables a selector at the given row.

+

Assign an advice column value (witness)

+

Assign a fixed value

+

Assign two cells to have the same value

+

Creates a new (sub)namespace and enters into it.

+

Not intended for downstream consumption; use Layouter::namespace instead.

+

Exits out of the existing namespace.

+

Not intended for downstream consumption; use Layouter::namespace instead.

+

Implementors

+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/plonk/trait.Circuit.html b/rustdoc/latest/halo2/plonk/trait.Circuit.html new file mode 100644 index 00000000..2299a17a --- /dev/null +++ b/rustdoc/latest/halo2/plonk/trait.Circuit.html @@ -0,0 +1,37 @@ +Circuit in halo2::plonk - Rust + + + +

Trait halo2::plonk::Circuit[][src]

pub trait Circuit<F: Field> {
+    type Config: Clone;
+    type FloorPlanner: FloorPlanner;
+    fn without_witnesses(&self) -> Self;
+
fn configure(meta: &mut ConstraintSystem<F>) -> Self::Config; +
fn synthesize(
        &self,
        config: Self::Config,
        layouter: impl Layouter<F>
    ) -> Result<(), Error>; +}
Expand description

This is a trait that circuits provide implementations for so that the +backend prover can ask the circuit to synthesize using some given +ConstraintSystem implementation.

+

Associated Types

This is a configuration object that stores things like columns.

+

The floor planner used for this circuit. This is an associated type of the +Circuit trait because its behaviour is circuit-critical.

+

Required methods

Returns a copy of this circuit with no witness values (i.e. all witnesses set to +None). For most circuits, this will be equal to Self::default().

+

The circuit is given an opportunity to describe the exact gate +arrangement, column arrangement, etc.

+

Given the provided cs, synthesize the circuit. The concrete type of +the caller will be different depending on the context, and they may or +may not expect to have a witness present.

+

Implementors

+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/plonk/trait.ColumnType.html b/rustdoc/latest/halo2/plonk/trait.ColumnType.html new file mode 100644 index 00000000..44b99da8 --- /dev/null +++ b/rustdoc/latest/halo2/plonk/trait.ColumnType.html @@ -0,0 +1,19 @@ +ColumnType in halo2::plonk - Rust + + + +

Trait halo2::plonk::ColumnType[][src]

pub trait ColumnType: 'static + Sized + Copy + Debug + PartialEq + Eq + Into<Any> { }
Expand description

A column type

+

Implementors

+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/plonk/trait.FloorPlanner.html b/rustdoc/latest/halo2/plonk/trait.FloorPlanner.html new file mode 100644 index 00000000..229ae81b --- /dev/null +++ b/rustdoc/latest/halo2/plonk/trait.FloorPlanner.html @@ -0,0 +1,31 @@ +FloorPlanner in halo2::plonk - Rust + + + +

Trait halo2::plonk::FloorPlanner[][src]

pub trait FloorPlanner {
+    fn synthesize<F: Field, CS: Assignment<F>, C: Circuit<F>>(
        cs: &mut CS,
        circuit: &C,
        config: C::Config
    ) -> Result<(), Error>; +}
Expand description

A floor planning strategy for a circuit.

+

The floor planner is chip-agnostic and applies its strategy to the circuit it is used +within.

+

Required methods

Given the provided cs, synthesize the given circuit.

+

Internally, a floor planner will perform the following operations:

+
    +
  • Instantiate a Layouter for this floor planner.
  • +
  • Perform any necessary setup or measurement tasks, which may involve one or more +calls to Circuit::default().synthesize(config, &mut layouter).
  • +
  • Call circuit.synthesize(config, &mut layouter) exactly once.
  • +
+

Implementors

+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/plonk/verifier/fn.verify_proof.html b/rustdoc/latest/halo2/plonk/verifier/fn.verify_proof.html new file mode 100644 index 00000000..310b9543 --- /dev/null +++ b/rustdoc/latest/halo2/plonk/verifier/fn.verify_proof.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to ../../../halo2/plonk/fn.verify_proof.html...

+ + + \ No newline at end of file diff --git a/rustdoc/latest/halo2/poly/commitment/fn.create_proof.html b/rustdoc/latest/halo2/poly/commitment/fn.create_proof.html new file mode 100644 index 00000000..e0c17581 --- /dev/null +++ b/rustdoc/latest/halo2/poly/commitment/fn.create_proof.html @@ -0,0 +1,29 @@ +create_proof in halo2::poly::commitment - Rust + + + +

Function halo2::poly::commitment::create_proof[][src]

pub fn create_proof<C: CurveAffine, E: EncodedChallenge<C>, T: TranscriptWrite<C, E>>(
    params: &Params<C>,
    transcript: &mut T,
    px: &Polynomial<C::Scalar, Coeff>,
    blind: Blind<C::Scalar>,
    x: C::Scalar
) -> Result<()>
Expand description

Create a polynomial commitment opening proof for the polynomial defined +by the coefficients px, the blinding factor blind used for the +polynomial commitment, and the point x that the polynomial is +evaluated at.

+

This function will panic if the provided polynomial is too large with +respect to the polynomial commitment parameters.

+

Important: This function assumes that the provided transcript has +already seen the common inputs: the polynomial commitment P, the claimed +opening v, and the point x. It’s probably also nice for the transcript +to have seen the elliptic curve description and the URS, if you want to +be rigorous.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/poly/commitment/fn.verify_proof.html b/rustdoc/latest/halo2/poly/commitment/fn.verify_proof.html new file mode 100644 index 00000000..1fd08d42 --- /dev/null +++ b/rustdoc/latest/halo2/poly/commitment/fn.verify_proof.html @@ -0,0 +1,21 @@ +verify_proof in halo2::poly::commitment - Rust + + + +

Function halo2::poly::commitment::verify_proof[][src]

pub fn verify_proof<'a, C: CurveAffine, E: EncodedChallenge<C>, T: TranscriptRead<C, E>>(
    params: &'a Params<C>,
    msm: MSM<'a, C>,
    transcript: &mut T,
    x: C::Scalar,
    v: C::Scalar
) -> Result<Guard<'a, C, E>, Error>
Expand description

Checks to see if the proof represented within transcript is valid, and a +point x that the polynomial commitment P opens purportedly to the value +v. The provided msm should evaluate to the commitment P being opened.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/poly/commitment/index.html b/rustdoc/latest/halo2/poly/commitment/index.html new file mode 100644 index 00000000..3a560e0a --- /dev/null +++ b/rustdoc/latest/halo2/poly/commitment/index.html @@ -0,0 +1,34 @@ +halo2::poly::commitment - Rust + + + +

Module halo2::poly::commitment[][src]

Expand description

This module contains an implementation of the polynomial commitment scheme +described in the Halo paper.

+

Structs

+

An accumulator instance consisting of an evaluation claim and a proof.

+

Wrapper type around a blinding factor.

+

A guard returned by the verifier

+

A multiscalar multiplication in the polynomial commitment scheme

+

These are the public parameters for the polynomial commitment scheme.

+

Functions

+

Create a polynomial commitment opening proof for the polynomial defined +by the coefficients px, the blinding factor blind used for the +polynomial commitment, and the point x that the polynomial is +evaluated at.

+

Checks to see if the proof represented within transcript is valid, and a +point x that the polynomial commitment P opens purportedly to the value +v. The provided msm should evaluate to the commitment P being opened.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/poly/commitment/msm/struct.MSM.html b/rustdoc/latest/halo2/poly/commitment/msm/struct.MSM.html new file mode 100644 index 00000000..c8d7c557 --- /dev/null +++ b/rustdoc/latest/halo2/poly/commitment/msm/struct.MSM.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to ../../../../halo2/poly/commitment/struct.MSM.html...

+ + + \ No newline at end of file diff --git a/rustdoc/latest/halo2/poly/commitment/prover/fn.create_proof.html b/rustdoc/latest/halo2/poly/commitment/prover/fn.create_proof.html new file mode 100644 index 00000000..b8da806f --- /dev/null +++ b/rustdoc/latest/halo2/poly/commitment/prover/fn.create_proof.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to ../../../../halo2/poly/commitment/fn.create_proof.html...

+ + + \ No newline at end of file diff --git a/rustdoc/latest/halo2/poly/commitment/sidebar-items.js b/rustdoc/latest/halo2/poly/commitment/sidebar-items.js new file mode 100644 index 00000000..73268145 --- /dev/null +++ b/rustdoc/latest/halo2/poly/commitment/sidebar-items.js @@ -0,0 +1 @@ +initSidebarItems({"fn":[["create_proof","Create a polynomial commitment opening proof for the polynomial defined by the coefficients `px`, the blinding factor `blind` used for the polynomial commitment, and the point `x` that the polynomial is evaluated at."],["verify_proof","Checks to see if the proof represented within `transcript` is valid, and a point `x` that the polynomial commitment `P` opens purportedly to the value `v`. The provided `msm` should evaluate to the commitment `P` being opened."]],"struct":[["Accumulator","An accumulator instance consisting of an evaluation claim and a proof."],["Blind","Wrapper type around a blinding factor."],["Guard","A guard returned by the verifier"],["MSM","A multiscalar multiplication in the polynomial commitment scheme"],["Params","These are the public parameters for the polynomial commitment scheme."]]}); \ No newline at end of file diff --git a/rustdoc/latest/halo2/poly/commitment/struct.Accumulator.html b/rustdoc/latest/halo2/poly/commitment/struct.Accumulator.html new file mode 100644 index 00000000..6bfdc68c --- /dev/null +++ b/rustdoc/latest/halo2/poly/commitment/struct.Accumulator.html @@ -0,0 +1,98 @@ +Accumulator in halo2::poly::commitment - Rust + + + +

Struct halo2::poly::commitment::Accumulator[][src]

pub struct Accumulator<C: CurveAffine, E: EncodedChallenge<C>> {
+    pub g: C,
+    pub challenges_packed: Vec<E>,
+}
Expand description

An accumulator instance consisting of an evaluation claim and a proof.

+

Fields

g: C

The claimed output of the linear-time polycommit opening protocol

+
challenges_packed: Vec<E>

A vector of 128-bit challenges sampled by the verifier, to be used in +computing g.

+

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

+

Uses borrowed data to replace owned data, usually by cloning. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/poly/commitment/struct.Blind.html b/rustdoc/latest/halo2/poly/commitment/struct.Blind.html new file mode 100644 index 00000000..e018ae4e --- /dev/null +++ b/rustdoc/latest/halo2/poly/commitment/struct.Blind.html @@ -0,0 +1,104 @@ +Blind in halo2::poly::commitment - Rust + + + +

Struct halo2::poly::commitment::Blind[][src]

pub struct Blind<F>(pub F);
Expand description

Wrapper type around a blinding factor.

+

Trait Implementations

The resulting type after applying the + operator.

+

Performs the + operation. Read more

+

Performs the += operation. Read more

+

Performs the += operation. Read more

+

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Returns the “default value” for a type. Read more

+

The resulting type after applying the * operator.

+

Performs the * operation. Read more

+

Performs the *= operation. Read more

+

Performs the *= operation. Read more

+

This method tests for self and other values to be equal, and is used +by ==. Read more

+

This method tests for !=.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

+

Uses borrowed data to replace owned data, usually by cloning. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/poly/commitment/struct.Guard.html b/rustdoc/latest/halo2/poly/commitment/struct.Guard.html new file mode 100644 index 00000000..a2092b8e --- /dev/null +++ b/rustdoc/latest/halo2/poly/commitment/struct.Guard.html @@ -0,0 +1,97 @@ +Guard in halo2::poly::commitment - Rust + + + +

Struct halo2::poly::commitment::Guard[][src]

pub struct Guard<'a, C: CurveAffine, E: EncodedChallenge<C>> { /* fields omitted */ }
Expand description

A guard returned by the verifier

+

Implementations

Lets caller supply the challenges and obtain an MSM with updated +scalars and points.

+

Lets caller supply the purported G point and simply appends +[-a] G to return an updated MSM.

+

Computes G + H, where G = ⟨s, params.g⟩ and H is used for blinding

+

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

+

Uses borrowed data to replace owned data, usually by cloning. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/poly/commitment/struct.MSM.html b/rustdoc/latest/halo2/poly/commitment/struct.MSM.html new file mode 100644 index 00000000..99a8f059 --- /dev/null +++ b/rustdoc/latest/halo2/poly/commitment/struct.MSM.html @@ -0,0 +1,102 @@ +MSM in halo2::poly::commitment - Rust + + + +

Struct halo2::poly::commitment::MSM[][src]

pub struct MSM<'a, C: CurveAffine> { /* fields omitted */ }
Expand description

A multiscalar multiplication in the polynomial commitment scheme

+

Implementations

Create a new, empty MSM using the provided parameters.

+

Add another multiexp into this one

+

Add arbitrary term (the scalar and the point)

+

Add a value to the first entry of g_scalars.

+

Add a vector of scalars to g_scalars. This function will panic if the +caller provides a slice of scalars that is not of length params.n.

+

Add to h_scalar

+

Add to u_scalar

+

Scale all scalars in the MSM by some scaling factor

+

Perform multiexp and check that it results in zero

+

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

+

Uses borrowed data to replace owned data, usually by cloning. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/poly/commitment/struct.Params.html b/rustdoc/latest/halo2/poly/commitment/struct.Params.html new file mode 100644 index 00000000..4fce5586 --- /dev/null +++ b/rustdoc/latest/halo2/poly/commitment/struct.Params.html @@ -0,0 +1,99 @@ +Params in halo2::poly::commitment - Rust + + + +

Struct halo2::poly::commitment::Params[][src]

pub struct Params<C: CurveAffine> { /* fields omitted */ }
Expand description

These are the public parameters for the polynomial commitment scheme.

+

Implementations

Initializes parameters for the curve, given a random oracle to draw +points from.

+

This computes a commitment to a polynomial described by the provided +slice of coefficients. The commitment will be blinded by the blinding +factor r.

+

This commits to a polynomial using its evaluations over the $2^k$ size +evaluation domain. The commitment will be blinded by the blinding factor +r.

+

Generates an empty multiscalar multiplication struct using the +appropriate params.

+

Getter for g generators

+

Writes params to a buffer.

+

Reads params from a buffer.

+

Trait Implementations

Formats the value using the given formatter. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/poly/commitment/verifier/fn.verify_proof.html b/rustdoc/latest/halo2/poly/commitment/verifier/fn.verify_proof.html new file mode 100644 index 00000000..0b072b8a --- /dev/null +++ b/rustdoc/latest/halo2/poly/commitment/verifier/fn.verify_proof.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to ../../../../halo2/poly/commitment/fn.verify_proof.html...

+ + + \ No newline at end of file diff --git a/rustdoc/latest/halo2/poly/commitment/verifier/struct.Accumulator.html b/rustdoc/latest/halo2/poly/commitment/verifier/struct.Accumulator.html new file mode 100644 index 00000000..786f56c6 --- /dev/null +++ b/rustdoc/latest/halo2/poly/commitment/verifier/struct.Accumulator.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to ../../../../halo2/poly/commitment/struct.Accumulator.html...

+ + + \ No newline at end of file diff --git a/rustdoc/latest/halo2/poly/commitment/verifier/struct.Guard.html b/rustdoc/latest/halo2/poly/commitment/verifier/struct.Guard.html new file mode 100644 index 00000000..31a42b1f --- /dev/null +++ b/rustdoc/latest/halo2/poly/commitment/verifier/struct.Guard.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to ../../../../halo2/poly/commitment/struct.Guard.html...

+ + + \ No newline at end of file diff --git a/rustdoc/latest/halo2/poly/domain/struct.EvaluationDomain.html b/rustdoc/latest/halo2/poly/domain/struct.EvaluationDomain.html new file mode 100644 index 00000000..62bf894d --- /dev/null +++ b/rustdoc/latest/halo2/poly/domain/struct.EvaluationDomain.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to ../../../halo2/poly/struct.EvaluationDomain.html...

+ + + \ No newline at end of file diff --git a/rustdoc/latest/halo2/poly/domain/struct.PinnedEvaluationDomain.html b/rustdoc/latest/halo2/poly/domain/struct.PinnedEvaluationDomain.html new file mode 100644 index 00000000..df3f0f9f --- /dev/null +++ b/rustdoc/latest/halo2/poly/domain/struct.PinnedEvaluationDomain.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to ../../../halo2/poly/struct.PinnedEvaluationDomain.html...

+ + + \ No newline at end of file diff --git a/rustdoc/latest/halo2/poly/enum.Error.html b/rustdoc/latest/halo2/poly/enum.Error.html new file mode 100644 index 00000000..68f70fc1 --- /dev/null +++ b/rustdoc/latest/halo2/poly/enum.Error.html @@ -0,0 +1,91 @@ +Error in halo2::poly - Rust + + + +

Enum halo2::poly::Error[][src]

pub enum Error {
+    OpeningError,
+    SamplingError,
+}
Expand description

This is an error that could occur during proving or circuit synthesis.

+

Variants

OpeningError

OpeningProof is not well-formed

+
SamplingError

Caller needs to re-sample a point

+

Trait Implementations

Formats the value using the given formatter. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/poly/index.html b/rustdoc/latest/halo2/poly/index.html new file mode 100644 index 00000000..314c82d0 --- /dev/null +++ b/rustdoc/latest/halo2/poly/index.html @@ -0,0 +1,44 @@ +halo2::poly - Rust + + + +

Module halo2::poly[][src]

Expand description

Contains utilities for performing arithmetic over univariate polynomials in +various forms, including computing commitments to them and provably opening +the committed polynomials at arbitrary points.

+

Modules

+

This module contains an implementation of the polynomial commitment scheme +described in the Halo paper.

+

This module contains an optimisation of the polynomial commitment opening +scheme described in the Halo paper.

+

Structs

+

The polynomial is defined as coefficients

+

This structure contains precomputed constants and other details needed for +performing operations on an evaluation domain of size $2^k$ and an extended +domain of size $2^{k} * j$ with $j \neq 0$.

+

The polynomial is defined as coefficients of Lagrange basis polynomials in +an extended size domain which supports multiplication

+

The polynomial is defined as coefficients of Lagrange basis polynomials

+

Represents the minimal parameters that determine an EvaluationDomain.

+

Represents a univariate polynomial defined over a field and a particular +basis.

+

Describes the relative rotation of a vector. Negative numbers represent +reverse (leftmost) rotations and positive numbers represent forward (rightmost) +rotations. Zero represents no rotation.

+

Enums

+

This is an error that could occur during proving or circuit synthesis.

+

Traits

+

The basis over which a polynomial is described.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/poly/multiopen/fn.create_proof.html b/rustdoc/latest/halo2/poly/multiopen/fn.create_proof.html new file mode 100644 index 00000000..fade525f --- /dev/null +++ b/rustdoc/latest/halo2/poly/multiopen/fn.create_proof.html @@ -0,0 +1,19 @@ +create_proof in halo2::poly::multiopen - Rust + + + +

Function halo2::poly::multiopen::create_proof[][src]

pub fn create_proof<'a, I, C: CurveAffine, E: EncodedChallenge<C>, T: TranscriptWrite<C, E>>(
    params: &Params<C>,
    transcript: &mut T,
    queries: I
) -> Result<()> where
    I: IntoIterator<Item = ProverQuery<'a, C>> + Clone
Expand description

Create a multi-opening proof

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/poly/multiopen/fn.verify_proof.html b/rustdoc/latest/halo2/poly/multiopen/fn.verify_proof.html new file mode 100644 index 00000000..011140f9 --- /dev/null +++ b/rustdoc/latest/halo2/poly/multiopen/fn.verify_proof.html @@ -0,0 +1,19 @@ +verify_proof in halo2::poly::multiopen - Rust + + + +

Function halo2::poly::multiopen::verify_proof[][src]

pub fn verify_proof<'b, 'a: 'b, I, C: CurveAffine, E: EncodedChallenge<C>, T: TranscriptRead<C, E>>(
    params: &'a Params<C>,
    transcript: &mut T,
    queries: I,
    msm: MSM<'a, C>
) -> Result<Guard<'a, C, E>, Error> where
    I: IntoIterator<Item = VerifierQuery<'b, C>> + Clone
Expand description

Verify a multi-opening proof

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/poly/multiopen/index.html b/rustdoc/latest/halo2/poly/multiopen/index.html new file mode 100644 index 00000000..d79c7474 --- /dev/null +++ b/rustdoc/latest/halo2/poly/multiopen/index.html @@ -0,0 +1,26 @@ +halo2::poly::multiopen - Rust + + + +

Module halo2::poly::multiopen[][src]

Expand description

This module contains an optimisation of the polynomial commitment opening +scheme described in the Halo paper.

+

Structs

+

A polynomial query at a point

+

A polynomial query at a point

+

Functions

+

Create a multi-opening proof

+

Verify a multi-opening proof

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/poly/multiopen/prover/fn.create_proof.html b/rustdoc/latest/halo2/poly/multiopen/prover/fn.create_proof.html new file mode 100644 index 00000000..8ef8c5d2 --- /dev/null +++ b/rustdoc/latest/halo2/poly/multiopen/prover/fn.create_proof.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to ../../../../halo2/poly/multiopen/fn.create_proof.html...

+ + + \ No newline at end of file diff --git a/rustdoc/latest/halo2/poly/multiopen/sidebar-items.js b/rustdoc/latest/halo2/poly/multiopen/sidebar-items.js new file mode 100644 index 00000000..cdb02cc7 --- /dev/null +++ b/rustdoc/latest/halo2/poly/multiopen/sidebar-items.js @@ -0,0 +1 @@ +initSidebarItems({"fn":[["create_proof","Create a multi-opening proof"],["verify_proof","Verify a multi-opening proof"]],"struct":[["ProverQuery","A polynomial query at a point"],["VerifierQuery","A polynomial query at a point"]]}); \ No newline at end of file diff --git a/rustdoc/latest/halo2/poly/multiopen/struct.ProverQuery.html b/rustdoc/latest/halo2/poly/multiopen/struct.ProverQuery.html new file mode 100644 index 00000000..f4506183 --- /dev/null +++ b/rustdoc/latest/halo2/poly/multiopen/struct.ProverQuery.html @@ -0,0 +1,99 @@ +ProverQuery in halo2::poly::multiopen - Rust + + + +

Struct halo2::poly::multiopen::ProverQuery[][src]

pub struct ProverQuery<'a, C: CurveAffine> {
+    pub point: C::Scalar,
+    pub poly: &'a Polynomial<C::Scalar, Coeff>,
+    pub blind: Blind<C::Scalar>,
+}
Expand description

A polynomial query at a point

+

Fields

point: C::Scalar

point at which polynomial is queried

+
poly: &'a Polynomial<C::Scalar, Coeff>

coefficients of polynomial

+
blind: Blind<C::Scalar>

blinding factor of polynomial

+

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

+

Uses borrowed data to replace owned data, usually by cloning. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/poly/multiopen/struct.VerifierQuery.html b/rustdoc/latest/halo2/poly/multiopen/struct.VerifierQuery.html new file mode 100644 index 00000000..5614f9c7 --- /dev/null +++ b/rustdoc/latest/halo2/poly/multiopen/struct.VerifierQuery.html @@ -0,0 +1,99 @@ +VerifierQuery in halo2::poly::multiopen - Rust + + + +

Struct halo2::poly::multiopen::VerifierQuery[][src]

pub struct VerifierQuery<'a, C: CurveAffine> {
+    pub point: C::Scalar,
+    pub commitment: &'a C,
+    pub eval: C::Scalar,
+}
Expand description

A polynomial query at a point

+

Fields

point: C::Scalar

point at which polynomial is queried

+
commitment: &'a C

commitment to polynomial

+
eval: C::Scalar

evaluation of polynomial at query point

+

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

+

Uses borrowed data to replace owned data, usually by cloning. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/poly/multiopen/verifier/fn.verify_proof.html b/rustdoc/latest/halo2/poly/multiopen/verifier/fn.verify_proof.html new file mode 100644 index 00000000..738abbfe --- /dev/null +++ b/rustdoc/latest/halo2/poly/multiopen/verifier/fn.verify_proof.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to ../../../../halo2/poly/multiopen/fn.verify_proof.html...

+ + + \ No newline at end of file diff --git a/rustdoc/latest/halo2/poly/sidebar-items.js b/rustdoc/latest/halo2/poly/sidebar-items.js new file mode 100644 index 00000000..19edd6a1 --- /dev/null +++ b/rustdoc/latest/halo2/poly/sidebar-items.js @@ -0,0 +1 @@ +initSidebarItems({"enum":[["Error","This is an error that could occur during proving or circuit synthesis."]],"mod":[["commitment","This module contains an implementation of the polynomial commitment scheme described in the Halo paper."],["multiopen","This module contains an optimisation of the polynomial commitment opening scheme described in the Halo paper."]],"struct":[["Coeff","The polynomial is defined as coefficients"],["EvaluationDomain","This structure contains precomputed constants and other details needed for performing operations on an evaluation domain of size $2^k$ and an extended domain of size $2^{k} * j$ with $j \\neq 0$."],["ExtendedLagrangeCoeff","The polynomial is defined as coefficients of Lagrange basis polynomials in an extended size domain which supports multiplication"],["LagrangeCoeff","The polynomial is defined as coefficients of Lagrange basis polynomials"],["PinnedEvaluationDomain","Represents the minimal parameters that determine an `EvaluationDomain`."],["Polynomial","Represents a univariate polynomial defined over a field and a particular basis."],["Rotation","Describes the relative rotation of a vector. Negative numbers represent reverse (leftmost) rotations and positive numbers represent forward (rightmost) rotations. Zero represents no rotation."]],"trait":[["Basis","The basis over which a polynomial is described."]]}); \ No newline at end of file diff --git a/rustdoc/latest/halo2/poly/struct.Coeff.html b/rustdoc/latest/halo2/poly/struct.Coeff.html new file mode 100644 index 00000000..2fc32233 --- /dev/null +++ b/rustdoc/latest/halo2/poly/struct.Coeff.html @@ -0,0 +1,92 @@ +Coeff in halo2::poly - Rust + + + +

Struct halo2::poly::Coeff[][src]

pub struct Coeff;
Expand description

The polynomial is defined as coefficients

+

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

+

Uses borrowed data to replace owned data, usually by cloning. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/poly/struct.EvaluationDomain.html b/rustdoc/latest/halo2/poly/struct.EvaluationDomain.html new file mode 100644 index 00000000..891465fa --- /dev/null +++ b/rustdoc/latest/halo2/poly/struct.EvaluationDomain.html @@ -0,0 +1,126 @@ +EvaluationDomain in halo2::poly - Rust + + + +

Struct halo2::poly::EvaluationDomain[][src]

pub struct EvaluationDomain<G: Group> { /* fields omitted */ }
Expand description

This structure contains precomputed constants and other details needed for +performing operations on an evaluation domain of size $2^k$ and an extended +domain of size $2^{k} * j$ with $j \neq 0$.

+

Implementations

This constructs a new evaluation domain object based on the provided +values $j, k$.

+

Obtains a polynomial in Lagrange form when given a vector of Lagrange +coefficients of size n; panics if the provided vector is the wrong +length.

+

Obtains a polynomial in coefficient form when given a vector of +coefficients of size n; panics if the provided vector is the wrong +length.

+

Returns an empty (zero) polynomial in the coefficient basis

+

Returns an empty (zero) polynomial in the Lagrange coefficient basis

+

Returns a constant polynomial in the Lagrange coefficient basis

+

Returns an empty (zero) polynomial in the extended Lagrange coefficient +basis

+

Returns a constant polynomial in the extended Lagrange coefficient +basis

+

This takes us from an n-length vector into the coefficient form.

+

This function will panic if the provided vector is not the correct +length.

+

This takes us from an n-length coefficient vector into a coset of the extended +evaluation domain, rotating by rotation if desired.

+

This takes us from the extended evaluation domain and gets us the +quotient polynomial coefficients.

+

This function will panic if the provided vector is not the correct +length.

+

This divides the polynomial (in the extended domain) by the vanishing +polynomial of the $2^k$ size domain.

+

Get the size of the extended domain

+

Get $\omega$, the generator of the $2^k$ order multiplicative subgroup.

+

Get $\omega^{-1}$, the inverse of the generator of the $2^k$ order +multiplicative subgroup.

+

Get the generator of the extended domain’s multiplicative subgroup.

+

Multiplies a value by some power of $\omega$, essentially rotating over +the domain.

+

Gets the barycentric weight of $1$ over the $2^k$ size domain.

+

Gets the quotient polynomial’s degree (as a multiple of n)

+

Obtain a pinned version of this evaluation domain; a structure with the +minimal parameters needed to determine the rest of the evaluation +domain.

+

Trait Implementations

Formats the value using the given formatter. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/poly/struct.ExtendedLagrangeCoeff.html b/rustdoc/latest/halo2/poly/struct.ExtendedLagrangeCoeff.html new file mode 100644 index 00000000..9512d662 --- /dev/null +++ b/rustdoc/latest/halo2/poly/struct.ExtendedLagrangeCoeff.html @@ -0,0 +1,93 @@ +ExtendedLagrangeCoeff in halo2::poly - Rust + + + +

Struct halo2::poly::ExtendedLagrangeCoeff[][src]

pub struct ExtendedLagrangeCoeff;
Expand description

The polynomial is defined as coefficients of Lagrange basis polynomials in +an extended size domain which supports multiplication

+

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

+

Uses borrowed data to replace owned data, usually by cloning. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/poly/struct.LagrangeCoeff.html b/rustdoc/latest/halo2/poly/struct.LagrangeCoeff.html new file mode 100644 index 00000000..f94bf5a9 --- /dev/null +++ b/rustdoc/latest/halo2/poly/struct.LagrangeCoeff.html @@ -0,0 +1,92 @@ +LagrangeCoeff in halo2::poly - Rust + + + +

Struct halo2::poly::LagrangeCoeff[][src]

pub struct LagrangeCoeff;
Expand description

The polynomial is defined as coefficients of Lagrange basis polynomials

+

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

+

Uses borrowed data to replace owned data, usually by cloning. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/poly/struct.PinnedEvaluationDomain.html b/rustdoc/latest/halo2/poly/struct.PinnedEvaluationDomain.html new file mode 100644 index 00000000..f9980404 --- /dev/null +++ b/rustdoc/latest/halo2/poly/struct.PinnedEvaluationDomain.html @@ -0,0 +1,86 @@ +PinnedEvaluationDomain in halo2::poly - Rust + + + +

Struct halo2::poly::PinnedEvaluationDomain[][src]

pub struct PinnedEvaluationDomain<'a, G: Group> { /* fields omitted */ }
Expand description

Represents the minimal parameters that determine an EvaluationDomain.

+

Trait Implementations

Formats the value using the given formatter. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/poly/struct.Polynomial.html b/rustdoc/latest/halo2/poly/struct.Polynomial.html new file mode 100644 index 00000000..5950d141 --- /dev/null +++ b/rustdoc/latest/halo2/poly/struct.Polynomial.html @@ -0,0 +1,121 @@ +Polynomial in halo2::poly - Rust + + + +

Struct halo2::poly::Polynomial[][src]

pub struct Polynomial<F, B> { /* fields omitted */ }
Expand description

Represents a univariate polynomial defined over a field and a particular +basis.

+

Implementations

Iterate over the values, which are either in coefficient or evaluation +form depending on the basis B.

+

Iterate over the values mutably, which are either in coefficient or +evaluation form depending on the basis B.

+

Gets the size of this polynomial in terms of the number of +coefficients used to describe it.

+

Maps every coefficient c in p to 1 - c.

+

Rotates the values in a Lagrange basis polynomial by Rotation

+

Trait Implementations

The resulting type after applying the + operator.

+

Performs the + operation. Read more

+

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

The resulting type after dereferencing.

+

Dereferences the value.

+

Mutably dereferences the value.

+

The returned type after indexing.

+

Performs the indexing (container[index]) operation. Read more

+

The returned type after indexing.

+

Performs the indexing (container[index]) operation. Read more

+

The returned type after indexing.

+

Performs the indexing (container[index]) operation. Read more

+

Performs the mutable indexing (container[index]) operation. Read more

+

Performs the mutable indexing (container[index]) operation. Read more

+

Performs the mutable indexing (container[index]) operation. Read more

+

The resulting type after applying the * operator.

+

Performs the * operation. Read more

+

The resulting type after applying the * operator.

+

Performs the * operation. Read more

+

The resulting type after applying the - operator.

+

Performs the - operation. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

+

Uses borrowed data to replace owned data, usually by cloning. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/poly/struct.Rotation.html b/rustdoc/latest/halo2/poly/struct.Rotation.html new file mode 100644 index 00000000..3ae982bc --- /dev/null +++ b/rustdoc/latest/halo2/poly/struct.Rotation.html @@ -0,0 +1,101 @@ +Rotation in halo2::poly - Rust + + + +

Struct halo2::poly::Rotation[][src]

pub struct Rotation(pub i32);
Expand description

Describes the relative rotation of a vector. Negative numbers represent +reverse (leftmost) rotations and positive numbers represent forward (rightmost) +rotations. Zero represents no rotation.

+

Implementations

The current location in the evaluation domain

+

The previous location in the evaluation domain

+

The next location in the evaluation domain

+

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Returns the “default value” for a type. Read more

+

This method tests for self and other values to be equal, and is used +by ==. Read more

+

This method tests for !=.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

+

Uses borrowed data to replace owned data, usually by cloning. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/poly/trait.Basis.html b/rustdoc/latest/halo2/poly/trait.Basis.html new file mode 100644 index 00000000..7d8a9d27 --- /dev/null +++ b/rustdoc/latest/halo2/poly/trait.Basis.html @@ -0,0 +1,19 @@ +Basis in halo2::poly - Rust + + + +

Trait halo2::poly::Basis[][src]

pub trait Basis: Clone + Debug + Send + Sync { }
Expand description

The basis over which a polynomial is described.

+

Implementors

+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/sidebar-items.js b/rustdoc/latest/halo2/sidebar-items.js new file mode 100644 index 00000000..ce89e3d4 --- /dev/null +++ b/rustdoc/latest/halo2/sidebar-items.js @@ -0,0 +1 @@ +initSidebarItems({"mod":[["arithmetic","This module provides common utilities, traits and structures for group, field and polynomial arithmetic."],["circuit","Traits and structs for implementing circuit components."],["dev","Tools for developing circuits."],["plonk","This module provides an implementation of a variant of (Turbo)PLONK that is designed specifically for the polynomial commitment scheme described in the Halo paper."],["poly","Contains utilities for performing arithmetic over univariate polynomials in various forms, including computing commitments to them and provably opening the committed polynomials at arbitrary points."],["transcript","This module contains utilities and traits for dealing with Fiat-Shamir transcripts."]]}); \ No newline at end of file diff --git a/rustdoc/latest/halo2/transcript/index.html b/rustdoc/latest/halo2/transcript/index.html new file mode 100644 index 00000000..4b3592a5 --- /dev/null +++ b/rustdoc/latest/halo2/transcript/index.html @@ -0,0 +1,34 @@ +halo2::transcript - Rust + + + +

Module halo2::transcript[][src]

Expand description

This module contains utilities and traits for dealing with Fiat-Shamir +transcripts.

+

Structs

+

We will replace BLAKE2b with an algebraic hash function in a later version.

+

We will replace BLAKE2b with an algebraic hash function in a later version.

+

A 255-bit challenge.

+

The scalar representation of a verifier challenge.

+

Traits

+

EncodedChallenge<C> defines a challenge encoding with a Self::Input +that is used to derive the challenge encoding and get_challenge obtains +the real C::Scalar that the challenge encoding represents.

+

Generic transcript view (from either the prover or verifier’s perspective)

+

Transcript view from the perspective of a verifier that has access to an +input stream of data from the prover to the verifier.

+

Transcript view from the perspective of a prover that has access to an +output stream of messages from the prover to the verifier.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/transcript/sidebar-items.js b/rustdoc/latest/halo2/transcript/sidebar-items.js new file mode 100644 index 00000000..8d31a035 --- /dev/null +++ b/rustdoc/latest/halo2/transcript/sidebar-items.js @@ -0,0 +1 @@ +initSidebarItems({"struct":[["Blake2bRead","We will replace BLAKE2b with an algebraic hash function in a later version."],["Blake2bWrite","We will replace BLAKE2b with an algebraic hash function in a later version."],["Challenge255","A 255-bit challenge."],["ChallengeScalar","The scalar representation of a verifier challenge."]],"trait":[["EncodedChallenge","`EncodedChallenge` defines a challenge encoding with a [`Self::Input`] that is used to derive the challenge encoding and `get_challenge` obtains the real `C::Scalar` that the challenge encoding represents."],["Transcript","Generic transcript view (from either the prover or verifier’s perspective)"],["TranscriptRead","Transcript view from the perspective of a verifier that has access to an input stream of data from the prover to the verifier."],["TranscriptWrite","Transcript view from the perspective of a prover that has access to an output stream of messages from the prover to the verifier."]]}); \ No newline at end of file diff --git a/rustdoc/latest/halo2/transcript/struct.Blake2bRead.html b/rustdoc/latest/halo2/transcript/struct.Blake2bRead.html new file mode 100644 index 00000000..3b0e154a --- /dev/null +++ b/rustdoc/latest/halo2/transcript/struct.Blake2bRead.html @@ -0,0 +1,101 @@ +Blake2bRead in halo2::transcript - Rust + + + +

Struct halo2::transcript::Blake2bRead[][src]

pub struct Blake2bRead<R: Read, C: CurveAffine, E: EncodedChallenge<C>> { /* fields omitted */ }
Expand description

We will replace BLAKE2b with an algebraic hash function in a later version.

+

Implementations

Initialize a transcript given an input buffer.

+

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Squeeze an encoded verifier challenge from the transcript.

+

Writing the point to the transcript without writing it to the proof, +treating it as a common input. Read more

+

Writing the scalar to the transcript without writing it to the proof, +treating it as a common input. Read more

+

Squeeze a typed challenge (in the scalar field) from the transcript.

+

Read a curve point from the prover.

+

Read a curve scalar from the prover.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

+

Uses borrowed data to replace owned data, usually by cloning. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/transcript/struct.Blake2bWrite.html b/rustdoc/latest/halo2/transcript/struct.Blake2bWrite.html new file mode 100644 index 00000000..30480305 --- /dev/null +++ b/rustdoc/latest/halo2/transcript/struct.Blake2bWrite.html @@ -0,0 +1,102 @@ +Blake2bWrite in halo2::transcript - Rust + + + +

Struct halo2::transcript::Blake2bWrite[][src]

pub struct Blake2bWrite<W: Write, C: CurveAffine, E: EncodedChallenge<C>> { /* fields omitted */ }
Expand description

We will replace BLAKE2b with an algebraic hash function in a later version.

+

Implementations

Initialize a transcript given an output buffer.

+

Conclude the interaction and return the output buffer (writer).

+

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

Squeeze an encoded verifier challenge from the transcript.

+

Writing the point to the transcript without writing it to the proof, +treating it as a common input. Read more

+

Writing the scalar to the transcript without writing it to the proof, +treating it as a common input. Read more

+

Squeeze a typed challenge (in the scalar field) from the transcript.

+

Write a curve point to the proof and the transcript.

+

Write a scalar to the proof and the transcript.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

+

Uses borrowed data to replace owned data, usually by cloning. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/transcript/struct.Challenge255.html b/rustdoc/latest/halo2/transcript/struct.Challenge255.html new file mode 100644 index 00000000..bd9271a0 --- /dev/null +++ b/rustdoc/latest/halo2/transcript/struct.Challenge255.html @@ -0,0 +1,116 @@ +Challenge255 in halo2::transcript - Rust + + + +

Struct halo2::transcript::Challenge255[][src]

pub struct Challenge255<C: CurveAffine>(_, _);
Expand description

A 255-bit challenge.

+

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

The resulting type after dereferencing.

+

Dereferences the value.

+

The Input type used to derive the challenge encoding. For example, +an input from the Poseidon hash would be a base field element; +an input from the Blake2b hash would be a [u8; 64]. Read more

+

Get an encoded challenge from a given input challenge.

+

Get a scalar field element from an encoded challenge.

+

Cast an encoded challenge as a typed ChallengeScalar.

+

Squeeze an encoded verifier challenge from the transcript.

+

Writing the point to the transcript without writing it to the proof, +treating it as a common input. Read more

+

Writing the scalar to the transcript without writing it to the proof, +treating it as a common input. Read more

+

Squeeze a typed challenge (in the scalar field) from the transcript.

+

Squeeze an encoded verifier challenge from the transcript.

+

Writing the point to the transcript without writing it to the proof, +treating it as a common input. Read more

+

Writing the scalar to the transcript without writing it to the proof, +treating it as a common input. Read more

+

Squeeze a typed challenge (in the scalar field) from the transcript.

+

Read a curve point from the prover.

+

Read a curve scalar from the prover.

+

Write a curve point to the proof and the transcript.

+

Write a scalar to the proof and the transcript.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

+

Uses borrowed data to replace owned data, usually by cloning. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/transcript/struct.ChallengeScalar.html b/rustdoc/latest/halo2/transcript/struct.ChallengeScalar.html new file mode 100644 index 00000000..dc42c809 --- /dev/null +++ b/rustdoc/latest/halo2/transcript/struct.ChallengeScalar.html @@ -0,0 +1,96 @@ +ChallengeScalar in halo2::transcript - Rust + + + +

Struct halo2::transcript::ChallengeScalar[][src]

pub struct ChallengeScalar<C: CurveAffine, T> { /* fields omitted */ }
Expand description

The scalar representation of a verifier challenge.

+

The Type type can be used to scope the challenge to a specific context, or +set to () if no context is required.

+

Trait Implementations

Returns a copy of the value. Read more

+

Performs copy-assignment from source. Read more

+

Formats the value using the given formatter. Read more

+

The resulting type after dereferencing.

+

Dereferences the value.

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Converts self into T using Into<T>. Read more

+

Causes self to use its Binary implementation when Debug-formatted.

+

Causes self to use its Display implementation when +Debug-formatted. Read more

+

Causes self to use its LowerExp implementation when +Debug-formatted. Read more

+

Causes self to use its LowerHex implementation when +Debug-formatted. Read more

+

Causes self to use its Octal implementation when Debug-formatted.

+

Causes self to use its Pointer implementation when +Debug-formatted. Read more

+

Causes self to use its UpperExp implementation when +Debug-formatted. Read more

+

Causes self to use its UpperHex implementation when +Debug-formatted. Read more

+

Performs the conversion.

+

Performs the conversion.

+

Pipes by value. This is generally the method you want to use. Read more

+

Borrows self and passes that borrow into the pipe function. Read more

+

Mutably borrows self and passes that borrow into the pipe function. Read more

+

Borrows self, then passes self.borrow() into the pipe function. Read more

+

Mutably borrows self, then passes self.borrow_mut() into the pipe +function. Read more

+

Borrows self, then passes self.as_ref() into the pipe function.

+

Mutably borrows self, then passes self.as_mut() into the pipe +function. Read more

+

Borrows self, then passes self.deref() into the pipe function.

+

Mutably borrows self, then passes self.deref_mut() into the pipe +function. Read more

+

The alignment of pointer.

+

The type for initializers.

+

Initializes a with the given initializer. Read more

+

Dereferences the given pointer. Read more

+

Mutably dereferences the given pointer. Read more

+

Drops the object pointed to by the given pointer. Read more

+

Immutable access to a value. Read more

+

Mutable access to a value. Read more

+

Immutable access to the Borrow<B> of a value. Read more

+

Mutable access to the BorrowMut<B> of a value. Read more

+

Immutable access to the AsRef<R> view of a value. Read more

+

Mutable access to the AsMut<R> view of a value. Read more

+

Immutable access to the Deref::Target of a value. Read more

+

Mutable access to the Deref::Target of a value. Read more

+

Calls .tap() only in debug builds, and is erased in release builds.

+

Calls .tap_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_borrow_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_ref_mut() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref() only in debug builds, and is erased in release +builds. Read more

+

Calls .tap_deref_mut() only in debug builds, and is erased in release +builds. Read more

+

The resulting type after obtaining ownership.

+

Creates owned data from borrowed data, usually by cloning. Read more

+
🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

+

Uses borrowed data to replace owned data, usually by cloning. Read more

+

Attempts to convert self into T using TryInto<T>. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/transcript/trait.EncodedChallenge.html b/rustdoc/latest/halo2/transcript/trait.EncodedChallenge.html new file mode 100644 index 00000000..00c68ce5 --- /dev/null +++ b/rustdoc/latest/halo2/transcript/trait.EncodedChallenge.html @@ -0,0 +1,33 @@ +EncodedChallenge in halo2::transcript - Rust + + + +

Trait halo2::transcript::EncodedChallenge[][src]

pub trait EncodedChallenge<C: CurveAffine> {
+    type Input;
+    fn new(challenge_input: &Self::Input) -> Self;
+
fn get_scalar(&self) -> C::Scalar; + + fn as_challenge_scalar<T>(&self) -> ChallengeScalar<C, T> { ... } +}
Expand description

EncodedChallenge<C> defines a challenge encoding with a Self::Input +that is used to derive the challenge encoding and get_challenge obtains +the real C::Scalar that the challenge encoding represents.

+

Associated Types

The Input type used to derive the challenge encoding. For example, +an input from the Poseidon hash would be a base field element; +an input from the Blake2b hash would be a [u8; 64].

+

Required methods

Get an encoded challenge from a given input challenge.

+

Get a scalar field element from an encoded challenge.

+

Provided methods

Cast an encoded challenge as a typed ChallengeScalar.

+

Implementors

+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/transcript/trait.Transcript.html b/rustdoc/latest/halo2/transcript/trait.Transcript.html new file mode 100644 index 00000000..dd22f56e --- /dev/null +++ b/rustdoc/latest/halo2/transcript/trait.Transcript.html @@ -0,0 +1,31 @@ +Transcript in halo2::transcript - Rust + + + +

Trait halo2::transcript::Transcript[][src]

pub trait Transcript<C: CurveAffine, E: EncodedChallenge<C>> {
+    fn squeeze_challenge(&mut self) -> E;
+
fn common_point(&mut self, point: C) -> Result<()>; +
fn common_scalar(&mut self, scalar: C::Scalar) -> Result<()>; + + fn squeeze_challenge_scalar<T>(&mut self) -> ChallengeScalar<C, T> { ... } +}
Expand description

Generic transcript view (from either the prover or verifier’s perspective)

+

Required methods

Squeeze an encoded verifier challenge from the transcript.

+

Writing the point to the transcript without writing it to the proof, +treating it as a common input.

+

Writing the scalar to the transcript without writing it to the proof, +treating it as a common input.

+

Provided methods

Squeeze a typed challenge (in the scalar field) from the transcript.

+

Implementors

+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/transcript/trait.TranscriptRead.html b/rustdoc/latest/halo2/transcript/trait.TranscriptRead.html new file mode 100644 index 00000000..9932af4a --- /dev/null +++ b/rustdoc/latest/halo2/transcript/trait.TranscriptRead.html @@ -0,0 +1,25 @@ +TranscriptRead in halo2::transcript - Rust + + + +

Trait halo2::transcript::TranscriptRead[][src]

pub trait TranscriptRead<C: CurveAffine, E: EncodedChallenge<C>>: Transcript<C, E> {
+    fn read_point(&mut self) -> Result<C>;
+
fn read_scalar(&mut self) -> Result<C::Scalar>; +}
Expand description

Transcript view from the perspective of a verifier that has access to an +input stream of data from the prover to the verifier.

+

Required methods

Read a curve point from the prover.

+

Read a curve scalar from the prover.

+

Implementors

+ + \ No newline at end of file diff --git a/rustdoc/latest/halo2/transcript/trait.TranscriptWrite.html b/rustdoc/latest/halo2/transcript/trait.TranscriptWrite.html new file mode 100644 index 00000000..f005e616 --- /dev/null +++ b/rustdoc/latest/halo2/transcript/trait.TranscriptWrite.html @@ -0,0 +1,25 @@ +TranscriptWrite in halo2::transcript - Rust + + + +

Trait halo2::transcript::TranscriptWrite[][src]

pub trait TranscriptWrite<C: CurveAffine, E: EncodedChallenge<C>>: Transcript<C, E> {
+    fn write_point(&mut self, point: C) -> Result<()>;
+
fn write_scalar(&mut self, scalar: C::Scalar) -> Result<()>; +}
Expand description

Transcript view from the perspective of a prover that has access to an +output stream of messages from the prover to the verifier.

+

Required methods

Write a curve point to the proof and the transcript.

+

Write a scalar to the proof and the transcript.

+

Implementors

+ + \ No newline at end of file diff --git a/rustdoc/latest/implementors/core/clone/trait.Clone.js b/rustdoc/latest/implementors/core/clone/trait.Clone.js new file mode 100644 index 00000000..ba18455d --- /dev/null +++ b/rustdoc/latest/implementors/core/clone/trait.Clone.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["halo2"] = [{"text":"impl Clone for RegionShape","synthetic":false,"types":["halo2::circuit::layouter::RegionShape"]},{"text":"impl Clone for RegionIndex","synthetic":false,"types":["halo2::circuit::RegionIndex"]},{"text":"impl Clone for RegionStart","synthetic":false,"types":["halo2::circuit::RegionStart"]},{"text":"impl Clone for Cell","synthetic":false,"types":["halo2::circuit::Cell"]},{"text":"impl<C: Clone + ColumnType> Clone for Column<C>","synthetic":false,"types":["halo2::plonk::circuit::Column"]},{"text":"impl Clone for Advice","synthetic":false,"types":["halo2::plonk::circuit::Advice"]},{"text":"impl Clone for Fixed","synthetic":false,"types":["halo2::plonk::circuit::Fixed"]},{"text":"impl Clone for Instance","synthetic":false,"types":["halo2::plonk::circuit::Instance"]},{"text":"impl Clone for Any","synthetic":false,"types":["halo2::plonk::circuit::Any"]},{"text":"impl Clone for Selector","synthetic":false,"types":["halo2::plonk::circuit::Selector"]},{"text":"impl Clone for Permutation","synthetic":false,"types":["halo2::plonk::circuit::Permutation"]},{"text":"impl<F: Clone> Clone for Assigned<F>","synthetic":false,"types":["halo2::plonk::circuit::Assigned"]},{"text":"impl<F: Clone> Clone for Expression<F>","synthetic":false,"types":["halo2::plonk::circuit::Expression"]},{"text":"impl<F: Clone + Field> Clone for ConstraintSystem<F>","synthetic":false,"types":["halo2::plonk::circuit::ConstraintSystem"]},{"text":"impl<'a, C: Clone + CurveAffine> Clone for MSM<'a, C> where
    C::Scalar: Clone,
    C::Scalar: Clone,
    C::Scalar: Clone,
    C::Scalar: Clone
","synthetic":false,"types":["halo2::poly::commitment::msm::MSM"]},{"text":"impl<'a, C: Clone + CurveAffine, E: Clone + EncodedChallenge<C>> Clone for Guard<'a, C, E> where
    C::Scalar: Clone,
    C::Scalar: Clone
","synthetic":false,"types":["halo2::poly::commitment::verifier::Guard"]},{"text":"impl<C: Clone + CurveAffine, E: Clone + EncodedChallenge<C>> Clone for Accumulator<C, E>","synthetic":false,"types":["halo2::poly::commitment::verifier::Accumulator"]},{"text":"impl<F: Clone> Clone for Blind<F>","synthetic":false,"types":["halo2::poly::commitment::Blind"]},{"text":"impl<'a, C: Clone + CurveAffine> Clone for ProverQuery<'a, C> where
    C::Scalar: Clone,
    C::Scalar: Clone,
    C::Scalar: Clone
","synthetic":false,"types":["halo2::poly::multiopen::ProverQuery"]},{"text":"impl<'a, C: Clone + CurveAffine> Clone for VerifierQuery<'a, C> where
    C::Scalar: Clone,
    C::Scalar: Clone
","synthetic":false,"types":["halo2::poly::multiopen::VerifierQuery"]},{"text":"impl Clone for Coeff","synthetic":false,"types":["halo2::poly::Coeff"]},{"text":"impl Clone for LagrangeCoeff","synthetic":false,"types":["halo2::poly::LagrangeCoeff"]},{"text":"impl Clone for ExtendedLagrangeCoeff","synthetic":false,"types":["halo2::poly::ExtendedLagrangeCoeff"]},{"text":"impl<F: Clone, B: Clone> Clone for Polynomial<F, B>","synthetic":false,"types":["halo2::poly::Polynomial"]},{"text":"impl Clone for Rotation","synthetic":false,"types":["halo2::poly::Rotation"]},{"text":"impl<R: Clone + Read, C: Clone + CurveAffine, E: Clone + EncodedChallenge<C>> Clone for Blake2bRead<R, C, E>","synthetic":false,"types":["halo2::transcript::Blake2bRead"]},{"text":"impl<W: Clone + Write, C: Clone + CurveAffine, E: Clone + EncodedChallenge<C>> Clone for Blake2bWrite<W, C, E>","synthetic":false,"types":["halo2::transcript::Blake2bWrite"]},{"text":"impl<C: Clone + CurveAffine, T: Clone> Clone for ChallengeScalar<C, T> where
    C::Scalar: Clone
","synthetic":false,"types":["halo2::transcript::ChallengeScalar"]},{"text":"impl<C: Clone + CurveAffine> Clone for Challenge255<C>","synthetic":false,"types":["halo2::transcript::Challenge255"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/latest/implementors/core/cmp/trait.Eq.js b/rustdoc/latest/implementors/core/cmp/trait.Eq.js new file mode 100644 index 00000000..f640956c --- /dev/null +++ b/rustdoc/latest/implementors/core/cmp/trait.Eq.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["halo2"] = [{"text":"impl Eq for RegionStart","synthetic":false,"types":["halo2::circuit::RegionStart"]},{"text":"impl<C: Eq + ColumnType> Eq for Column<C>","synthetic":false,"types":["halo2::plonk::circuit::Column"]},{"text":"impl Eq for Advice","synthetic":false,"types":["halo2::plonk::circuit::Advice"]},{"text":"impl Eq for Fixed","synthetic":false,"types":["halo2::plonk::circuit::Fixed"]},{"text":"impl Eq for Instance","synthetic":false,"types":["halo2::plonk::circuit::Instance"]},{"text":"impl Eq for Any","synthetic":false,"types":["halo2::plonk::circuit::Any"]},{"text":"impl Eq for Selector","synthetic":false,"types":["halo2::plonk::circuit::Selector"]},{"text":"impl Eq for Permutation","synthetic":false,"types":["halo2::plonk::circuit::Permutation"]},{"text":"impl<F: Eq> Eq for Blind<F>","synthetic":false,"types":["halo2::poly::commitment::Blind"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/latest/implementors/core/cmp/trait.Ord.js b/rustdoc/latest/implementors/core/cmp/trait.Ord.js new file mode 100644 index 00000000..6bec7a67 --- /dev/null +++ b/rustdoc/latest/implementors/core/cmp/trait.Ord.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["halo2"] = [{"text":"impl<C: ColumnType> Ord for Column<C>","synthetic":false,"types":["halo2::plonk::circuit::Column"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/latest/implementors/core/cmp/trait.PartialEq.js b/rustdoc/latest/implementors/core/cmp/trait.PartialEq.js new file mode 100644 index 00000000..60767fd6 --- /dev/null +++ b/rustdoc/latest/implementors/core/cmp/trait.PartialEq.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["halo2"] = [{"text":"impl PartialEq<RegionStart> for RegionStart","synthetic":false,"types":["halo2::circuit::RegionStart"]},{"text":"impl<C: PartialEq + ColumnType> PartialEq<Column<C>> for Column<C>","synthetic":false,"types":["halo2::plonk::circuit::Column"]},{"text":"impl PartialEq<Advice> for Advice","synthetic":false,"types":["halo2::plonk::circuit::Advice"]},{"text":"impl PartialEq<Fixed> for Fixed","synthetic":false,"types":["halo2::plonk::circuit::Fixed"]},{"text":"impl PartialEq<Instance> for Instance","synthetic":false,"types":["halo2::plonk::circuit::Instance"]},{"text":"impl PartialEq<Any> for Any","synthetic":false,"types":["halo2::plonk::circuit::Any"]},{"text":"impl PartialEq<Selector> for Selector","synthetic":false,"types":["halo2::plonk::circuit::Selector"]},{"text":"impl PartialEq<Permutation> for Permutation","synthetic":false,"types":["halo2::plonk::circuit::Permutation"]},{"text":"impl<F: PartialEq> PartialEq<Blind<F>> for Blind<F>","synthetic":false,"types":["halo2::poly::commitment::Blind"]},{"text":"impl PartialEq<Rotation> for Rotation","synthetic":false,"types":["halo2::poly::Rotation"]},{"text":"impl PartialEq<Gate> for Gate","synthetic":false,"types":["halo2::dev::metadata::Gate"]},{"text":"impl PartialEq<Constraint> for Constraint","synthetic":false,"types":["halo2::dev::metadata::Constraint"]},{"text":"impl PartialEq<Region> for Region","synthetic":false,"types":["halo2::dev::metadata::Region"]},{"text":"impl PartialEq<VerifyFailure> for VerifyFailure","synthetic":false,"types":["halo2::dev::VerifyFailure"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/latest/implementors/core/cmp/trait.PartialOrd.js b/rustdoc/latest/implementors/core/cmp/trait.PartialOrd.js new file mode 100644 index 00000000..1fcd684a --- /dev/null +++ b/rustdoc/latest/implementors/core/cmp/trait.PartialOrd.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["halo2"] = [{"text":"impl<C: ColumnType> PartialOrd<Column<C>> for Column<C>","synthetic":false,"types":["halo2::plonk::circuit::Column"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/latest/implementors/core/convert/trait.From.js b/rustdoc/latest/implementors/core/convert/trait.From.js new file mode 100644 index 00000000..8183fc48 --- /dev/null +++ b/rustdoc/latest/implementors/core/convert/trait.From.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["halo2"] = [{"text":"impl From<usize> for RegionIndex","synthetic":false,"types":["halo2::circuit::RegionIndex"]},{"text":"impl From<usize> for RegionStart","synthetic":false,"types":["halo2::circuit::RegionStart"]},{"text":"impl<'r, F: Field> From<&'r mut (dyn RegionLayouter<F> + 'r)> for Region<'r, F>","synthetic":false,"types":["halo2::circuit::Region"]},{"text":"impl From<Advice> for Any","synthetic":false,"types":["halo2::plonk::circuit::Any"]},{"text":"impl From<Fixed> for Any","synthetic":false,"types":["halo2::plonk::circuit::Any"]},{"text":"impl From<Instance> for Any","synthetic":false,"types":["halo2::plonk::circuit::Any"]},{"text":"impl From<Column<Advice>> for Column<Any>","synthetic":false,"types":["halo2::plonk::circuit::Column"]},{"text":"impl From<Column<Fixed>> for Column<Any>","synthetic":false,"types":["halo2::plonk::circuit::Column"]},{"text":"impl From<Column<Instance>> for Column<Any>","synthetic":false,"types":["halo2::plonk::circuit::Column"]},{"text":"impl<F: Field> From<F> for Assigned<F>","synthetic":false,"types":["halo2::plonk::circuit::Assigned"]},{"text":"impl<F: Field> From<(F, F)> for Assigned<F>","synthetic":false,"types":["halo2::plonk::circuit::Assigned"]},{"text":"impl<F: Field> From<Expression<F>> for Constraint<F>","synthetic":false,"types":["halo2::plonk::circuit::Constraint"]},{"text":"impl<F: Field> From<(&'static str, Expression<F>)> for Constraint<F>","synthetic":false,"types":["halo2::plonk::circuit::Constraint"]},{"text":"impl<F: Field> From<Expression<F>> for Vec<Constraint<F>>","synthetic":false,"types":["alloc::vec::Vec"]},{"text":"impl From<(usize, &'static str)> for Gate","synthetic":false,"types":["halo2::dev::metadata::Gate"]},{"text":"impl From<(Gate, usize, &'static str)> for Constraint","synthetic":false,"types":["halo2::dev::metadata::Constraint"]},{"text":"impl From<(usize, String)> for Region","synthetic":false,"types":["halo2::dev::metadata::Region"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/latest/implementors/core/convert/trait.TryFrom.js b/rustdoc/latest/implementors/core/convert/trait.TryFrom.js new file mode 100644 index 00000000..46be9bdb --- /dev/null +++ b/rustdoc/latest/implementors/core/convert/trait.TryFrom.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["halo2"] = [{"text":"impl TryFrom<Column<Any>> for Column<Advice>","synthetic":false,"types":["halo2::plonk::circuit::Column"]},{"text":"impl TryFrom<Column<Any>> for Column<Fixed>","synthetic":false,"types":["halo2::plonk::circuit::Column"]},{"text":"impl TryFrom<Column<Any>> for Column<Instance>","synthetic":false,"types":["halo2::plonk::circuit::Column"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/latest/implementors/core/default/trait.Default.js b/rustdoc/latest/implementors/core/default/trait.Default.js new file mode 100644 index 00000000..d54fd4d1 --- /dev/null +++ b/rustdoc/latest/implementors/core/default/trait.Default.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["halo2"] = [{"text":"impl<F: Field> Default for ConstraintSystem<F>","synthetic":false,"types":["halo2::plonk::circuit::ConstraintSystem"]},{"text":"impl<F: FieldExt> Default for Blind<F>","synthetic":false,"types":["halo2::poly::commitment::Blind"]},{"text":"impl Default for Rotation","synthetic":false,"types":["halo2::poly::Rotation"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/latest/implementors/core/fmt/trait.Debug.js b/rustdoc/latest/implementors/core/fmt/trait.Debug.js new file mode 100644 index 00000000..110ff70b --- /dev/null +++ b/rustdoc/latest/implementors/core/fmt/trait.Debug.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["halo2"] = [{"text":"impl Debug for SimpleFloorPlanner","synthetic":false,"types":["halo2::circuit::floor_planner::single_pass::SimpleFloorPlanner"]},{"text":"impl Debug for V1","synthetic":false,"types":["halo2::circuit::floor_planner::v1::V1"]},{"text":"impl<'p, 'a, F: Debug + Field, CS: Debug + Assignment<F> + 'a> Debug for V1Pass<'p, 'a, F, CS>","synthetic":false,"types":["halo2::circuit::floor_planner::v1::V1Pass"]},{"text":"impl Debug for RegionShape","synthetic":false,"types":["halo2::circuit::layouter::RegionShape"]},{"text":"impl Debug for RegionIndex","synthetic":false,"types":["halo2::circuit::RegionIndex"]},{"text":"impl Debug for RegionStart","synthetic":false,"types":["halo2::circuit::RegionStart"]},{"text":"impl Debug for Cell","synthetic":false,"types":["halo2::circuit::Cell"]},{"text":"impl<'r, F: Debug + Field> Debug for Region<'r, F>","synthetic":false,"types":["halo2::circuit::Region"]},{"text":"impl<'a, F: Debug + Field, L: Debug + Layouter<F> + 'a> Debug for NamespacedLayouter<'a, F, L>","synthetic":false,"types":["halo2::circuit::NamespacedLayouter"]},{"text":"impl<C: Debug + ColumnType> Debug for Column<C>","synthetic":false,"types":["halo2::plonk::circuit::Column"]},{"text":"impl Debug for Advice","synthetic":false,"types":["halo2::plonk::circuit::Advice"]},{"text":"impl Debug for Fixed","synthetic":false,"types":["halo2::plonk::circuit::Fixed"]},{"text":"impl Debug for Instance","synthetic":false,"types":["halo2::plonk::circuit::Instance"]},{"text":"impl Debug for Any","synthetic":false,"types":["halo2::plonk::circuit::Any"]},{"text":"impl Debug for Selector","synthetic":false,"types":["halo2::plonk::circuit::Selector"]},{"text":"impl Debug for Permutation","synthetic":false,"types":["halo2::plonk::circuit::Permutation"]},{"text":"impl<F: Debug> Debug for Assigned<F>","synthetic":false,"types":["halo2::plonk::circuit::Assigned"]},{"text":"impl<F: Debug> Debug for Expression<F>","synthetic":false,"types":["halo2::plonk::circuit::Expression"]},{"text":"impl<F: Debug + Field> Debug for Constraint<F>","synthetic":false,"types":["halo2::plonk::circuit::Constraint"]},{"text":"impl<F: Debug + Field> Debug for ConstraintSystem<F>","synthetic":false,"types":["halo2::plonk::circuit::ConstraintSystem"]},{"text":"impl<'a, F: Debug + Field> Debug for PinnedConstraintSystem<'a, F>","synthetic":false,"types":["halo2::plonk::circuit::PinnedConstraintSystem"]},{"text":"impl<'a, F: Debug + Field> Debug for VirtualCells<'a, F>","synthetic":false,"types":["halo2::plonk::circuit::VirtualCells"]},{"text":"impl<C: Debug + CurveAffine> Debug for VerifyingKey<C> where
    C::Scalar: Debug,
    C::Scalar: Debug
","synthetic":false,"types":["halo2::plonk::VerifyingKey"]},{"text":"impl<'a, C: Debug + CurveAffine> Debug for PinnedVerificationKey<'a, C> where
    C::Scalar: Debug,
    C::Scalar: Debug
","synthetic":false,"types":["halo2::plonk::PinnedVerificationKey"]},{"text":"impl<C: Debug + CurveAffine> Debug for ProvingKey<C> where
    C::Scalar: Debug,
    C::Scalar: Debug,
    C::Scalar: Debug,
    C::Scalar: Debug
","synthetic":false,"types":["halo2::plonk::ProvingKey"]},{"text":"impl Debug for Error","synthetic":false,"types":["halo2::plonk::Error"]},{"text":"impl<'a, C: Debug + CurveAffine> Debug for MSM<'a, C> where
    C::Scalar: Debug,
    C::Scalar: Debug,
    C::Scalar: Debug,
    C::Scalar: Debug
","synthetic":false,"types":["halo2::poly::commitment::msm::MSM"]},{"text":"impl<'a, C: Debug + CurveAffine, E: Debug + EncodedChallenge<C>> Debug for Guard<'a, C, E> where
    C::Scalar: Debug,
    C::Scalar: Debug
","synthetic":false,"types":["halo2::poly::commitment::verifier::Guard"]},{"text":"impl<C: Debug + CurveAffine, E: Debug + EncodedChallenge<C>> Debug for Accumulator<C, E>","synthetic":false,"types":["halo2::poly::commitment::verifier::Accumulator"]},{"text":"impl<C: Debug + CurveAffine> Debug for Params<C>","synthetic":false,"types":["halo2::poly::commitment::Params"]},{"text":"impl<F: Debug> Debug for Blind<F>","synthetic":false,"types":["halo2::poly::commitment::Blind"]},{"text":"impl<G: Debug + Group> Debug for EvaluationDomain<G> where
    G::Scalar: Debug,
    G::Scalar: Debug,
    G::Scalar: Debug,
    G::Scalar: Debug,
    G::Scalar: Debug,
    G::Scalar: Debug,
    G::Scalar: Debug,
    G::Scalar: Debug,
    G::Scalar: Debug,
    G::Scalar: Debug
","synthetic":false,"types":["halo2::poly::domain::EvaluationDomain"]},{"text":"impl<'a, G: Debug + Group> Debug for PinnedEvaluationDomain<'a, G> where
    G::Scalar: Debug
","synthetic":false,"types":["halo2::poly::domain::PinnedEvaluationDomain"]},{"text":"impl<'a, C: Debug + CurveAffine> Debug for ProverQuery<'a, C> where
    C::Scalar: Debug,
    C::Scalar: Debug,
    C::Scalar: Debug
","synthetic":false,"types":["halo2::poly::multiopen::ProverQuery"]},{"text":"impl<'a, C: Debug + CurveAffine> Debug for VerifierQuery<'a, C> where
    C::Scalar: Debug,
    C::Scalar: Debug
","synthetic":false,"types":["halo2::poly::multiopen::VerifierQuery"]},{"text":"impl Debug for Error","synthetic":false,"types":["halo2::poly::Error"]},{"text":"impl Debug for Coeff","synthetic":false,"types":["halo2::poly::Coeff"]},{"text":"impl Debug for LagrangeCoeff","synthetic":false,"types":["halo2::poly::LagrangeCoeff"]},{"text":"impl Debug for ExtendedLagrangeCoeff","synthetic":false,"types":["halo2::poly::ExtendedLagrangeCoeff"]},{"text":"impl<F: Debug, B: Debug> Debug for Polynomial<F, B>","synthetic":false,"types":["halo2::poly::Polynomial"]},{"text":"impl Debug for Rotation","synthetic":false,"types":["halo2::poly::Rotation"]},{"text":"impl<R: Debug + Read, C: Debug + CurveAffine, E: Debug + EncodedChallenge<C>> Debug for Blake2bRead<R, C, E>","synthetic":false,"types":["halo2::transcript::Blake2bRead"]},{"text":"impl<W: Debug + Write, C: Debug + CurveAffine, E: Debug + EncodedChallenge<C>> Debug for Blake2bWrite<W, C, E>","synthetic":false,"types":["halo2::transcript::Blake2bWrite"]},{"text":"impl<C: Debug + CurveAffine, T: Debug> Debug for ChallengeScalar<C, T> where
    C::Scalar: Debug
","synthetic":false,"types":["halo2::transcript::ChallengeScalar"]},{"text":"impl<C: Debug + CurveAffine> Debug for Challenge255<C>","synthetic":false,"types":["halo2::transcript::Challenge255"]},{"text":"impl Debug for Gate","synthetic":false,"types":["halo2::dev::metadata::Gate"]},{"text":"impl Debug for Constraint","synthetic":false,"types":["halo2::dev::metadata::Constraint"]},{"text":"impl Debug for Region","synthetic":false,"types":["halo2::dev::metadata::Region"]},{"text":"impl Debug for VerifyFailure","synthetic":false,"types":["halo2::dev::VerifyFailure"]},{"text":"impl<F: Debug + Group + Field> Debug for MockProver<F>","synthetic":false,"types":["halo2::dev::MockProver"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/latest/implementors/core/fmt/trait.Display.js b/rustdoc/latest/implementors/core/fmt/trait.Display.js new file mode 100644 index 00000000..69ea5237 --- /dev/null +++ b/rustdoc/latest/implementors/core/fmt/trait.Display.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["halo2"] = [{"text":"impl Display for Gate","synthetic":false,"types":["halo2::dev::metadata::Gate"]},{"text":"impl Display for Constraint","synthetic":false,"types":["halo2::dev::metadata::Constraint"]},{"text":"impl Display for Region","synthetic":false,"types":["halo2::dev::metadata::Region"]},{"text":"impl Display for VerifyFailure","synthetic":false,"types":["halo2::dev::VerifyFailure"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/latest/implementors/core/hash/trait.Hash.js b/rustdoc/latest/implementors/core/hash/trait.Hash.js new file mode 100644 index 00000000..638936e3 --- /dev/null +++ b/rustdoc/latest/implementors/core/hash/trait.Hash.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["halo2"] = [{"text":"impl<C: Hash + ColumnType> Hash for Column<C>","synthetic":false,"types":["halo2::plonk::circuit::Column"]},{"text":"impl Hash for Advice","synthetic":false,"types":["halo2::plonk::circuit::Advice"]},{"text":"impl Hash for Fixed","synthetic":false,"types":["halo2::plonk::circuit::Fixed"]},{"text":"impl Hash for Instance","synthetic":false,"types":["halo2::plonk::circuit::Instance"]},{"text":"impl Hash for Any","synthetic":false,"types":["halo2::plonk::circuit::Any"]},{"text":"impl Hash for Selector","synthetic":false,"types":["halo2::plonk::circuit::Selector"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/latest/implementors/core/marker/trait.Copy.js b/rustdoc/latest/implementors/core/marker/trait.Copy.js new file mode 100644 index 00000000..1e7c2fb5 --- /dev/null +++ b/rustdoc/latest/implementors/core/marker/trait.Copy.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["halo2"] = [{"text":"impl Copy for RegionIndex","synthetic":false,"types":["halo2::circuit::RegionIndex"]},{"text":"impl Copy for RegionStart","synthetic":false,"types":["halo2::circuit::RegionStart"]},{"text":"impl Copy for Cell","synthetic":false,"types":["halo2::circuit::Cell"]},{"text":"impl<C: Copy + ColumnType> Copy for Column<C>","synthetic":false,"types":["halo2::plonk::circuit::Column"]},{"text":"impl Copy for Advice","synthetic":false,"types":["halo2::plonk::circuit::Advice"]},{"text":"impl Copy for Fixed","synthetic":false,"types":["halo2::plonk::circuit::Fixed"]},{"text":"impl Copy for Instance","synthetic":false,"types":["halo2::plonk::circuit::Instance"]},{"text":"impl Copy for Any","synthetic":false,"types":["halo2::plonk::circuit::Any"]},{"text":"impl Copy for Selector","synthetic":false,"types":["halo2::plonk::circuit::Selector"]},{"text":"impl<F: Copy> Copy for Assigned<F>","synthetic":false,"types":["halo2::plonk::circuit::Assigned"]},{"text":"impl<F: Copy> Copy for Blind<F>","synthetic":false,"types":["halo2::poly::commitment::Blind"]},{"text":"impl Copy for Rotation","synthetic":false,"types":["halo2::poly::Rotation"]},{"text":"impl<C: Copy + CurveAffine, T: Copy> Copy for ChallengeScalar<C, T> where
    C::Scalar: Copy
","synthetic":false,"types":["halo2::transcript::ChallengeScalar"]},{"text":"impl<C: Copy + CurveAffine> Copy for Challenge255<C>","synthetic":false,"types":["halo2::transcript::Challenge255"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/latest/implementors/core/marker/trait.Freeze.js b/rustdoc/latest/implementors/core/marker/trait.Freeze.js new file mode 100644 index 00000000..2a13e32a --- /dev/null +++ b/rustdoc/latest/implementors/core/marker/trait.Freeze.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["halo2"] = [{"text":"impl Freeze for SimpleFloorPlanner","synthetic":true,"types":["halo2::circuit::floor_planner::single_pass::SimpleFloorPlanner"]},{"text":"impl Freeze for V1","synthetic":true,"types":["halo2::circuit::floor_planner::v1::V1"]},{"text":"impl<'p, 'a, F, CS> Freeze for V1Pass<'p, 'a, F, CS>","synthetic":true,"types":["halo2::circuit::floor_planner::v1::V1Pass"]},{"text":"impl Freeze for RegionShape","synthetic":true,"types":["halo2::circuit::layouter::RegionShape"]},{"text":"impl Freeze for RegionIndex","synthetic":true,"types":["halo2::circuit::RegionIndex"]},{"text":"impl Freeze for RegionStart","synthetic":true,"types":["halo2::circuit::RegionStart"]},{"text":"impl Freeze for Cell","synthetic":true,"types":["halo2::circuit::Cell"]},{"text":"impl<'r, F> Freeze for Region<'r, F>","synthetic":true,"types":["halo2::circuit::Region"]},{"text":"impl<'a, F, L> Freeze for NamespacedLayouter<'a, F, L>","synthetic":true,"types":["halo2::circuit::NamespacedLayouter"]},{"text":"impl<C> Freeze for Column<C> where
    C: Freeze, 
","synthetic":true,"types":["halo2::plonk::circuit::Column"]},{"text":"impl Freeze for Advice","synthetic":true,"types":["halo2::plonk::circuit::Advice"]},{"text":"impl Freeze for Fixed","synthetic":true,"types":["halo2::plonk::circuit::Fixed"]},{"text":"impl Freeze for Instance","synthetic":true,"types":["halo2::plonk::circuit::Instance"]},{"text":"impl Freeze for Any","synthetic":true,"types":["halo2::plonk::circuit::Any"]},{"text":"impl Freeze for Selector","synthetic":true,"types":["halo2::plonk::circuit::Selector"]},{"text":"impl Freeze for Permutation","synthetic":true,"types":["halo2::plonk::circuit::Permutation"]},{"text":"impl<F> Freeze for Assigned<F> where
    F: Freeze, 
","synthetic":true,"types":["halo2::plonk::circuit::Assigned"]},{"text":"impl<F> Freeze for Expression<F> where
    F: Freeze, 
","synthetic":true,"types":["halo2::plonk::circuit::Expression"]},{"text":"impl<F> Freeze for Constraint<F> where
    F: Freeze, 
","synthetic":true,"types":["halo2::plonk::circuit::Constraint"]},{"text":"impl<F> Freeze for ConstraintSystem<F>","synthetic":true,"types":["halo2::plonk::circuit::ConstraintSystem"]},{"text":"impl<'a, F> Freeze for PinnedConstraintSystem<'a, F>","synthetic":true,"types":["halo2::plonk::circuit::PinnedConstraintSystem"]},{"text":"impl<'a, F> Freeze for VirtualCells<'a, F>","synthetic":true,"types":["halo2::plonk::circuit::VirtualCells"]},{"text":"impl<C> Freeze for VerifyingKey<C> where
    <C as CurveAffine>::ScalarExt: Freeze, 
","synthetic":true,"types":["halo2::plonk::VerifyingKey"]},{"text":"impl<'a, C> Freeze for PinnedVerificationKey<'a, C>","synthetic":true,"types":["halo2::plonk::PinnedVerificationKey"]},{"text":"impl<C> Freeze for ProvingKey<C> where
    <C as CurveAffine>::ScalarExt: Freeze, 
","synthetic":true,"types":["halo2::plonk::ProvingKey"]},{"text":"impl Freeze for Error","synthetic":true,"types":["halo2::plonk::Error"]},{"text":"impl<'a, C> Freeze for MSM<'a, C> where
    <C as CurveAffine>::ScalarExt: Freeze, 
","synthetic":true,"types":["halo2::poly::commitment::msm::MSM"]},{"text":"impl<'a, C, E> Freeze for Guard<'a, C, E> where
    <C as CurveAffine>::ScalarExt: Freeze, 
","synthetic":true,"types":["halo2::poly::commitment::verifier::Guard"]},{"text":"impl<C, E> Freeze for Accumulator<C, E> where
    C: Freeze, 
","synthetic":true,"types":["halo2::poly::commitment::verifier::Accumulator"]},{"text":"impl<C> Freeze for Params<C> where
    C: Freeze, 
","synthetic":true,"types":["halo2::poly::commitment::Params"]},{"text":"impl<F> Freeze for Blind<F> where
    F: Freeze, 
","synthetic":true,"types":["halo2::poly::commitment::Blind"]},{"text":"impl<G> Freeze for EvaluationDomain<G> where
    <G as Group>::Scalar: Freeze, 
","synthetic":true,"types":["halo2::poly::domain::EvaluationDomain"]},{"text":"impl<'a, G> Freeze for PinnedEvaluationDomain<'a, G>","synthetic":true,"types":["halo2::poly::domain::PinnedEvaluationDomain"]},{"text":"impl<'a, C> Freeze for ProverQuery<'a, C> where
    <C as CurveAffine>::ScalarExt: Freeze, 
","synthetic":true,"types":["halo2::poly::multiopen::ProverQuery"]},{"text":"impl<'a, C> Freeze for VerifierQuery<'a, C> where
    <C as CurveAffine>::ScalarExt: Freeze, 
","synthetic":true,"types":["halo2::poly::multiopen::VerifierQuery"]},{"text":"impl Freeze for Error","synthetic":true,"types":["halo2::poly::Error"]},{"text":"impl Freeze for Coeff","synthetic":true,"types":["halo2::poly::Coeff"]},{"text":"impl Freeze for LagrangeCoeff","synthetic":true,"types":["halo2::poly::LagrangeCoeff"]},{"text":"impl Freeze for ExtendedLagrangeCoeff","synthetic":true,"types":["halo2::poly::ExtendedLagrangeCoeff"]},{"text":"impl<F, B> Freeze for Polynomial<F, B>","synthetic":true,"types":["halo2::poly::Polynomial"]},{"text":"impl Freeze for Rotation","synthetic":true,"types":["halo2::poly::Rotation"]},{"text":"impl<R, C, E> Freeze for Blake2bRead<R, C, E> where
    R: Freeze, 
","synthetic":true,"types":["halo2::transcript::Blake2bRead"]},{"text":"impl<W, C, E> Freeze for Blake2bWrite<W, C, E> where
    W: Freeze, 
","synthetic":true,"types":["halo2::transcript::Blake2bWrite"]},{"text":"impl<C, T> Freeze for ChallengeScalar<C, T> where
    <C as CurveAffine>::ScalarExt: Freeze, 
","synthetic":true,"types":["halo2::transcript::ChallengeScalar"]},{"text":"impl<C> Freeze for Challenge255<C>","synthetic":true,"types":["halo2::transcript::Challenge255"]},{"text":"impl Freeze for Gate","synthetic":true,"types":["halo2::dev::metadata::Gate"]},{"text":"impl Freeze for Constraint","synthetic":true,"types":["halo2::dev::metadata::Constraint"]},{"text":"impl Freeze for Region","synthetic":true,"types":["halo2::dev::metadata::Region"]},{"text":"impl Freeze for VerifyFailure","synthetic":true,"types":["halo2::dev::VerifyFailure"]},{"text":"impl<F> Freeze for MockProver<F>","synthetic":true,"types":["halo2::dev::MockProver"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/latest/implementors/core/marker/trait.Send.js b/rustdoc/latest/implementors/core/marker/trait.Send.js new file mode 100644 index 00000000..4de2fcd5 --- /dev/null +++ b/rustdoc/latest/implementors/core/marker/trait.Send.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["halo2"] = [{"text":"impl Send for SimpleFloorPlanner","synthetic":true,"types":["halo2::circuit::floor_planner::single_pass::SimpleFloorPlanner"]},{"text":"impl Send for V1","synthetic":true,"types":["halo2::circuit::floor_planner::v1::V1"]},{"text":"impl<'p, 'a, F, CS> Send for V1Pass<'p, 'a, F, CS> where
    CS: Send
","synthetic":true,"types":["halo2::circuit::floor_planner::v1::V1Pass"]},{"text":"impl Send for RegionShape","synthetic":true,"types":["halo2::circuit::layouter::RegionShape"]},{"text":"impl Send for RegionIndex","synthetic":true,"types":["halo2::circuit::RegionIndex"]},{"text":"impl Send for RegionStart","synthetic":true,"types":["halo2::circuit::RegionStart"]},{"text":"impl Send for Cell","synthetic":true,"types":["halo2::circuit::Cell"]},{"text":"impl<'r, F> !Send for Region<'r, F>","synthetic":true,"types":["halo2::circuit::Region"]},{"text":"impl<'a, F, L> Send for NamespacedLayouter<'a, F, L> where
    L: Send
","synthetic":true,"types":["halo2::circuit::NamespacedLayouter"]},{"text":"impl<C> Send for Column<C> where
    C: Send
","synthetic":true,"types":["halo2::plonk::circuit::Column"]},{"text":"impl Send for Advice","synthetic":true,"types":["halo2::plonk::circuit::Advice"]},{"text":"impl Send for Fixed","synthetic":true,"types":["halo2::plonk::circuit::Fixed"]},{"text":"impl Send for Instance","synthetic":true,"types":["halo2::plonk::circuit::Instance"]},{"text":"impl Send for Any","synthetic":true,"types":["halo2::plonk::circuit::Any"]},{"text":"impl Send for Selector","synthetic":true,"types":["halo2::plonk::circuit::Selector"]},{"text":"impl Send for Permutation","synthetic":true,"types":["halo2::plonk::circuit::Permutation"]},{"text":"impl<F> Send for Assigned<F> where
    F: Send
","synthetic":true,"types":["halo2::plonk::circuit::Assigned"]},{"text":"impl<F> Send for Expression<F> where
    F: Send
","synthetic":true,"types":["halo2::plonk::circuit::Expression"]},{"text":"impl<F> Send for Constraint<F>","synthetic":true,"types":["halo2::plonk::circuit::Constraint"]},{"text":"impl<F> Send for ConstraintSystem<F>","synthetic":true,"types":["halo2::plonk::circuit::ConstraintSystem"]},{"text":"impl<'a, F> Send for PinnedConstraintSystem<'a, F>","synthetic":true,"types":["halo2::plonk::circuit::PinnedConstraintSystem"]},{"text":"impl<'a, F> Send for VirtualCells<'a, F>","synthetic":true,"types":["halo2::plonk::circuit::VirtualCells"]},{"text":"impl<C> Send for VerifyingKey<C>","synthetic":true,"types":["halo2::plonk::VerifyingKey"]},{"text":"impl<'a, C> Send for PinnedVerificationKey<'a, C>","synthetic":true,"types":["halo2::plonk::PinnedVerificationKey"]},{"text":"impl<C> Send for ProvingKey<C>","synthetic":true,"types":["halo2::plonk::ProvingKey"]},{"text":"impl Send for Error","synthetic":true,"types":["halo2::plonk::Error"]},{"text":"impl<'a, C> Send for MSM<'a, C>","synthetic":true,"types":["halo2::poly::commitment::msm::MSM"]},{"text":"impl<'a, C, E> Send for Guard<'a, C, E> where
    E: Send
","synthetic":true,"types":["halo2::poly::commitment::verifier::Guard"]},{"text":"impl<C, E> Send for Accumulator<C, E> where
    E: Send
","synthetic":true,"types":["halo2::poly::commitment::verifier::Accumulator"]},{"text":"impl<C> Send for Params<C>","synthetic":true,"types":["halo2::poly::commitment::Params"]},{"text":"impl<F> Send for Blind<F> where
    F: Send
","synthetic":true,"types":["halo2::poly::commitment::Blind"]},{"text":"impl<G> Send for EvaluationDomain<G>","synthetic":true,"types":["halo2::poly::domain::EvaluationDomain"]},{"text":"impl<'a, G> Send for PinnedEvaluationDomain<'a, G>","synthetic":true,"types":["halo2::poly::domain::PinnedEvaluationDomain"]},{"text":"impl<'a, C> Send for ProverQuery<'a, C>","synthetic":true,"types":["halo2::poly::multiopen::ProverQuery"]},{"text":"impl<'a, C> Send for VerifierQuery<'a, C>","synthetic":true,"types":["halo2::poly::multiopen::VerifierQuery"]},{"text":"impl Send for Error","synthetic":true,"types":["halo2::poly::Error"]},{"text":"impl Send for Coeff","synthetic":true,"types":["halo2::poly::Coeff"]},{"text":"impl Send for LagrangeCoeff","synthetic":true,"types":["halo2::poly::LagrangeCoeff"]},{"text":"impl Send for ExtendedLagrangeCoeff","synthetic":true,"types":["halo2::poly::ExtendedLagrangeCoeff"]},{"text":"impl<F, B> Send for Polynomial<F, B> where
    B: Send,
    F: Send
","synthetic":true,"types":["halo2::poly::Polynomial"]},{"text":"impl Send for Rotation","synthetic":true,"types":["halo2::poly::Rotation"]},{"text":"impl<R, C, E> Send for Blake2bRead<R, C, E> where
    E: Send,
    R: Send
","synthetic":true,"types":["halo2::transcript::Blake2bRead"]},{"text":"impl<W, C, E> Send for Blake2bWrite<W, C, E> where
    E: Send,
    W: Send
","synthetic":true,"types":["halo2::transcript::Blake2bWrite"]},{"text":"impl<C, T> Send for ChallengeScalar<C, T> where
    T: Send
","synthetic":true,"types":["halo2::transcript::ChallengeScalar"]},{"text":"impl<C> Send for Challenge255<C>","synthetic":true,"types":["halo2::transcript::Challenge255"]},{"text":"impl Send for Gate","synthetic":true,"types":["halo2::dev::metadata::Gate"]},{"text":"impl Send for Constraint","synthetic":true,"types":["halo2::dev::metadata::Constraint"]},{"text":"impl Send for Region","synthetic":true,"types":["halo2::dev::metadata::Region"]},{"text":"impl Send for VerifyFailure","synthetic":true,"types":["halo2::dev::VerifyFailure"]},{"text":"impl<F> Send for MockProver<F>","synthetic":true,"types":["halo2::dev::MockProver"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/latest/implementors/core/marker/trait.StructuralEq.js b/rustdoc/latest/implementors/core/marker/trait.StructuralEq.js new file mode 100644 index 00000000..199d0182 --- /dev/null +++ b/rustdoc/latest/implementors/core/marker/trait.StructuralEq.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["halo2"] = [{"text":"impl StructuralEq for RegionStart","synthetic":false,"types":["halo2::circuit::RegionStart"]},{"text":"impl<C: ColumnType> StructuralEq for Column<C>","synthetic":false,"types":["halo2::plonk::circuit::Column"]},{"text":"impl StructuralEq for Advice","synthetic":false,"types":["halo2::plonk::circuit::Advice"]},{"text":"impl StructuralEq for Fixed","synthetic":false,"types":["halo2::plonk::circuit::Fixed"]},{"text":"impl StructuralEq for Instance","synthetic":false,"types":["halo2::plonk::circuit::Instance"]},{"text":"impl StructuralEq for Any","synthetic":false,"types":["halo2::plonk::circuit::Any"]},{"text":"impl StructuralEq for Selector","synthetic":false,"types":["halo2::plonk::circuit::Selector"]},{"text":"impl StructuralEq for Permutation","synthetic":false,"types":["halo2::plonk::circuit::Permutation"]},{"text":"impl<F> StructuralEq for Blind<F>","synthetic":false,"types":["halo2::poly::commitment::Blind"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/latest/implementors/core/marker/trait.StructuralPartialEq.js b/rustdoc/latest/implementors/core/marker/trait.StructuralPartialEq.js new file mode 100644 index 00000000..792e6499 --- /dev/null +++ b/rustdoc/latest/implementors/core/marker/trait.StructuralPartialEq.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["halo2"] = [{"text":"impl StructuralPartialEq for RegionStart","synthetic":false,"types":["halo2::circuit::RegionStart"]},{"text":"impl<C: ColumnType> StructuralPartialEq for Column<C>","synthetic":false,"types":["halo2::plonk::circuit::Column"]},{"text":"impl StructuralPartialEq for Advice","synthetic":false,"types":["halo2::plonk::circuit::Advice"]},{"text":"impl StructuralPartialEq for Fixed","synthetic":false,"types":["halo2::plonk::circuit::Fixed"]},{"text":"impl StructuralPartialEq for Instance","synthetic":false,"types":["halo2::plonk::circuit::Instance"]},{"text":"impl StructuralPartialEq for Any","synthetic":false,"types":["halo2::plonk::circuit::Any"]},{"text":"impl StructuralPartialEq for Selector","synthetic":false,"types":["halo2::plonk::circuit::Selector"]},{"text":"impl StructuralPartialEq for Permutation","synthetic":false,"types":["halo2::plonk::circuit::Permutation"]},{"text":"impl<F> StructuralPartialEq for Blind<F>","synthetic":false,"types":["halo2::poly::commitment::Blind"]},{"text":"impl StructuralPartialEq for Rotation","synthetic":false,"types":["halo2::poly::Rotation"]},{"text":"impl StructuralPartialEq for Gate","synthetic":false,"types":["halo2::dev::metadata::Gate"]},{"text":"impl StructuralPartialEq for Constraint","synthetic":false,"types":["halo2::dev::metadata::Constraint"]},{"text":"impl StructuralPartialEq for Region","synthetic":false,"types":["halo2::dev::metadata::Region"]},{"text":"impl StructuralPartialEq for VerifyFailure","synthetic":false,"types":["halo2::dev::VerifyFailure"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/latest/implementors/core/marker/trait.Sync.js b/rustdoc/latest/implementors/core/marker/trait.Sync.js new file mode 100644 index 00000000..0fca9eab --- /dev/null +++ b/rustdoc/latest/implementors/core/marker/trait.Sync.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["halo2"] = [{"text":"impl Sync for SimpleFloorPlanner","synthetic":true,"types":["halo2::circuit::floor_planner::single_pass::SimpleFloorPlanner"]},{"text":"impl Sync for V1","synthetic":true,"types":["halo2::circuit::floor_planner::v1::V1"]},{"text":"impl<'p, 'a, F, CS> Sync for V1Pass<'p, 'a, F, CS> where
    CS: Sync
","synthetic":true,"types":["halo2::circuit::floor_planner::v1::V1Pass"]},{"text":"impl Sync for RegionShape","synthetic":true,"types":["halo2::circuit::layouter::RegionShape"]},{"text":"impl Sync for RegionIndex","synthetic":true,"types":["halo2::circuit::RegionIndex"]},{"text":"impl Sync for RegionStart","synthetic":true,"types":["halo2::circuit::RegionStart"]},{"text":"impl Sync for Cell","synthetic":true,"types":["halo2::circuit::Cell"]},{"text":"impl<'r, F> !Sync for Region<'r, F>","synthetic":true,"types":["halo2::circuit::Region"]},{"text":"impl<'a, F, L> Sync for NamespacedLayouter<'a, F, L> where
    L: Sync
","synthetic":true,"types":["halo2::circuit::NamespacedLayouter"]},{"text":"impl<C> Sync for Column<C> where
    C: Sync
","synthetic":true,"types":["halo2::plonk::circuit::Column"]},{"text":"impl Sync for Advice","synthetic":true,"types":["halo2::plonk::circuit::Advice"]},{"text":"impl Sync for Fixed","synthetic":true,"types":["halo2::plonk::circuit::Fixed"]},{"text":"impl Sync for Instance","synthetic":true,"types":["halo2::plonk::circuit::Instance"]},{"text":"impl Sync for Any","synthetic":true,"types":["halo2::plonk::circuit::Any"]},{"text":"impl Sync for Selector","synthetic":true,"types":["halo2::plonk::circuit::Selector"]},{"text":"impl Sync for Permutation","synthetic":true,"types":["halo2::plonk::circuit::Permutation"]},{"text":"impl<F> Sync for Assigned<F> where
    F: Sync
","synthetic":true,"types":["halo2::plonk::circuit::Assigned"]},{"text":"impl<F> Sync for Expression<F> where
    F: Sync
","synthetic":true,"types":["halo2::plonk::circuit::Expression"]},{"text":"impl<F> Sync for Constraint<F>","synthetic":true,"types":["halo2::plonk::circuit::Constraint"]},{"text":"impl<F> Sync for ConstraintSystem<F>","synthetic":true,"types":["halo2::plonk::circuit::ConstraintSystem"]},{"text":"impl<'a, F> Sync for PinnedConstraintSystem<'a, F>","synthetic":true,"types":["halo2::plonk::circuit::PinnedConstraintSystem"]},{"text":"impl<'a, F> Sync for VirtualCells<'a, F>","synthetic":true,"types":["halo2::plonk::circuit::VirtualCells"]},{"text":"impl<C> Sync for VerifyingKey<C>","synthetic":true,"types":["halo2::plonk::VerifyingKey"]},{"text":"impl<'a, C> Sync for PinnedVerificationKey<'a, C>","synthetic":true,"types":["halo2::plonk::PinnedVerificationKey"]},{"text":"impl<C> Sync for ProvingKey<C>","synthetic":true,"types":["halo2::plonk::ProvingKey"]},{"text":"impl Sync for Error","synthetic":true,"types":["halo2::plonk::Error"]},{"text":"impl<'a, C> Sync for MSM<'a, C>","synthetic":true,"types":["halo2::poly::commitment::msm::MSM"]},{"text":"impl<'a, C, E> Sync for Guard<'a, C, E> where
    E: Sync
","synthetic":true,"types":["halo2::poly::commitment::verifier::Guard"]},{"text":"impl<C, E> Sync for Accumulator<C, E> where
    E: Sync
","synthetic":true,"types":["halo2::poly::commitment::verifier::Accumulator"]},{"text":"impl<C> Sync for Params<C>","synthetic":true,"types":["halo2::poly::commitment::Params"]},{"text":"impl<F> Sync for Blind<F> where
    F: Sync
","synthetic":true,"types":["halo2::poly::commitment::Blind"]},{"text":"impl<G> Sync for EvaluationDomain<G>","synthetic":true,"types":["halo2::poly::domain::EvaluationDomain"]},{"text":"impl<'a, G> Sync for PinnedEvaluationDomain<'a, G>","synthetic":true,"types":["halo2::poly::domain::PinnedEvaluationDomain"]},{"text":"impl<'a, C> Sync for ProverQuery<'a, C>","synthetic":true,"types":["halo2::poly::multiopen::ProverQuery"]},{"text":"impl<'a, C> Sync for VerifierQuery<'a, C>","synthetic":true,"types":["halo2::poly::multiopen::VerifierQuery"]},{"text":"impl Sync for Error","synthetic":true,"types":["halo2::poly::Error"]},{"text":"impl Sync for Coeff","synthetic":true,"types":["halo2::poly::Coeff"]},{"text":"impl Sync for LagrangeCoeff","synthetic":true,"types":["halo2::poly::LagrangeCoeff"]},{"text":"impl Sync for ExtendedLagrangeCoeff","synthetic":true,"types":["halo2::poly::ExtendedLagrangeCoeff"]},{"text":"impl<F, B> Sync for Polynomial<F, B> where
    B: Sync,
    F: Sync
","synthetic":true,"types":["halo2::poly::Polynomial"]},{"text":"impl Sync for Rotation","synthetic":true,"types":["halo2::poly::Rotation"]},{"text":"impl<R, C, E> Sync for Blake2bRead<R, C, E> where
    E: Sync,
    R: Sync
","synthetic":true,"types":["halo2::transcript::Blake2bRead"]},{"text":"impl<W, C, E> Sync for Blake2bWrite<W, C, E> where
    E: Sync,
    W: Sync
","synthetic":true,"types":["halo2::transcript::Blake2bWrite"]},{"text":"impl<C, T> Sync for ChallengeScalar<C, T> where
    T: Sync
","synthetic":true,"types":["halo2::transcript::ChallengeScalar"]},{"text":"impl<C> Sync for Challenge255<C>","synthetic":true,"types":["halo2::transcript::Challenge255"]},{"text":"impl Sync for Gate","synthetic":true,"types":["halo2::dev::metadata::Gate"]},{"text":"impl Sync for Constraint","synthetic":true,"types":["halo2::dev::metadata::Constraint"]},{"text":"impl Sync for Region","synthetic":true,"types":["halo2::dev::metadata::Region"]},{"text":"impl Sync for VerifyFailure","synthetic":true,"types":["halo2::dev::VerifyFailure"]},{"text":"impl<F> Sync for MockProver<F>","synthetic":true,"types":["halo2::dev::MockProver"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/latest/implementors/core/marker/trait.Unpin.js b/rustdoc/latest/implementors/core/marker/trait.Unpin.js new file mode 100644 index 00000000..7738369c --- /dev/null +++ b/rustdoc/latest/implementors/core/marker/trait.Unpin.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["halo2"] = [{"text":"impl Unpin for SimpleFloorPlanner","synthetic":true,"types":["halo2::circuit::floor_planner::single_pass::SimpleFloorPlanner"]},{"text":"impl Unpin for V1","synthetic":true,"types":["halo2::circuit::floor_planner::v1::V1"]},{"text":"impl<'p, 'a, F, CS> Unpin for V1Pass<'p, 'a, F, CS> where
    'a: 'p, 
","synthetic":true,"types":["halo2::circuit::floor_planner::v1::V1Pass"]},{"text":"impl Unpin for RegionShape","synthetic":true,"types":["halo2::circuit::layouter::RegionShape"]},{"text":"impl Unpin for RegionIndex","synthetic":true,"types":["halo2::circuit::RegionIndex"]},{"text":"impl Unpin for RegionStart","synthetic":true,"types":["halo2::circuit::RegionStart"]},{"text":"impl Unpin for Cell","synthetic":true,"types":["halo2::circuit::Cell"]},{"text":"impl<'r, F> Unpin for Region<'r, F>","synthetic":true,"types":["halo2::circuit::Region"]},{"text":"impl<'a, F, L> Unpin for NamespacedLayouter<'a, F, L> where
    F: Unpin
","synthetic":true,"types":["halo2::circuit::NamespacedLayouter"]},{"text":"impl<C> Unpin for Column<C> where
    C: Unpin
","synthetic":true,"types":["halo2::plonk::circuit::Column"]},{"text":"impl Unpin for Advice","synthetic":true,"types":["halo2::plonk::circuit::Advice"]},{"text":"impl Unpin for Fixed","synthetic":true,"types":["halo2::plonk::circuit::Fixed"]},{"text":"impl Unpin for Instance","synthetic":true,"types":["halo2::plonk::circuit::Instance"]},{"text":"impl Unpin for Any","synthetic":true,"types":["halo2::plonk::circuit::Any"]},{"text":"impl Unpin for Selector","synthetic":true,"types":["halo2::plonk::circuit::Selector"]},{"text":"impl Unpin for Permutation","synthetic":true,"types":["halo2::plonk::circuit::Permutation"]},{"text":"impl<F> Unpin for Assigned<F> where
    F: Unpin
","synthetic":true,"types":["halo2::plonk::circuit::Assigned"]},{"text":"impl<F> Unpin for Expression<F> where
    F: Unpin
","synthetic":true,"types":["halo2::plonk::circuit::Expression"]},{"text":"impl<F> Unpin for Constraint<F> where
    F: Unpin
","synthetic":true,"types":["halo2::plonk::circuit::Constraint"]},{"text":"impl<F> Unpin for ConstraintSystem<F> where
    F: Unpin
","synthetic":true,"types":["halo2::plonk::circuit::ConstraintSystem"]},{"text":"impl<'a, F> Unpin for PinnedConstraintSystem<'a, F>","synthetic":true,"types":["halo2::plonk::circuit::PinnedConstraintSystem"]},{"text":"impl<'a, F> Unpin for VirtualCells<'a, F>","synthetic":true,"types":["halo2::plonk::circuit::VirtualCells"]},{"text":"impl<C> Unpin for VerifyingKey<C> where
    C: Unpin,
    <C as CurveAffine>::ScalarExt: Unpin
","synthetic":true,"types":["halo2::plonk::VerifyingKey"]},{"text":"impl<'a, C> Unpin for PinnedVerificationKey<'a, C>","synthetic":true,"types":["halo2::plonk::PinnedVerificationKey"]},{"text":"impl<C> Unpin for ProvingKey<C> where
    C: Unpin,
    <C as CurveAffine>::ScalarExt: Unpin
","synthetic":true,"types":["halo2::plonk::ProvingKey"]},{"text":"impl Unpin for Error","synthetic":true,"types":["halo2::plonk::Error"]},{"text":"impl<'a, C> Unpin for MSM<'a, C> where
    C: Unpin,
    <C as CurveAffine>::ScalarExt: Unpin
","synthetic":true,"types":["halo2::poly::commitment::msm::MSM"]},{"text":"impl<'a, C, E> Unpin for Guard<'a, C, E> where
    C: Unpin,
    E: Unpin,
    <C as CurveAffine>::ScalarExt: Unpin
","synthetic":true,"types":["halo2::poly::commitment::verifier::Guard"]},{"text":"impl<C, E> Unpin for Accumulator<C, E> where
    C: Unpin,
    E: Unpin
","synthetic":true,"types":["halo2::poly::commitment::verifier::Accumulator"]},{"text":"impl<C> Unpin for Params<C> where
    C: Unpin
","synthetic":true,"types":["halo2::poly::commitment::Params"]},{"text":"impl<F> Unpin for Blind<F> where
    F: Unpin
","synthetic":true,"types":["halo2::poly::commitment::Blind"]},{"text":"impl<G> Unpin for EvaluationDomain<G> where
    <G as Group>::Scalar: Unpin
","synthetic":true,"types":["halo2::poly::domain::EvaluationDomain"]},{"text":"impl<'a, G> Unpin for PinnedEvaluationDomain<'a, G>","synthetic":true,"types":["halo2::poly::domain::PinnedEvaluationDomain"]},{"text":"impl<'a, C> Unpin for ProverQuery<'a, C> where
    <C as CurveAffine>::ScalarExt: Unpin
","synthetic":true,"types":["halo2::poly::multiopen::ProverQuery"]},{"text":"impl<'a, C> Unpin for VerifierQuery<'a, C> where
    <C as CurveAffine>::ScalarExt: Unpin
","synthetic":true,"types":["halo2::poly::multiopen::VerifierQuery"]},{"text":"impl Unpin for Error","synthetic":true,"types":["halo2::poly::Error"]},{"text":"impl Unpin for Coeff","synthetic":true,"types":["halo2::poly::Coeff"]},{"text":"impl Unpin for LagrangeCoeff","synthetic":true,"types":["halo2::poly::LagrangeCoeff"]},{"text":"impl Unpin for ExtendedLagrangeCoeff","synthetic":true,"types":["halo2::poly::ExtendedLagrangeCoeff"]},{"text":"impl<F, B> Unpin for Polynomial<F, B> where
    B: Unpin,
    F: Unpin
","synthetic":true,"types":["halo2::poly::Polynomial"]},{"text":"impl Unpin for Rotation","synthetic":true,"types":["halo2::poly::Rotation"]},{"text":"impl<R, C, E> Unpin for Blake2bRead<R, C, E> where
    C: Unpin,
    E: Unpin,
    R: Unpin
","synthetic":true,"types":["halo2::transcript::Blake2bRead"]},{"text":"impl<W, C, E> Unpin for Blake2bWrite<W, C, E> where
    C: Unpin,
    E: Unpin,
    W: Unpin
","synthetic":true,"types":["halo2::transcript::Blake2bWrite"]},{"text":"impl<C, T> Unpin for ChallengeScalar<C, T> where
    T: Unpin,
    <C as CurveAffine>::ScalarExt: Unpin
","synthetic":true,"types":["halo2::transcript::ChallengeScalar"]},{"text":"impl<C> Unpin for Challenge255<C> where
    C: Unpin
","synthetic":true,"types":["halo2::transcript::Challenge255"]},{"text":"impl Unpin for Gate","synthetic":true,"types":["halo2::dev::metadata::Gate"]},{"text":"impl Unpin for Constraint","synthetic":true,"types":["halo2::dev::metadata::Constraint"]},{"text":"impl Unpin for Region","synthetic":true,"types":["halo2::dev::metadata::Region"]},{"text":"impl Unpin for VerifyFailure","synthetic":true,"types":["halo2::dev::VerifyFailure"]},{"text":"impl<F> Unpin for MockProver<F> where
    F: Unpin
","synthetic":true,"types":["halo2::dev::MockProver"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/latest/implementors/core/ops/arith/trait.Add.js b/rustdoc/latest/implementors/core/ops/arith/trait.Add.js new file mode 100644 index 00000000..9cb59040 --- /dev/null +++ b/rustdoc/latest/implementors/core/ops/arith/trait.Add.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["halo2"] = [{"text":"impl<F: Field> Add<Assigned<F>> for Assigned<F>","synthetic":false,"types":["halo2::plonk::circuit::Assigned"]},{"text":"impl<F: Field> Add<F> for Assigned<F>","synthetic":false,"types":["halo2::plonk::circuit::Assigned"]},{"text":"impl<F> Add<Expression<F>> for Expression<F>","synthetic":false,"types":["halo2::plonk::circuit::Expression"]},{"text":"impl<F: FieldExt> Add<Blind<F>> for Blind<F>","synthetic":false,"types":["halo2::poly::commitment::Blind"]},{"text":"impl<'a, F: Field, B: Basis> Add<&'a Polynomial<F, B>> for Polynomial<F, B>","synthetic":false,"types":["halo2::poly::Polynomial"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/latest/implementors/core/ops/arith/trait.AddAssign.js b/rustdoc/latest/implementors/core/ops/arith/trait.AddAssign.js new file mode 100644 index 00000000..803930f4 --- /dev/null +++ b/rustdoc/latest/implementors/core/ops/arith/trait.AddAssign.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["halo2"] = [{"text":"impl<F: FieldExt> AddAssign<Blind<F>> for Blind<F>","synthetic":false,"types":["halo2::poly::commitment::Blind"]},{"text":"impl<F: FieldExt> AddAssign<F> for Blind<F>","synthetic":false,"types":["halo2::poly::commitment::Blind"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/latest/implementors/core/ops/arith/trait.Mul.js b/rustdoc/latest/implementors/core/ops/arith/trait.Mul.js new file mode 100644 index 00000000..a839b73c --- /dev/null +++ b/rustdoc/latest/implementors/core/ops/arith/trait.Mul.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["halo2"] = [{"text":"impl<F: Field> Mul<Assigned<F>> for Assigned<F>","synthetic":false,"types":["halo2::plonk::circuit::Assigned"]},{"text":"impl<F: Field> Mul<F> for Assigned<F>","synthetic":false,"types":["halo2::plonk::circuit::Assigned"]},{"text":"impl<F> Mul<Expression<F>> for Expression<F>","synthetic":false,"types":["halo2::plonk::circuit::Expression"]},{"text":"impl<F> Mul<F> for Expression<F>","synthetic":false,"types":["halo2::plonk::circuit::Expression"]},{"text":"impl<F: FieldExt> Mul<Blind<F>> for Blind<F>","synthetic":false,"types":["halo2::poly::commitment::Blind"]},{"text":"impl<'a, F: Field> Mul<&'a Polynomial<F, ExtendedLagrangeCoeff>> for Polynomial<F, ExtendedLagrangeCoeff>","synthetic":false,"types":["halo2::poly::Polynomial"]},{"text":"impl<'a, F: Field, B: Basis> Mul<F> for Polynomial<F, B>","synthetic":false,"types":["halo2::poly::Polynomial"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/latest/implementors/core/ops/arith/trait.MulAssign.js b/rustdoc/latest/implementors/core/ops/arith/trait.MulAssign.js new file mode 100644 index 00000000..46ed4eaf --- /dev/null +++ b/rustdoc/latest/implementors/core/ops/arith/trait.MulAssign.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["halo2"] = [{"text":"impl<F: FieldExt> MulAssign<Blind<F>> for Blind<F>","synthetic":false,"types":["halo2::poly::commitment::Blind"]},{"text":"impl<F: FieldExt> MulAssign<F> for Blind<F>","synthetic":false,"types":["halo2::poly::commitment::Blind"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/latest/implementors/core/ops/arith/trait.Neg.js b/rustdoc/latest/implementors/core/ops/arith/trait.Neg.js new file mode 100644 index 00000000..e0224420 --- /dev/null +++ b/rustdoc/latest/implementors/core/ops/arith/trait.Neg.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["halo2"] = [{"text":"impl<F: Field> Neg for Assigned<F>","synthetic":false,"types":["halo2::plonk::circuit::Assigned"]},{"text":"impl<F: Field> Neg for Expression<F>","synthetic":false,"types":["halo2::plonk::circuit::Expression"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/latest/implementors/core/ops/arith/trait.Sub.js b/rustdoc/latest/implementors/core/ops/arith/trait.Sub.js new file mode 100644 index 00000000..36024232 --- /dev/null +++ b/rustdoc/latest/implementors/core/ops/arith/trait.Sub.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["halo2"] = [{"text":"impl<F: Field> Sub<Assigned<F>> for Assigned<F>","synthetic":false,"types":["halo2::plonk::circuit::Assigned"]},{"text":"impl<F: Field> Sub<F> for Assigned<F>","synthetic":false,"types":["halo2::plonk::circuit::Assigned"]},{"text":"impl<F: Field> Sub<Expression<F>> for Expression<F>","synthetic":false,"types":["halo2::plonk::circuit::Expression"]},{"text":"impl<'a, F: Field, B: Basis> Sub<&'a Polynomial<F, B>> for Polynomial<F, B>","synthetic":false,"types":["halo2::poly::Polynomial"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/latest/implementors/core/ops/deref/trait.Deref.js b/rustdoc/latest/implementors/core/ops/deref/trait.Deref.js new file mode 100644 index 00000000..e9c8c0dc --- /dev/null +++ b/rustdoc/latest/implementors/core/ops/deref/trait.Deref.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["halo2"] = [{"text":"impl Deref for RegionIndex","synthetic":false,"types":["halo2::circuit::RegionIndex"]},{"text":"impl Deref for RegionStart","synthetic":false,"types":["halo2::circuit::RegionStart"]},{"text":"impl<F, B> Deref for Polynomial<F, B>","synthetic":false,"types":["halo2::poly::Polynomial"]},{"text":"impl<C: CurveAffine, T> Deref for ChallengeScalar<C, T>","synthetic":false,"types":["halo2::transcript::ChallengeScalar"]},{"text":"impl<C: CurveAffine> Deref for Challenge255<C>","synthetic":false,"types":["halo2::transcript::Challenge255"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/latest/implementors/core/ops/deref/trait.DerefMut.js b/rustdoc/latest/implementors/core/ops/deref/trait.DerefMut.js new file mode 100644 index 00000000..d9c0326e --- /dev/null +++ b/rustdoc/latest/implementors/core/ops/deref/trait.DerefMut.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["halo2"] = [{"text":"impl<F, B> DerefMut for Polynomial<F, B>","synthetic":false,"types":["halo2::poly::Polynomial"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/latest/implementors/core/ops/drop/trait.Drop.js b/rustdoc/latest/implementors/core/ops/drop/trait.Drop.js new file mode 100644 index 00000000..3cd03710 --- /dev/null +++ b/rustdoc/latest/implementors/core/ops/drop/trait.Drop.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["halo2"] = [{"text":"impl<'a, F: Field, L: Layouter<F> + 'a> Drop for NamespacedLayouter<'a, F, L>","synthetic":false,"types":["halo2::circuit::NamespacedLayouter"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/latest/implementors/core/ops/index/trait.Index.js b/rustdoc/latest/implementors/core/ops/index/trait.Index.js new file mode 100644 index 00000000..37bad446 --- /dev/null +++ b/rustdoc/latest/implementors/core/ops/index/trait.Index.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["halo2"] = [{"text":"impl<F, B> Index<usize> for Polynomial<F, B>","synthetic":false,"types":["halo2::poly::Polynomial"]},{"text":"impl<F, B> Index<RangeFrom<usize>> for Polynomial<F, B>","synthetic":false,"types":["halo2::poly::Polynomial"]},{"text":"impl<F, B> Index<RangeFull> for Polynomial<F, B>","synthetic":false,"types":["halo2::poly::Polynomial"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/latest/implementors/core/ops/index/trait.IndexMut.js b/rustdoc/latest/implementors/core/ops/index/trait.IndexMut.js new file mode 100644 index 00000000..2cf170ff --- /dev/null +++ b/rustdoc/latest/implementors/core/ops/index/trait.IndexMut.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["halo2"] = [{"text":"impl<F, B> IndexMut<usize> for Polynomial<F, B>","synthetic":false,"types":["halo2::poly::Polynomial"]},{"text":"impl<F, B> IndexMut<RangeFrom<usize>> for Polynomial<F, B>","synthetic":false,"types":["halo2::poly::Polynomial"]},{"text":"impl<F, B> IndexMut<RangeFull> for Polynomial<F, B>","synthetic":false,"types":["halo2::poly::Polynomial"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/latest/implementors/halo2/arithmetic/trait.BatchInvert.js b/rustdoc/latest/implementors/halo2/arithmetic/trait.BatchInvert.js new file mode 100644 index 00000000..fb673cff --- /dev/null +++ b/rustdoc/latest/implementors/halo2/arithmetic/trait.BatchInvert.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["halo2"] = []; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/latest/implementors/halo2/arithmetic/trait.CurveAffine.js b/rustdoc/latest/implementors/halo2/arithmetic/trait.CurveAffine.js new file mode 100644 index 00000000..fb673cff --- /dev/null +++ b/rustdoc/latest/implementors/halo2/arithmetic/trait.CurveAffine.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["halo2"] = []; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/latest/implementors/halo2/arithmetic/trait.CurveExt.js b/rustdoc/latest/implementors/halo2/arithmetic/trait.CurveExt.js new file mode 100644 index 00000000..fb673cff --- /dev/null +++ b/rustdoc/latest/implementors/halo2/arithmetic/trait.CurveExt.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["halo2"] = []; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/latest/implementors/halo2/arithmetic/trait.Field.js b/rustdoc/latest/implementors/halo2/arithmetic/trait.Field.js new file mode 100644 index 00000000..fb673cff --- /dev/null +++ b/rustdoc/latest/implementors/halo2/arithmetic/trait.Field.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["halo2"] = []; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/latest/implementors/halo2/arithmetic/trait.FieldExt.js b/rustdoc/latest/implementors/halo2/arithmetic/trait.FieldExt.js new file mode 100644 index 00000000..fb673cff --- /dev/null +++ b/rustdoc/latest/implementors/halo2/arithmetic/trait.FieldExt.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["halo2"] = []; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/latest/implementors/halo2/arithmetic/trait.Group.js b/rustdoc/latest/implementors/halo2/arithmetic/trait.Group.js new file mode 100644 index 00000000..fb673cff --- /dev/null +++ b/rustdoc/latest/implementors/halo2/arithmetic/trait.Group.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["halo2"] = []; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/latest/implementors/halo2/circuit/layouter/trait.RegionLayouter.js b/rustdoc/latest/implementors/halo2/circuit/layouter/trait.RegionLayouter.js new file mode 100644 index 00000000..fb673cff --- /dev/null +++ b/rustdoc/latest/implementors/halo2/circuit/layouter/trait.RegionLayouter.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["halo2"] = []; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/latest/implementors/halo2/circuit/trait.Layouter.js b/rustdoc/latest/implementors/halo2/circuit/trait.Layouter.js new file mode 100644 index 00000000..fb673cff --- /dev/null +++ b/rustdoc/latest/implementors/halo2/circuit/trait.Layouter.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["halo2"] = []; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/latest/implementors/halo2/plonk/trait.Assignment.js b/rustdoc/latest/implementors/halo2/plonk/trait.Assignment.js new file mode 100644 index 00000000..fb673cff --- /dev/null +++ b/rustdoc/latest/implementors/halo2/plonk/trait.Assignment.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["halo2"] = []; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/latest/implementors/halo2/plonk/trait.ColumnType.js b/rustdoc/latest/implementors/halo2/plonk/trait.ColumnType.js new file mode 100644 index 00000000..fb673cff --- /dev/null +++ b/rustdoc/latest/implementors/halo2/plonk/trait.ColumnType.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["halo2"] = []; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/latest/implementors/halo2/plonk/trait.FloorPlanner.js b/rustdoc/latest/implementors/halo2/plonk/trait.FloorPlanner.js new file mode 100644 index 00000000..fb673cff --- /dev/null +++ b/rustdoc/latest/implementors/halo2/plonk/trait.FloorPlanner.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["halo2"] = []; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/latest/implementors/halo2/poly/trait.Basis.js b/rustdoc/latest/implementors/halo2/poly/trait.Basis.js new file mode 100644 index 00000000..fb673cff --- /dev/null +++ b/rustdoc/latest/implementors/halo2/poly/trait.Basis.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["halo2"] = []; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/latest/implementors/halo2/transcript/trait.EncodedChallenge.js b/rustdoc/latest/implementors/halo2/transcript/trait.EncodedChallenge.js new file mode 100644 index 00000000..fb673cff --- /dev/null +++ b/rustdoc/latest/implementors/halo2/transcript/trait.EncodedChallenge.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["halo2"] = []; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/latest/implementors/halo2/transcript/trait.Transcript.js b/rustdoc/latest/implementors/halo2/transcript/trait.Transcript.js new file mode 100644 index 00000000..fb673cff --- /dev/null +++ b/rustdoc/latest/implementors/halo2/transcript/trait.Transcript.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["halo2"] = []; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/latest/implementors/halo2/transcript/trait.TranscriptRead.js b/rustdoc/latest/implementors/halo2/transcript/trait.TranscriptRead.js new file mode 100644 index 00000000..fb673cff --- /dev/null +++ b/rustdoc/latest/implementors/halo2/transcript/trait.TranscriptRead.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["halo2"] = []; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/latest/implementors/halo2/transcript/trait.TranscriptWrite.js b/rustdoc/latest/implementors/halo2/transcript/trait.TranscriptWrite.js new file mode 100644 index 00000000..fb673cff --- /dev/null +++ b/rustdoc/latest/implementors/halo2/transcript/trait.TranscriptWrite.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["halo2"] = []; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/latest/implementors/std/panic/trait.RefUnwindSafe.js b/rustdoc/latest/implementors/std/panic/trait.RefUnwindSafe.js new file mode 100644 index 00000000..31349cc5 --- /dev/null +++ b/rustdoc/latest/implementors/std/panic/trait.RefUnwindSafe.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["halo2"] = [{"text":"impl RefUnwindSafe for SimpleFloorPlanner","synthetic":true,"types":["halo2::circuit::floor_planner::single_pass::SimpleFloorPlanner"]},{"text":"impl RefUnwindSafe for V1","synthetic":true,"types":["halo2::circuit::floor_planner::v1::V1"]},{"text":"impl<'p, 'a, F, CS> RefUnwindSafe for V1Pass<'p, 'a, F, CS> where
    CS: RefUnwindSafe,
    F: RefUnwindSafe
","synthetic":true,"types":["halo2::circuit::floor_planner::v1::V1Pass"]},{"text":"impl RefUnwindSafe for RegionShape","synthetic":true,"types":["halo2::circuit::layouter::RegionShape"]},{"text":"impl RefUnwindSafe for RegionIndex","synthetic":true,"types":["halo2::circuit::RegionIndex"]},{"text":"impl RefUnwindSafe for RegionStart","synthetic":true,"types":["halo2::circuit::RegionStart"]},{"text":"impl RefUnwindSafe for Cell","synthetic":true,"types":["halo2::circuit::Cell"]},{"text":"impl<'r, F> !RefUnwindSafe for Region<'r, F>","synthetic":true,"types":["halo2::circuit::Region"]},{"text":"impl<'a, F, L> RefUnwindSafe for NamespacedLayouter<'a, F, L> where
    F: RefUnwindSafe,
    L: RefUnwindSafe
","synthetic":true,"types":["halo2::circuit::NamespacedLayouter"]},{"text":"impl<C> RefUnwindSafe for Column<C> where
    C: RefUnwindSafe
","synthetic":true,"types":["halo2::plonk::circuit::Column"]},{"text":"impl RefUnwindSafe for Advice","synthetic":true,"types":["halo2::plonk::circuit::Advice"]},{"text":"impl RefUnwindSafe for Fixed","synthetic":true,"types":["halo2::plonk::circuit::Fixed"]},{"text":"impl RefUnwindSafe for Instance","synthetic":true,"types":["halo2::plonk::circuit::Instance"]},{"text":"impl RefUnwindSafe for Any","synthetic":true,"types":["halo2::plonk::circuit::Any"]},{"text":"impl RefUnwindSafe for Selector","synthetic":true,"types":["halo2::plonk::circuit::Selector"]},{"text":"impl RefUnwindSafe for Permutation","synthetic":true,"types":["halo2::plonk::circuit::Permutation"]},{"text":"impl<F> RefUnwindSafe for Assigned<F> where
    F: RefUnwindSafe
","synthetic":true,"types":["halo2::plonk::circuit::Assigned"]},{"text":"impl<F> RefUnwindSafe for Expression<F> where
    F: RefUnwindSafe
","synthetic":true,"types":["halo2::plonk::circuit::Expression"]},{"text":"impl<F> RefUnwindSafe for Constraint<F> where
    F: RefUnwindSafe
","synthetic":true,"types":["halo2::plonk::circuit::Constraint"]},{"text":"impl<F> RefUnwindSafe for ConstraintSystem<F> where
    F: RefUnwindSafe
","synthetic":true,"types":["halo2::plonk::circuit::ConstraintSystem"]},{"text":"impl<'a, F> RefUnwindSafe for PinnedConstraintSystem<'a, F> where
    F: RefUnwindSafe
","synthetic":true,"types":["halo2::plonk::circuit::PinnedConstraintSystem"]},{"text":"impl<'a, F> RefUnwindSafe for VirtualCells<'a, F> where
    F: RefUnwindSafe
","synthetic":true,"types":["halo2::plonk::circuit::VirtualCells"]},{"text":"impl<C> RefUnwindSafe for VerifyingKey<C> where
    C: RefUnwindSafe,
    <C as CurveAffine>::ScalarExt: RefUnwindSafe
","synthetic":true,"types":["halo2::plonk::VerifyingKey"]},{"text":"impl<'a, C> RefUnwindSafe for PinnedVerificationKey<'a, C> where
    C: RefUnwindSafe,
    <C as CurveAffine>::ScalarExt: RefUnwindSafe
","synthetic":true,"types":["halo2::plonk::PinnedVerificationKey"]},{"text":"impl<C> RefUnwindSafe for ProvingKey<C> where
    C: RefUnwindSafe,
    <C as CurveAffine>::ScalarExt: RefUnwindSafe
","synthetic":true,"types":["halo2::plonk::ProvingKey"]},{"text":"impl RefUnwindSafe for Error","synthetic":true,"types":["halo2::plonk::Error"]},{"text":"impl<'a, C> RefUnwindSafe for MSM<'a, C> where
    C: RefUnwindSafe,
    <C as CurveAffine>::ScalarExt: RefUnwindSafe
","synthetic":true,"types":["halo2::poly::commitment::msm::MSM"]},{"text":"impl<'a, C, E> RefUnwindSafe for Guard<'a, C, E> where
    C: RefUnwindSafe,
    E: RefUnwindSafe,
    <C as CurveAffine>::ScalarExt: RefUnwindSafe
","synthetic":true,"types":["halo2::poly::commitment::verifier::Guard"]},{"text":"impl<C, E> RefUnwindSafe for Accumulator<C, E> where
    C: RefUnwindSafe,
    E: RefUnwindSafe
","synthetic":true,"types":["halo2::poly::commitment::verifier::Accumulator"]},{"text":"impl<C> RefUnwindSafe for Params<C> where
    C: RefUnwindSafe
","synthetic":true,"types":["halo2::poly::commitment::Params"]},{"text":"impl<F> RefUnwindSafe for Blind<F> where
    F: RefUnwindSafe
","synthetic":true,"types":["halo2::poly::commitment::Blind"]},{"text":"impl<G> RefUnwindSafe for EvaluationDomain<G> where
    <G as Group>::Scalar: RefUnwindSafe
","synthetic":true,"types":["halo2::poly::domain::EvaluationDomain"]},{"text":"impl<'a, G> RefUnwindSafe for PinnedEvaluationDomain<'a, G> where
    <G as Group>::Scalar: RefUnwindSafe
","synthetic":true,"types":["halo2::poly::domain::PinnedEvaluationDomain"]},{"text":"impl<'a, C> RefUnwindSafe for ProverQuery<'a, C> where
    <C as CurveAffine>::ScalarExt: RefUnwindSafe
","synthetic":true,"types":["halo2::poly::multiopen::ProverQuery"]},{"text":"impl<'a, C> RefUnwindSafe for VerifierQuery<'a, C> where
    C: RefUnwindSafe,
    <C as CurveAffine>::ScalarExt: RefUnwindSafe
","synthetic":true,"types":["halo2::poly::multiopen::VerifierQuery"]},{"text":"impl RefUnwindSafe for Error","synthetic":true,"types":["halo2::poly::Error"]},{"text":"impl RefUnwindSafe for Coeff","synthetic":true,"types":["halo2::poly::Coeff"]},{"text":"impl RefUnwindSafe for LagrangeCoeff","synthetic":true,"types":["halo2::poly::LagrangeCoeff"]},{"text":"impl RefUnwindSafe for ExtendedLagrangeCoeff","synthetic":true,"types":["halo2::poly::ExtendedLagrangeCoeff"]},{"text":"impl<F, B> RefUnwindSafe for Polynomial<F, B> where
    B: RefUnwindSafe,
    F: RefUnwindSafe
","synthetic":true,"types":["halo2::poly::Polynomial"]},{"text":"impl RefUnwindSafe for Rotation","synthetic":true,"types":["halo2::poly::Rotation"]},{"text":"impl<R, C, E> RefUnwindSafe for Blake2bRead<R, C, E> where
    C: RefUnwindSafe,
    E: RefUnwindSafe,
    R: RefUnwindSafe
","synthetic":true,"types":["halo2::transcript::Blake2bRead"]},{"text":"impl<W, C, E> RefUnwindSafe for Blake2bWrite<W, C, E> where
    C: RefUnwindSafe,
    E: RefUnwindSafe,
    W: RefUnwindSafe
","synthetic":true,"types":["halo2::transcript::Blake2bWrite"]},{"text":"impl<C, T> RefUnwindSafe for ChallengeScalar<C, T> where
    T: RefUnwindSafe,
    <C as CurveAffine>::ScalarExt: RefUnwindSafe
","synthetic":true,"types":["halo2::transcript::ChallengeScalar"]},{"text":"impl<C> RefUnwindSafe for Challenge255<C> where
    C: RefUnwindSafe
","synthetic":true,"types":["halo2::transcript::Challenge255"]},{"text":"impl RefUnwindSafe for Gate","synthetic":true,"types":["halo2::dev::metadata::Gate"]},{"text":"impl RefUnwindSafe for Constraint","synthetic":true,"types":["halo2::dev::metadata::Constraint"]},{"text":"impl RefUnwindSafe for Region","synthetic":true,"types":["halo2::dev::metadata::Region"]},{"text":"impl RefUnwindSafe for VerifyFailure","synthetic":true,"types":["halo2::dev::VerifyFailure"]},{"text":"impl<F> RefUnwindSafe for MockProver<F> where
    F: RefUnwindSafe
","synthetic":true,"types":["halo2::dev::MockProver"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/latest/implementors/std/panic/trait.UnwindSafe.js b/rustdoc/latest/implementors/std/panic/trait.UnwindSafe.js new file mode 100644 index 00000000..47db02af --- /dev/null +++ b/rustdoc/latest/implementors/std/panic/trait.UnwindSafe.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["halo2"] = [{"text":"impl UnwindSafe for SimpleFloorPlanner","synthetic":true,"types":["halo2::circuit::floor_planner::single_pass::SimpleFloorPlanner"]},{"text":"impl UnwindSafe for V1","synthetic":true,"types":["halo2::circuit::floor_planner::v1::V1"]},{"text":"impl<'p, 'a, F, CS> !UnwindSafe for V1Pass<'p, 'a, F, CS>","synthetic":true,"types":["halo2::circuit::floor_planner::v1::V1Pass"]},{"text":"impl UnwindSafe for RegionShape","synthetic":true,"types":["halo2::circuit::layouter::RegionShape"]},{"text":"impl UnwindSafe for RegionIndex","synthetic":true,"types":["halo2::circuit::RegionIndex"]},{"text":"impl UnwindSafe for RegionStart","synthetic":true,"types":["halo2::circuit::RegionStart"]},{"text":"impl UnwindSafe for Cell","synthetic":true,"types":["halo2::circuit::Cell"]},{"text":"impl<'r, F> !UnwindSafe for Region<'r, F>","synthetic":true,"types":["halo2::circuit::Region"]},{"text":"impl<'a, F, L> !UnwindSafe for NamespacedLayouter<'a, F, L>","synthetic":true,"types":["halo2::circuit::NamespacedLayouter"]},{"text":"impl<C> UnwindSafe for Column<C> where
    C: UnwindSafe
","synthetic":true,"types":["halo2::plonk::circuit::Column"]},{"text":"impl UnwindSafe for Advice","synthetic":true,"types":["halo2::plonk::circuit::Advice"]},{"text":"impl UnwindSafe for Fixed","synthetic":true,"types":["halo2::plonk::circuit::Fixed"]},{"text":"impl UnwindSafe for Instance","synthetic":true,"types":["halo2::plonk::circuit::Instance"]},{"text":"impl UnwindSafe for Any","synthetic":true,"types":["halo2::plonk::circuit::Any"]},{"text":"impl UnwindSafe for Selector","synthetic":true,"types":["halo2::plonk::circuit::Selector"]},{"text":"impl UnwindSafe for Permutation","synthetic":true,"types":["halo2::plonk::circuit::Permutation"]},{"text":"impl<F> UnwindSafe for Assigned<F> where
    F: UnwindSafe
","synthetic":true,"types":["halo2::plonk::circuit::Assigned"]},{"text":"impl<F> UnwindSafe for Expression<F> where
    F: UnwindSafe
","synthetic":true,"types":["halo2::plonk::circuit::Expression"]},{"text":"impl<F> UnwindSafe for Constraint<F> where
    F: UnwindSafe
","synthetic":true,"types":["halo2::plonk::circuit::Constraint"]},{"text":"impl<F> UnwindSafe for ConstraintSystem<F> where
    F: UnwindSafe
","synthetic":true,"types":["halo2::plonk::circuit::ConstraintSystem"]},{"text":"impl<'a, F> UnwindSafe for PinnedConstraintSystem<'a, F> where
    F: RefUnwindSafe
","synthetic":true,"types":["halo2::plonk::circuit::PinnedConstraintSystem"]},{"text":"impl<'a, F> !UnwindSafe for VirtualCells<'a, F>","synthetic":true,"types":["halo2::plonk::circuit::VirtualCells"]},{"text":"impl<C> UnwindSafe for VerifyingKey<C> where
    C: UnwindSafe,
    <C as CurveAffine>::ScalarExt: UnwindSafe
","synthetic":true,"types":["halo2::plonk::VerifyingKey"]},{"text":"impl<'a, C> UnwindSafe for PinnedVerificationKey<'a, C> where
    C: RefUnwindSafe,
    <C as CurveAffine>::ScalarExt: RefUnwindSafe
","synthetic":true,"types":["halo2::plonk::PinnedVerificationKey"]},{"text":"impl<C> UnwindSafe for ProvingKey<C> where
    C: UnwindSafe,
    <C as CurveAffine>::ScalarExt: UnwindSafe
","synthetic":true,"types":["halo2::plonk::ProvingKey"]},{"text":"impl UnwindSafe for Error","synthetic":true,"types":["halo2::plonk::Error"]},{"text":"impl<'a, C> UnwindSafe for MSM<'a, C> where
    C: RefUnwindSafe + UnwindSafe,
    <C as CurveAffine>::ScalarExt: UnwindSafe
","synthetic":true,"types":["halo2::poly::commitment::msm::MSM"]},{"text":"impl<'a, C, E> UnwindSafe for Guard<'a, C, E> where
    C: RefUnwindSafe + UnwindSafe,
    E: UnwindSafe,
    <C as CurveAffine>::ScalarExt: UnwindSafe
","synthetic":true,"types":["halo2::poly::commitment::verifier::Guard"]},{"text":"impl<C, E> UnwindSafe for Accumulator<C, E> where
    C: UnwindSafe,
    E: UnwindSafe
","synthetic":true,"types":["halo2::poly::commitment::verifier::Accumulator"]},{"text":"impl<C> UnwindSafe for Params<C> where
    C: UnwindSafe
","synthetic":true,"types":["halo2::poly::commitment::Params"]},{"text":"impl<F> UnwindSafe for Blind<F> where
    F: UnwindSafe
","synthetic":true,"types":["halo2::poly::commitment::Blind"]},{"text":"impl<G> UnwindSafe for EvaluationDomain<G> where
    <G as Group>::Scalar: UnwindSafe
","synthetic":true,"types":["halo2::poly::domain::EvaluationDomain"]},{"text":"impl<'a, G> UnwindSafe for PinnedEvaluationDomain<'a, G> where
    <G as Group>::Scalar: RefUnwindSafe
","synthetic":true,"types":["halo2::poly::domain::PinnedEvaluationDomain"]},{"text":"impl<'a, C> UnwindSafe for ProverQuery<'a, C> where
    <C as CurveAffine>::ScalarExt: RefUnwindSafe + UnwindSafe
","synthetic":true,"types":["halo2::poly::multiopen::ProverQuery"]},{"text":"impl<'a, C> UnwindSafe for VerifierQuery<'a, C> where
    C: RefUnwindSafe,
    <C as CurveAffine>::ScalarExt: UnwindSafe
","synthetic":true,"types":["halo2::poly::multiopen::VerifierQuery"]},{"text":"impl UnwindSafe for Error","synthetic":true,"types":["halo2::poly::Error"]},{"text":"impl UnwindSafe for Coeff","synthetic":true,"types":["halo2::poly::Coeff"]},{"text":"impl UnwindSafe for LagrangeCoeff","synthetic":true,"types":["halo2::poly::LagrangeCoeff"]},{"text":"impl UnwindSafe for ExtendedLagrangeCoeff","synthetic":true,"types":["halo2::poly::ExtendedLagrangeCoeff"]},{"text":"impl<F, B> UnwindSafe for Polynomial<F, B> where
    B: UnwindSafe,
    F: UnwindSafe
","synthetic":true,"types":["halo2::poly::Polynomial"]},{"text":"impl UnwindSafe for Rotation","synthetic":true,"types":["halo2::poly::Rotation"]},{"text":"impl<R, C, E> UnwindSafe for Blake2bRead<R, C, E> where
    C: UnwindSafe,
    E: UnwindSafe,
    R: UnwindSafe
","synthetic":true,"types":["halo2::transcript::Blake2bRead"]},{"text":"impl<W, C, E> UnwindSafe for Blake2bWrite<W, C, E> where
    C: UnwindSafe,
    E: UnwindSafe,
    W: UnwindSafe
","synthetic":true,"types":["halo2::transcript::Blake2bWrite"]},{"text":"impl<C, T> UnwindSafe for ChallengeScalar<C, T> where
    T: UnwindSafe,
    <C as CurveAffine>::ScalarExt: UnwindSafe
","synthetic":true,"types":["halo2::transcript::ChallengeScalar"]},{"text":"impl<C> UnwindSafe for Challenge255<C> where
    C: UnwindSafe
","synthetic":true,"types":["halo2::transcript::Challenge255"]},{"text":"impl UnwindSafe for Gate","synthetic":true,"types":["halo2::dev::metadata::Gate"]},{"text":"impl UnwindSafe for Constraint","synthetic":true,"types":["halo2::dev::metadata::Constraint"]},{"text":"impl UnwindSafe for Region","synthetic":true,"types":["halo2::dev::metadata::Region"]},{"text":"impl UnwindSafe for VerifyFailure","synthetic":true,"types":["halo2::dev::VerifyFailure"]},{"text":"impl<F> UnwindSafe for MockProver<F> where
    F: UnwindSafe
","synthetic":true,"types":["halo2::dev::MockProver"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/latest/light.css b/rustdoc/latest/light.css new file mode 100644 index 00000000..4554f2b5 --- /dev/null +++ b/rustdoc/latest/light.css @@ -0,0 +1 @@ + body{background-color:white;color:black;}h1,h2,h3,h4{color:black;}h1.fqn{border-bottom-color:#D5D5D5;}h2,h3,h4{border-bottom-color:#DDDDDD;}.in-band{background-color:white;}.invisible{background:rgba(0,0,0,0);}.docblock code,.docblock-short code{background-color:#F5F5F5;}pre,.rustdoc.source .example-wrap{background-color:#F5F5F5;}.sidebar{background-color:#F1F1F1;}*{scrollbar-color:rgba(36,37,39,0.6) #e6e6e6;}.sidebar{scrollbar-color:rgba(36,37,39,0.6) #d9d9d9;}.logo-container.rust-logo>img{}::-webkit-scrollbar-track{background-color:#ecebeb;}::-webkit-scrollbar-thumb{background-color:rgba(36,37,39,0.6);}.sidebar::-webkit-scrollbar-track{background-color:#dcdcdc;}.sidebar::-webkit-scrollbar-thumb{background-color:rgba(36,37,39,0.6);}.sidebar .current{background-color:#fff;}.source .sidebar{background-color:#fff;}.sidebar .location{border-color:#000;background-color:#fff;color:#333;}.sidebar .version{border-bottom-color:#DDD;}.sidebar-title{border-top-color:#777;border-bottom-color:#777;}.block a:hover{background:#F5F5F5;}.line-numbers span{color:#c67e2d;}.line-numbers .line-highlighted{background-color:#f6fdb0 !important;}.docblock h1,.docblock h2,.docblock h3,.docblock h4,.docblock h5{border-bottom-color:#ddd;}.docblock table,.docblock table td,.docblock table th{border-color:#ddd;}.content .method .where,.content .fn .where,.content .where.fmt-newline{color:#4E4C4C;}.search-results a:hover{background-color:#ddd;}.search-results a:focus{color:#000 !important;background-color:#ccc;}.search-results a:focus span{color:#000 !important;}a.result-trait:focus{background-color:#c7b6ff;}a.result-traitalias:focus{background-color:#c7b6ff;}a.result-mod:focus,a.result-externcrate:focus{background-color:#afc6e4;}a.result-enum:focus{background-color:#b4d1b9;}a.result-struct:focus{background-color:#e7b1a0;}a.result-union:focus{background-color:#b7bd49;}a.result-fn:focus,a.result-method:focus,a.result-tymethod:focus{background-color:#c6afb3;}a.result-type:focus{background-color:#ffc891;}a.result-foreigntype:focus{background-color:#f5c4ff;}a.result-attr:focus,a.result-derive:focus,a.result-macro:focus{background-color:#8ce488;}a.result-constant:focus,a.result-static:focus{background-color:#c3e0ff;}a.result-primitive:focus{background-color:#9aecff;}a.result-keyword:focus{background-color:#f99650;}.content .item-info::before{color:#ccc;}.content span.enum,.content a.enum,.block a.current.enum{color:#508157;}.content span.struct,.content a.struct,.block a.current.struct{color:#ad448e;}.content span.type,.content a.type,.block a.current.type{color:#ba5d00;}.content span.foreigntype,.content a.foreigntype,.block a.current.foreigntype{color:#cd00e2;}.content span.attr,.content a.attr,.block a.current.attr,.content span.derive,.content a.derive,.block a.current.derive,.content span.macro,.content a.macro,.block a.current.macro{color:#068000;}.content span.union,.content a.union,.block a.current.union{color:#767b27;}.content span.constant,.content a.constant,.block a.current.constant,.content span.static,.content a.static,.block a.current.static{color:#546e8a;}.content span.primitive,.content a.primitive,.block a.current.primitive{color:#2c8093;}.content span.externcrate,.content span.mod,.content a.mod,.block a.current.mod{color:#4d76ae;}.content span.trait,.content a.trait,.block a.current.trait{color:#7c5af3;}.content span.traitalias,.content a.traitalias,.block a.current.traitalias{color:#6841f1;}.content span.fn,.content a.fn,.block a.current.fn,.content span.method,.content a.method,.block a.current.method,.content span.tymethod,.content a.tymethod,.block a.current.tymethod,.content .fnname{color:#9a6e31;}.content span.keyword,.content a.keyword,.block a.current.keyword{color:#de5249;}nav:not(.sidebar){border-bottom-color:#e0e0e0;}nav.main .current{border-top-color:#000;border-bottom-color:#000;}nav.main .separator{border:1px solid #000;}a{color:#000;}.docblock:not(.type-decl) a:not(.srclink):not(.test-arrow),.docblock-short a:not(.srclink):not(.test-arrow),.item-info a,#help a{color:#3873AD;}a.test-arrow{color:#f5f5f5;}details.rustdoc-toggle>summary.hideme>span,details.rustdoc-toggle>summary::before,details.undocumented>summary::before{color:#999;}#crate-search{color:#555;background-color:white;border-color:#e0e0e0;box-shadow:0 0 0 1px #e0e0e0,0 0 0 2px transparent;}.search-input{color:#555;background-color:white;box-shadow:0 0 0 1px #e0e0e0,0 0 0 2px transparent;}.search-input:focus{border-color:#66afe9;}.search-input:disabled{background-color:#e6e6e6;}#crate-search+.search-input:focus{box-shadow:0 0 8px #078dd8;}.module-item .stab,.import-item .stab{color:#000;}.stab.unstable{background:#FFF5D6;border-color:#FFC600;}.stab.deprecated{background:#ffc4c4;border-color:#db7b7b;}.stab.portability{background:#F3DFFF;border-color:#b07bdb;}.stab.portability>code{background:none;}#help>div{background:#e9e9e9;border-color:#bfbfbf;}#help>div>span{border-bottom-color:#bfbfbf;}.since{color:grey;}tr.result span.primitive::after,tr.result span.keyword::after{color:black;}.line-numbers :target{background-color:transparent;}pre.rust .kw{color:#8959A8;}pre.rust .kw-2,pre.rust .prelude-ty{color:#4271AE;}pre.rust .number,pre.rust .string{color:#718C00;}pre.rust .self,pre.rust .bool-val,pre.rust .prelude-val,pre.rust .attribute,pre.rust .attribute .ident{color:#C82829;}pre.rust .comment{color:#8E908C;}pre.rust .doccomment{color:#4D4D4C;}pre.rust .macro,pre.rust .macro-nonterminal{color:#3E999F;}pre.rust .lifetime{color:#B76514;}pre.rust .question-mark{color:#ff9011;}.example-wrap>pre.line-number{border-color:#c7c7c7;}a.test-arrow{background-color:rgba(78,139,202,0.2);}a.test-arrow:hover{background-color:#4e8bca;}.toggle-label,.code-attribute{color:#999;}:target,:target*{background:#FDFFD3;}:target{border-right:3px solid #ffb44c;}pre.compile_fail{border-left:2px solid rgba(255,0,0,.5);}pre.compile_fail:hover,.information:hover+pre.compile_fail{border-left:2px solid #f00;}pre.should_panic{border-left:2px solid rgba(255,0,0,.5);}pre.should_panic:hover,.information:hover+pre.should_panic{border-left:2px solid #f00;}pre.ignore{border-left:2px solid rgba(255,142,0,.6);}pre.ignore:hover,.information:hover+pre.ignore{border-left:2px solid #ff9200;}.tooltip.compile_fail{color:rgba(255,0,0,.5);}.information>.compile_fail:hover{color:#f00;}.tooltip.should_panic{color:rgba(255,0,0,.5);}.information>.should_panic:hover{color:#f00;}.tooltip.ignore{color:rgba(255,142,0,.6);}.information>.ignore:hover{color:#ff9200;}.search-failed a{color:#0089ff;}.tooltip::after{background-color:#000;color:#fff;}.tooltip::before{border-color:transparent black transparent transparent;}.notable-traits-tooltiptext{background-color:#eee;border-color:#999;}.notable-traits-tooltiptext .notable{border-bottom-color:#DDDDDD;}#titles>button:not(.selected){background-color:#e6e6e6;border-top-color:#e6e6e6;}#titles>button:hover,#titles>button.selected{background-color:#ffffff;border-top-color:#0089ff;}#titles>button>div.count{color:#888;}@media (max-width:700px){.sidebar-menu{background-color:#F1F1F1;border-bottom-color:#e0e0e0;border-right-color:#e0e0e0;}.sidebar-elems{background-color:#F1F1F1;border-right-color:#000;}#sidebar-filler{background-color:#F1F1F1;border-bottom-color:#e0e0e0;}}kbd{color:#000;background-color:#fafbfc;border-color:#d1d5da;border-bottom-color:#c6cbd1;box-shadow-color:#c6cbd1;}#theme-picker,#settings-menu,#help-button{border-color:#e0e0e0;background-color:#fff;}#theme-picker:hover,#theme-picker:focus,#settings-menu:hover,#settings-menu:focus,#help-button:hover,#help-button:focus{border-color:#717171;}#copy-path{color:#999;}#copy-path>img{filter:invert(50%);}#copy-path:hover>img{filter:invert(35%);}#theme-choices{border-color:#ccc;background-color:#fff;}#theme-choices>button:not(:first-child){border-top-color:#e0e0e0;}#theme-choices>button:hover,#theme-choices>button:focus{background-color:#eee;}@media (max-width:700px){#theme-picker{background:#fff;}}#all-types{background-color:#fff;}#all-types:hover{background-color:#f9f9f9;}.search-results .result-name span.alias{color:#000;}.search-results .result-name span.grey{color:#999;}#sidebar-toggle{background-color:#F1F1F1;}#sidebar-toggle:hover{background-color:#E0E0E0;}#source-sidebar{background-color:#F1F1F1;}#source-sidebar>.title{border-bottom-color:#ccc;}div.files>a:hover,div.name:hover{background-color:#E0E0E0;}div.files>.selected{background-color:#fff;}.setting-line>.title{border-bottom-color:#D5D5D5;} \ No newline at end of file diff --git a/rustdoc/latest/main.js b/rustdoc/latest/main.js new file mode 100644 index 00000000..eaae31ed --- /dev/null +++ b/rustdoc/latest/main.js @@ -0,0 +1,8 @@ +if(!String.prototype.startsWith){String.prototype.startsWith=function(searchString,position){position=position||0;return this.indexOf(searchString,position)===position}}if(!String.prototype.endsWith){String.prototype.endsWith=function(suffix,length){var l=length||this.length;return this.indexOf(suffix,l-suffix.length)!==-1}}if(!DOMTokenList.prototype.add){DOMTokenList.prototype.add=function(className){if(className&&!hasClass(this,className)){if(this.className&&this.className.length>0){this.className+=" "+className}else{this.className=className}}}}if(!DOMTokenList.prototype.remove){DOMTokenList.prototype.remove=function(className){if(className&&this.className){this.className=(" "+this.className+" ").replace(" "+className+" "," ").trim()}}}(function(){var rustdocVars=document.getElementById("rustdoc-vars");if(rustdocVars){window.rootPath=rustdocVars.attributes["data-root-path"].value;window.currentCrate=rustdocVars.attributes["data-current-crate"].value;window.searchJS=rustdocVars.attributes["data-search-js"].value;window.searchIndexJS=rustdocVars.attributes["data-search-index-js"].value}var sidebarVars=document.getElementById("sidebar-vars");if(sidebarVars){window.sidebarCurrent={name:sidebarVars.attributes["data-name"].value,ty:sidebarVars.attributes["data-ty"].value,relpath:sidebarVars.attributes["data-relpath"].value,}}}());function getVirtualKey(ev){if("key"in ev&&typeof ev.key!="undefined"){return ev.key}var c=ev.charCode||ev.keyCode;if(c==27){return"Escape"}return String.fromCharCode(c)}var THEME_PICKER_ELEMENT_ID="theme-picker";var THEMES_ELEMENT_ID="theme-choices";function getThemesElement(){return document.getElementById(THEMES_ELEMENT_ID)}function getThemePickerElement(){return document.getElementById(THEME_PICKER_ELEMENT_ID)}function getNakedUrl(){return window.location.href.split("?")[0].split("#")[0]}function showThemeButtonState(){var themePicker=getThemePickerElement();var themeChoices=getThemesElement();themeChoices.style.display="block";themePicker.style.borderBottomRightRadius="0";themePicker.style.borderBottomLeftRadius="0"}function hideThemeButtonState(){var themePicker=getThemePickerElement();var themeChoices=getThemesElement();themeChoices.style.display="none";themePicker.style.borderBottomRightRadius="3px";themePicker.style.borderBottomLeftRadius="3px"}(function(){var themeChoices=getThemesElement();var themePicker=getThemePickerElement();var availableThemes=["ayu","dark","light"];function switchThemeButtonState(){if(themeChoices.style.display==="block"){hideThemeButtonState()}else{showThemeButtonState()}}function handleThemeButtonsBlur(e){var active=document.activeElement;var related=e.relatedTarget;if(active.id!==THEME_PICKER_ELEMENT_ID&&(!active.parentNode||active.parentNode.id!==THEMES_ELEMENT_ID)&&(!related||(related.id!==THEME_PICKER_ELEMENT_ID&&(!related.parentNode||related.parentNode.id!==THEMES_ELEMENT_ID)))){hideThemeButtonState()}}themePicker.onclick=switchThemeButtonState;themePicker.onblur=handleThemeButtonsBlur;availableThemes.forEach(function(item){var but=document.createElement("button");but.textContent=item;but.onclick=function(){switchTheme(window.currentTheme,window.mainTheme,item,true);useSystemTheme(false)};but.onblur=handleThemeButtonsBlur;themeChoices.appendChild(but)})}());(function(){"use strict";window.searchState={loadingText:"Loading search results...",input:document.getElementsByClassName("search-input")[0],outputElement:function(){return document.getElementById("search")},title:document.title,titleBeforeSearch:document.title,timeout:null,currentTab:0,focusedByTab:[null,null,null],clearInputTimeout:function(){if(searchState.timeout!==null){clearTimeout(searchState.timeout);searchState.timeout=null}},focus:function(){searchState.input.focus()},defocus:function(){searchState.input.blur()},showResults:function(search){if(search===null||typeof search==='undefined'){search=searchState.outputElement()}addClass(main,"hidden");removeClass(search,"hidden");searchState.mouseMovedAfterSearch=false;document.title=searchState.title},hideResults:function(search){if(search===null||typeof search==='undefined'){search=searchState.outputElement()}addClass(search,"hidden");removeClass(main,"hidden");document.title=searchState.titleBeforeSearch;if(searchState.browserSupportsHistoryApi()){history.replaceState("",window.currentCrate+" - Rust",getNakedUrl()+window.location.hash)}},getQueryStringParams:function(){var params={};window.location.search.substring(1).split("&").map(function(s){var pair=s.split("=");params[decodeURIComponent(pair[0])]=typeof pair[1]==="undefined"?null:decodeURIComponent(pair[1])});return params},putBackSearch:function(search_input){var search=searchState.outputElement();if(search_input.value!==""&&hasClass(search,"hidden")){searchState.showResults(search);if(searchState.browserSupportsHistoryApi()){var extra="?search="+encodeURIComponent(search_input.value);history.replaceState(search_input.value,"",getNakedUrl()+extra+window.location.hash)}document.title=searchState.title}},browserSupportsHistoryApi:function(){return window.history&&typeof window.history.pushState==="function"},setup:function(){var search_input=searchState.input;if(!searchState.input){return}function loadScript(url){var script=document.createElement('script');script.src=url;document.head.append(script)}var searchLoaded=false;function loadSearch(){if(!searchLoaded){searchLoaded=true;loadScript(window.searchJS);loadScript(window.searchIndexJS)}}search_input.addEventListener("focus",function(){searchState.putBackSearch(this);search_input.origPlaceholder=searchState.input.placeholder;search_input.placeholder="Type your search here.";loadSearch()});search_input.addEventListener("blur",function(){search_input.placeholder=searchState.input.origPlaceholder});search_input.removeAttribute('disabled');searchState.addCrateDropdown(window.ALL_CRATES);var params=searchState.getQueryStringParams();if(params.search!==undefined){var search=searchState.outputElement();search.innerHTML="

"+searchState.loadingText+"

";searchState.showResults(search);loadSearch()}},addCrateDropdown:function(crates){var elem=document.getElementById("crate-search");if(!elem){return}var savedCrate=getSettingValue("saved-filter-crate");for(var i=0,len=crates.length;i0){return tmp}}return null}function showSidebar(){var elems=document.getElementsByClassName("sidebar-elems")[0];if(elems){addClass(elems,"show-it")}var sidebar=document.getElementsByClassName("sidebar")[0];if(sidebar){addClass(sidebar,"mobile");var filler=document.getElementById("sidebar-filler");if(!filler){var div=document.createElement("div");div.id="sidebar-filler";sidebar.appendChild(div)}}}function hideSidebar(){var elems=document.getElementsByClassName("sidebar-elems")[0];if(elems){removeClass(elems,"show-it")}var sidebar=document.getElementsByClassName("sidebar")[0];removeClass(sidebar,"mobile");var filler=document.getElementById("sidebar-filler");if(filler){filler.remove()}document.getElementsByTagName("body")[0].style.marginTop=""}var toggleAllDocsId="toggle-all-docs";var main=document.getElementById("main");var savedHash="";function handleHashes(ev){var elem;var search=searchState.outputElement();if(ev!==null&&search&&!hasClass(search,"hidden")&&ev.newURL){searchState.hideResults(search);var hash=ev.newURL.slice(ev.newURL.indexOf("#")+1);if(searchState.browserSupportsHistoryApi()){history.replaceState(hash,"",getNakedUrl()+window.location.search+"#"+hash)}elem=document.getElementById(hash);if(elem){elem.scrollIntoView()}}if(savedHash!==window.location.hash){savedHash=window.location.hash;if(savedHash.length===0){return}expandSection(savedHash.slice(1))}}function onHashChange(ev){hideSidebar();handleHashes(ev)}function openParentDetails(elem){while(elem){if(elem.tagName==="DETAILS"){elem.open=true}elem=elem.parentNode}}function expandSection(id){openParentDetails(document.getElementById(id))}function getHelpElement(build){if(build){buildHelperPopup()}return document.getElementById("help")}function displayHelp(display,ev,help){if(display){help=help?help:getHelpElement(true);if(hasClass(help,"hidden")){ev.preventDefault();removeClass(help,"hidden");addClass(document.body,"blur")}}else{help=help?help:getHelpElement(false);if(help&&!hasClass(help,"hidden")){ev.preventDefault();addClass(help,"hidden");removeClass(document.body,"blur")}}}function handleEscape(ev){var help=getHelpElement(false);var search=searchState.outputElement();if(help&&!hasClass(help,"hidden")){displayHelp(false,ev,help)}else if(search&&!hasClass(search,"hidden")){searchState.clearInputTimeout();ev.preventDefault();searchState.hideResults(search)}searchState.defocus();hideThemeButtonState()}var disableShortcuts=getSettingValue("disable-shortcuts")==="true";function handleShortcut(ev){if(ev.ctrlKey||ev.altKey||ev.metaKey||disableShortcuts){return}if(document.activeElement.tagName==="INPUT"){switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break}}else{switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break;case"s":case"S":displayHelp(false,ev);ev.preventDefault();searchState.focus();break;case"+":case"-":ev.preventDefault();toggleAllDocs();break;case"?":displayHelp(true,ev);break;case"t":case"T":displayHelp(false,ev);ev.preventDefault();var themePicker=getThemePickerElement();themePicker.click();themePicker.focus();break;default:if(getThemePickerElement().parentNode.contains(ev.target)){handleThemeKeyDown(ev)}}}}function handleThemeKeyDown(ev){var active=document.activeElement;var themes=getThemesElement();switch(getVirtualKey(ev)){case"ArrowUp":ev.preventDefault();if(active.previousElementSibling&&ev.target.id!==THEME_PICKER_ELEMENT_ID){active.previousElementSibling.focus()}else{showThemeButtonState();themes.lastElementChild.focus()}break;case"ArrowDown":ev.preventDefault();if(active.nextElementSibling&&ev.target.id!==THEME_PICKER_ELEMENT_ID){active.nextElementSibling.focus()}else{showThemeButtonState();themes.firstElementChild.focus()}break;case"Enter":case"Return":case"Space":if(ev.target.id===THEME_PICKER_ELEMENT_ID&&themes.style.display==="none"){ev.preventDefault();showThemeButtonState();themes.firstElementChild.focus()}break;case"Home":ev.preventDefault();themes.firstElementChild.focus();break;case"End":ev.preventDefault();themes.lastElementChild.focus();break}}document.addEventListener("keypress",handleShortcut);document.addEventListener("keydown",handleShortcut);(function(){var x=document.getElementsByClassName("version-selector");if(x.length>0){x[0].onchange=function(){var i,match,url=document.location.href,stripped="",len=window.rootPath.match(/\.\.\//g).length+1;for(i=0;i"+""+"
"+code.outerHTML+"
";list.appendChild(display)}}};if(window.pending_implementors){window.register_implementors(window.pending_implementors)}function labelForToggleButton(sectionIsCollapsed){if(sectionIsCollapsed){return"+"}return"\u2212"}function toggleAllDocs(){var innerToggle=document.getElementById(toggleAllDocsId);if(!innerToggle){return}var sectionIsCollapsed=false;if(hasClass(innerToggle,"will-expand")){removeClass(innerToggle,"will-expand");onEachLazy(document.getElementsByClassName("rustdoc-toggle"),function(e){if(!hasClass(e,"type-contents-toggle")){e.open=true}});innerToggle.title="collapse all docs"}else{addClass(innerToggle,"will-expand");onEachLazy(document.getElementsByClassName("rustdoc-toggle"),function(e){if(e.parentNode.id!=="main"||(!hasClass(e,"implementors-toggle")&&!hasClass(e,"type-contents-toggle"))){e.open=false}});sectionIsCollapsed=true;innerToggle.title="expand all docs"}innerToggle.children[0].innerText=labelForToggleButton(sectionIsCollapsed)}function insertAfter(newNode,referenceNode){referenceNode.parentNode.insertBefore(newNode,referenceNode.nextSibling)}(function(){var toggles=document.getElementById(toggleAllDocsId);if(toggles){toggles.onclick=toggleAllDocs}var hideMethodDocs=getSettingValue("auto-hide-method-docs")==="true";var hideImplementations=getSettingValue("auto-hide-trait-implementations")==="true";var hideLargeItemContents=getSettingValue("auto-hide-large-items")!=="false";function setImplementorsTogglesOpen(id,open){var list=document.getElementById(id);if(list!==null){onEachLazy(list.getElementsByClassName("implementors-toggle"),function(e){e.open=open})}}if(hideImplementations){setImplementorsTogglesOpen("trait-implementations-list",false);setImplementorsTogglesOpen("blanket-implementations-list",false)}onEachLazy(document.getElementsByClassName("rustdoc-toggle"),function(e){if(!hideLargeItemContents&&hasClass(e,"type-contents-toggle")){e.open=true}if(hideMethodDocs&&hasClass(e,"method-toggle")){e.open=false}});var pageId=getPageId();if(pageId!==null){expandSection(pageId)}}());(function(){var lineNumbersFunc=function(){};if(getSettingValue("line-numbers")==="true"){lineNumbersFunc=function(x){var count=x.textContent.split("\n").length;var elems=[];for(var i=0;ithe rustdoc book.";var container=document.createElement("div");var shortcuts=[["?","Show this help dialog"],["S","Focus the search field"],["T","Focus the theme picker menu"],["↑","Move up in search results"],["↓","Move down in search results"],["← / →","Switch result tab (when results focused)"],["⏎","Go to active search result"],["+","Expand all sections"],["-","Collapse all sections"],].map(function(x){return"
"+x[0].split(" ").map(function(y,index){return(index&1)===0?""+y+"":" "+y+" "}).join("")+"
"+x[1]+"
"}).join("");var div_shortcuts=document.createElement("div");addClass(div_shortcuts,"shortcuts");div_shortcuts.innerHTML="

Keyboard Shortcuts

"+shortcuts+"
";var infos=["Prefix searches with a type followed by a colon (e.g., fn:) to \ + restrict the search to a given item kind.","Accepted kinds are: fn, mod, struct, \ + enum, trait, type, macro, \ + and const.","Search functions by type signature (e.g., vec -> usize or \ + * -> vec)","Search multiple things at once by splitting your query with comma (e.g., \ + str,u8 or String,struct:Vec,test)","You can look for items with an exact name by putting double quotes around \ + your request: \"string\"","Look for items inside another one by searching for a path: vec::Vec",].map(function(x){return"

"+x+"

"}).join("");var div_infos=document.createElement("div");addClass(div_infos,"infos");div_infos.innerHTML="

Search Tricks

"+infos;container.appendChild(book_info);container.appendChild(div_shortcuts);container.appendChild(div_infos);popup.appendChild(container);insertAfter(popup,searchState.outputElement());buildHelperPopup=function(){}};onHashChange(null);window.addEventListener("hashchange",onHashChange);searchState.setup()}());(function(){var reset_button_timeout=null;window.copy_path=function(but){var parent=but.parentElement;var path=[];onEach(parent.childNodes,function(child){if(child.tagName==='A'){path.push(child.textContent)}});var el=document.createElement('textarea');el.value='use '+path.join('::')+';';el.setAttribute('readonly','');el.style.position='absolute';el.style.left='-9999px';document.body.appendChild(el);el.select();document.execCommand('copy');document.body.removeChild(el);but.children[0].style.display='none';var tmp;if(but.childNodes.length<2){tmp=document.createTextNode('✓');but.appendChild(tmp)}else{onEachLazy(but.childNodes,function(e){if(e.nodeType===Node.TEXT_NODE){tmp=e;return true}});tmp.textContent='✓'}if(reset_button_timeout!==null){window.clearTimeout(reset_button_timeout)}function reset_button(){tmp.textContent='';reset_button_timeout=null;but.children[0].style.display=""}reset_button_timeout=window.setTimeout(reset_button,1000)}}()) \ No newline at end of file diff --git a/rustdoc/latest/normalize.css b/rustdoc/latest/normalize.css new file mode 100644 index 00000000..469959f1 --- /dev/null +++ b/rustdoc/latest/normalize.css @@ -0,0 +1,2 @@ + /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ +html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:0.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type="button"],[type="reset"],[type="submit"],button{-webkit-appearance:button}[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:0.35em 0.75em 0.625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none} \ No newline at end of file diff --git a/rustdoc/latest/noscript.css b/rustdoc/latest/noscript.css new file mode 100644 index 00000000..aea68efb --- /dev/null +++ b/rustdoc/latest/noscript.css @@ -0,0 +1 @@ + #main .attributes{margin-left:0 !important;}#copy-path{display:none;} \ No newline at end of file diff --git a/rustdoc/latest/noto-sans-kr-v13-korean-regular-LICENSE.txt b/rustdoc/latest/noto-sans-kr-v13-korean-regular-LICENSE.txt new file mode 100644 index 00000000..922d5fdc --- /dev/null +++ b/rustdoc/latest/noto-sans-kr-v13-korean-regular-LICENSE.txt @@ -0,0 +1,93 @@ +Copyright 2014, 2015 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. + +This Font Software is licensed under the SIL Open Font License, Version 1.1. + +This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/rustdoc/latest/noto-sans-kr-v13-korean-regular.woff b/rustdoc/latest/noto-sans-kr-v13-korean-regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..01d6b6b54664c35f8180f7c245514d22751f9307 GIT binary patch literal 287068 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

ff0{w-vm$aC<^ll-;r!22LyG(71$pSamDnpqF% z#50o#v$G3}(P{`R6}-#i@~Q-*$GFSg<7aRfdz@>8d=39pYJ_S`iBkzR3APD2 zAqUpPo+PhOREU-2${h)38Ip~{6KD&NCG(QWA*{=ySrjE=l9LH5P*x-h<|TTP?+Nfk zxyTD#L}-LtLS9i1xRsKU^@-agsZggp3ks%qO)So^&a}=v2l8WE3GXBbqBF?O^mpGO zyvUy22^7Q%;(4Ln_^-&$zwY1;AjaYo(GG|Y{*C1)$|O!Eeixi5RuyPM4WpAuQ!-ID zQdSCE#Vnwf#wxBCx(c7hEyz&%D!mn#K#{?aVVJcjj$~3UDykRfpiGdZ0H@ecdW1L= z91=~y6jD-(QC^4MK^?+OAQXNGEf;1%EiZ_=3A>3r3fG2V(=SmjVJ>kli58X>u#4J7 ztqWJ!DQ*-#iC)HXOIBD_6f2Gv$RnSzE@@RnE2S6FOX!7nLb>6b`7H%kl!ti1KO� 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�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 literal 0 HcmV?d00001 diff --git a/rustdoc/latest/rust-logo.png b/rustdoc/latest/rust-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..74b4bd695045ebc52c21af95301adc9311ca881c GIT binary patch literal 5758 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 literal 0 HcmV?d00001 diff --git a/rustdoc/latest/rustdoc.css b/rustdoc/latest/rustdoc.css new file mode 100644 index 00000000..143f3226 --- /dev/null +++ b/rustdoc/latest/rustdoc.css @@ -0,0 +1 @@ + @font-face {font-family:'Fira Sans';font-style:normal;font-weight:400;src:local('Fira Sans'),url("FiraSans-Regular.woff2") format("woff2"),url("FiraSans-Regular.woff") format('woff');font-display:swap;}@font-face {font-family:'Fira Sans';font-style:normal;font-weight:500;src:local('Fira Sans Medium'),url("FiraSans-Medium.woff2") format("woff2"),url("FiraSans-Medium.woff") format('woff');font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:400;src:local('Source Serif 4'),url("SourceSerif4-Regular.ttf.woff2") format("woff2"),url("SourceSerif4-Regular.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:italic;font-weight:400;src:local('Source Serif 4 Italic'),url("SourceSerif4-It.ttf.woff2") format("woff2"),url("SourceSerif4-It.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:700;src:local('Source Serif 4 Bold'),url("SourceSerif4-Bold.ttf.woff2") format("woff2"),url("SourceSerif4-Bold.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:400;src:url("SourceCodePro-Regular.ttf.woff2") format("woff2"),url("SourceCodePro-Regular.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:italic;font-weight:400;src:url("SourceCodePro-It.ttf.woff2") format("woff2"),url("SourceCodePro-It.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:600;src:url("SourceCodePro-Semibold.ttf.woff2") format("woff2"),url("SourceCodePro-Semibold.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Noto Sans KR';src:url("noto-sans-kr-v13-korean-regular.woff") format("woff");font-display:swap;unicode-range:U+A960-A97F,U+AC00-D7AF,U+D7B0-D7FF;}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}html{content:"";}@media (prefers-color-scheme:light){html{content:"light";}}@media (prefers-color-scheme:dark){html{content:"dark";}}body{font:16px/1.4 "Source Serif 4","Noto Sans KR",serif;margin:0;position:relative;padding:10px 15px 20px 15px;-webkit-font-feature-settings:"kern","liga";-moz-font-feature-settings:"kern","liga";font-feature-settings:"kern","liga";}h1{font-size:1.5em;}h2{font-size:1.4em;}h3{font-size:1.3em;}h1,h2,h3,h4{font-weight:500;margin:20px 0 15px 0;padding-bottom:6px;}h1.fqn{display:flex;border-bottom:1px dashed;margin-top:0;padding-left:1px;}h1.fqn>.in-band>a:hover{text-decoration:underline;}h2,h3,h4{border-bottom:1px solid;}.impl,.impl-items .method,.methods .method,.impl-items .type,.methods .type,.impl-items .associatedconstant,.methods .associatedconstant,.impl-items .associatedtype,.methods .associatedtype{flex-basis:100%;font-weight:600;margin-top:16px;margin-bottom:10px;position:relative;}.impl,.method.trait-impl,.type.trait-impl,.associatedconstant.trait-impl,.associatedtype.trait-impl{padding-left:15px;}div.impl-items>div{padding-left:0;}h1,h2,h3,h4,.sidebar,a.source,.search-input,.search-results .result-name,.content table td:first-child>a,.item-left>a,div.item-list .out-of-band,span.since,#source-sidebar,#sidebar-toggle,details.rustdoc-toggle>summary::before,details.undocumented>summary::before,div.impl-items>div:not(.docblock):not(.item-info),.content ul.crate a.crate,a.srclink,#main>ul.docblock>li>a{font-family:"Fira Sans",Arial,sans-serif;}.content ul.crate a.crate{font-size:16px/1.6;}ol,ul{padding-left:25px;}ul ul,ol ul,ul ol,ol ol{margin-bottom:.6em;}p{margin:0 0 .6em 0;}summary{outline:none;}td,th{padding:0;}table{border-collapse:collapse;}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0;}details:not(.rustdoc-toggle) summary{margin-bottom:.6em;}code,pre,a.test-arrow{font-family:"Source Code Pro",monospace;}.docblock code,.docblock-short code{border-radius:3px;padding:0 0.1em;}.docblock pre code,.docblock-short pre code{padding:0;padding-right:1ex;}pre{padding:14px;}.source .content pre{padding:20px;}img{max-width:100%;}li{position:relative;}.source .content{margin-top:50px;max-width:none;overflow:visible;margin-left:0px;}nav.sub{font-size:16px;text-transform:uppercase;}.sidebar{width:200px;position:fixed;left:0;top:0;bottom:0;overflow:auto;}*{scrollbar-width:initial;}.sidebar{scrollbar-width:thin;}::-webkit-scrollbar{width:12px;}.sidebar::-webkit-scrollbar{width:8px;}::-webkit-scrollbar-track{-webkit-box-shadow:inset 0;}.sidebar .block>ul>li{margin-right:-10px;}.content,nav{max-width:960px;}.hidden{display:none !important;}.logo-container{height:100px;width:100px;position:relative;margin:20px auto;display:block;margin-top:10px;}.logo-container>img{max-width:100px;max-height:100px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:block;}.sidebar .location{border:1px solid;font-size:17px;margin:30px 10px 20px 10px;text-align:center;word-wrap:break-word;}.sidebar .version{font-size:15px;text-align:center;border-bottom:1px solid;overflow-wrap:break-word;word-wrap:break-word;word-break:break-word;}.location:empty{border:none;}.location a:first-of-type{font-weight:500;}.location a:hover{text-decoration:underline;}.block{padding:0;margin-bottom:14px;}.block h2,.block h3{text-align:center;}.block ul,.block li{margin:0 10px;padding:0;list-style:none;}.block a{display:block;text-overflow:ellipsis;overflow:hidden;line-height:15px;padding:7px 5px;font-size:14px;font-weight:300;transition:border 500ms ease-out;}.sidebar-title{border-top:1px solid;border-bottom:1px solid;text-align:center;font-size:17px;margin-bottom:5px;}.sidebar-links{margin-bottom:15px;}.sidebar-links>a{padding-left:10px;width:100%;}.sidebar-menu{display:none;}.content{padding:15px 0;}.source .content pre.rust{white-space:pre;overflow:auto;padding-left:0;}.rustdoc .example-wrap{display:inline-flex;margin-bottom:10px;}.example-wrap{position:relative;width:100%;}.example-wrap>pre.line-number{overflow:initial;border:1px solid;padding:13px 8px;text-align:right;border-top-left-radius:5px;border-bottom-left-radius:5px;}.rustdoc:not(.source) .example-wrap>pre.rust{width:100%;overflow-x:auto;}.rustdoc .example-wrap>pre{margin:0;}#search{margin-left:230px;position:relative;}#results>table{width:100%;table-layout:fixed;}.content>.example-wrap pre.line-numbers{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}.line-numbers span{cursor:pointer;}.docblock-short{overflow-wrap:anywhere;}.docblock-short p{display:inline;}.docblock-short p{overflow:hidden;text-overflow:ellipsis;margin:0;}.docblock>:not(pre)>code,.docblock-short>:not(pre)>code{white-space:pre-wrap;}.docblock h1,.docblock h2,.docblock h3,.docblock h4,.docblock h5{border-bottom:1px solid;}.top-doc .docblock h1{font-size:1.3em;}.top-doc .docblock h2{font-size:1.15em;}.top-doc .docblock h3,.top-doc .docblock h4,.top-doc .docblock h5{font-size:1em;}.docblock h1{font-size:1em;}.docblock h2{font-size:0.95em;}.docblock h3,.docblock h4,.docblock h5{font-size:0.9em;}.docblock{margin-left:24px;position:relative;}.content .out-of-band{flex-grow:0;text-align:right;font-size:23px;margin:0px;padding:0 0 0 12px;font-weight:normal;}.method>code,.trait-impl>code,.invisible>code{max-width:calc(100% - 41px);display:block;}.invisible{width:100%;display:inline-block;}.content .in-band{flex-grow:1;margin:0px;padding:0px;}.in-band>code{display:inline-block;}#main{position:relative;}#main>.since{top:inherit;font-family:"Fira Sans",Arial,sans-serif;}.content table:not(.table-display){border-spacing:0 5px;}.content td{vertical-align:top;}.content td:first-child{padding-right:20px;}.content td p:first-child{margin-top:0;}.content td h1,.content td h2{margin-left:0;font-size:1.1em;}.content tr:first-child td{border-top:0;}.docblock table{margin:.5em 0;width:calc(100% - 2px);border:1px dashed;}.docblock table td{padding:.5em;border:1px dashed;}.docblock table th{padding:.5em;text-align:left;border:1px solid;}.fields+table{margin-bottom:1em;}.content .item-list{list-style-type:none;padding:0;}.content .multi-column{-moz-column-count:5;-moz-column-gap:2.5em;-webkit-column-count:5;-webkit-column-gap:2.5em;column-count:5;column-gap:2.5em;}.content .multi-column li{width:100%;display:inline-block;}.content>.methods>.method{font-size:1em;position:relative;}.content .method .where,.content .fn .where,.content .where.fmt-newline{display:block;font-size:0.8em;}.content .methods>div:not(.notable-traits):not(.method){margin-left:40px;margin-bottom:15px;}.content .docblock>.impl-items{margin-left:20px;margin-top:-34px;}.content .docblock>.impl-items .table-display{margin:0;}.content .docblock>.impl-items table td{padding:0;}.content .docblock>.impl-items .table-display,.impl-items table td{border:none;}.content .item-info code{font-size:90%;}.content .item-info{position:relative;margin-left:33px;}.sub-variant>div>.item-info{margin-top:initial;}.content .item-info::before{content:'⬑';font-size:25px;position:absolute;top:-6px;left:-19px;}.content .impl-items .method,.content .impl-items>.type,.impl-items>.associatedconstant,.impl-items>.associatedtype,.content .impl-items details>summary>.type,.impl-items details>summary>.associatedconstant,.impl-items details>summary>.associatedtype{margin-left:20px;}.content .impl-items .docblock,.content .impl-items .item-info{margin-bottom:.6em;}.content .impl-items>.item-info{margin-left:40px;}.methods>.item-info,.content .impl-items>.item-info{margin-top:-8px;}.impl-items{flex-basis:100%;}#main>.item-info{margin-top:0;}nav:not(.sidebar){border-bottom:1px solid;padding-bottom:10px;margin-bottom:10px;}nav.main{padding:20px 0;text-align:center;}nav.main .current{border-top:1px solid;border-bottom:1px solid;}nav.main .separator{border:1px solid;display:inline-block;height:23px;margin:0 20px;}nav.sum{text-align:right;}nav.sub form{display:inline;}nav.sub,.content{margin-left:230px;}a{text-decoration:none;background:transparent;}.small-section-header{display:flex;justify-content:space-between;position:relative;}.small-section-header:hover>.anchor{display:initial;}.in-band:hover>.anchor,.impl:hover>.anchor,.method.trait-impl:hover>.anchor,.type.trait-impl:hover>.anchor,.associatedconstant.trait-impl:hover>.anchor,.associatedtype.trait-impl:hover>.anchor{display:inline-block;position:absolute;}.anchor{display:none;position:absolute;left:-7px;}.anchor.field{left:-5px;}.small-section-header>.anchor{left:-28px;padding-right:10px;}.anchor:before{content:'\2002\00a7\2002';}.docblock a:not(.srclink):not(.test-arrow):hover,.docblock-short a:not(.srclink):not(.test-arrow):hover,.item-info a{text-decoration:underline;}.invisible>.srclink,.method>code+.srclink{position:absolute;top:0;right:0;font-size:17px;font-weight:normal;}.block a.current.crate{font-weight:500;}.item-table{display:grid;column-gap:1.2rem;row-gap:0.0rem;grid-template-columns:auto 1fr;justify-items:start;}.item-left,.item-right{display:block;}.item-left{grid-column:1;}.item-right{grid-column:2;}.search-container{position:relative;}.search-container>div{display:inline-flex;width:calc(100% - 63px);}#crate-search{min-width:115px;margin-top:5px;padding:6px;padding-right:19px;flex:none;border:0;border-right:0;border-radius:4px 0 0 4px;outline:none;cursor:pointer;border-right:1px solid;-moz-appearance:none;-webkit-appearance:none;text-indent:0.01px;text-overflow:"";background-repeat:no-repeat;background-color:transparent;background-size:20px;background-position:calc(100% - 1px) 56%;}.search-container>.top-button{position:absolute;right:0;top:10px;}.search-input{-moz-box-sizing:border-box !important;box-sizing:border-box !important;outline:none;border:none;border-radius:1px;margin-top:5px;padding:10px 16px;font-size:17px;transition:border-color 300ms ease;transition:border-radius 300ms ease-in-out;transition:box-shadow 300ms ease-in-out;width:100%;}#crate-search+.search-input{border-radius:0 1px 1px 0;width:calc(100% - 32px);}.search-input:focus{border-radius:2px;border:0;outline:0;}.search-results{display:none;padding-bottom:2em;}.search-results.active{display:block;clear:both;}.search-results .desc>span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:block;}.search-results>a{display:block;width:100%;margin-left:2px;margin-right:2px;border-bottom:1px solid #aaa3;}.search-results>a>div{display:flex;flex-flow:row wrap;}.search-results .result-name,.search-results div.desc,.search-results .result-description{width:50%;}.search-results .result-name{padding-right:1em;}.search-results .result-name>span{display:inline-block;margin:0;font-weight:normal;}body.blur>:not(#help){filter:blur(8px);-webkit-filter:blur(8px);opacity:.7;}#help{width:100%;height:100vh;position:fixed;top:0;left:0;display:flex;justify-content:center;align-items:center;}#help>div{flex:0 0 auto;box-shadow:0 0 6px rgba(0,0,0,.2);width:550px;height:auto;border:1px solid;}#help dt{float:left;clear:left;display:block;margin-right:0.5rem;}#help>div>span{text-align:center;display:block;margin:10px 0;font-size:18px;border-bottom:1px solid #ccc;padding-bottom:4px;margin-bottom:6px;}#help dd{margin:5px 35px;}#help .infos{padding-left:0;}#help h1,#help h2{margin-top:0;}#help>div div{width:50%;float:left;padding:0 20px 20px 17px;;}.stab{border-width:1px;border-style:solid;padding:3px;margin-bottom:5px;font-size:90%;font-weight:normal;}.stab p{display:inline;}.stab .emoji{font-size:1.5em;}.emoji{text-shadow:1px 0 0 black,-1px 0 0 black,0 1px 0 black,0 -1px 0 black;}.module-item .stab,.import-item .stab{border-radius:3px;display:inline-block;font-size:80%;line-height:1.2;margin-bottom:0;margin-left:.3em;padding:2px;vertical-align:text-bottom;}.module-item.unstable,.import-item.unstable{opacity:0.65;}.since{font-weight:normal;font-size:initial;}.impl-items .since,.impl .since,.methods .since{padding-left:12px;padding-right:2px;position:initial;}.impl-items .srclink,.impl .srclink,.methods .srclink{font-size:17px;font-weight:normal;}.rightside{float:right;}.has-srclink{font-size:16px;margin-bottom:12px;justify-content:space-between;}.variants_table{width:100%;}.variants_table tbody tr td:first-child{width:1%;}td.summary-column{width:100%;}.summary{padding-right:0px;}pre.rust .question-mark{font-weight:bold;}a.test-arrow{display:inline-block;position:absolute;padding:5px 10px 5px 10px;border-radius:5px;font-size:130%;top:5px;right:5px;z-index:1;}a.test-arrow:hover{text-decoration:none;}.section-header:hover a:before{position:absolute;left:-25px;padding-right:10px;content:'\2002\00a7\2002';}.section-header:hover a{text-decoration:none;}.section-header a{color:inherit;}.code-attribute{font-weight:300;}.since+.srclink{padding-left:10px;}.item-spacer{width:100%;height:12px;}.out-of-band>span.since{position:initial;font-size:20px;margin-right:5px;}.sub-variant,.sub-variant>h3{margin-top:0px !important;padding-top:1px;}#main>details>.sub-variant>h3{font-size:15px;margin-left:25px;margin-bottom:5px;}.sub-variant>div{margin-left:20px;margin-bottom:10px;}.sub-variant>div>span{display:block;position:relative;}.toggle-label{display:inline-block;margin-left:4px;margin-top:3px;}.docblock>.section-header:first-child{margin-left:15px;margin-top:0;}.docblock>.section-header:first-child:hover>a:before{left:-10px;}:target>code{opacity:1;}:target{padding-right:3px;}.information{position:absolute;left:-25px;margin-top:7px;z-index:1;}.tooltip{position:relative;display:inline-block;cursor:pointer;}.tooltip::after{display:none;text-align:center;padding:5px 3px 3px 3px;border-radius:6px;margin-left:5px;font-size:16px;}.tooltip.ignore::after{content:"This example is not tested";}.tooltip.compile_fail::after{content:"This example deliberately fails to compile";}.tooltip.should_panic::after{content:"This example panics";}.tooltip.edition::after{content:"This code runs with edition " attr(data-edition);}.tooltip::before{content:" ";position:absolute;top:50%;left:16px;margin-top:-5px;border-width:5px;border-style:solid;display:none;}.tooltip:hover::before,.tooltip:hover::after{display:inline;}.tooltip.compile_fail,.tooltip.should_panic,.tooltip.ignore{font-weight:bold;font-size:20px;}.notable-traits-tooltip{display:inline-block;cursor:pointer;}.notable-traits:hover .notable-traits-tooltiptext,.notable-traits .notable-traits-tooltiptext.force-tooltip{display:inline-block;}.notable-traits .notable-traits-tooltiptext{display:none;padding:5px 3px 3px 3px;border-radius:6px;margin-left:5px;z-index:10;font-size:16px;cursor:default;position:absolute;border:1px solid;}.notable-traits-tooltip::after{content:"\00a0\00a0\00a0";}.notable-traits .notable,.notable-traits .docblock{margin:0;}.notable-traits .notable{margin:0;margin-bottom:13px;font-size:19px;font-weight:600;}.notable-traits .docblock code.content{margin:0;padding:0;font-size:20px;}pre.rust.rust-example-rendered{position:relative;}pre.rust{tab-size:4;-moz-tab-size:4;}.search-failed{text-align:center;margin-top:20px;display:none;}.search-failed.active{display:block;}.search-failed>ul{text-align:left;max-width:570px;margin-left:auto;margin-right:auto;}#titles{height:35px;}#titles>button{float:left;width:33.3%;text-align:center;font-size:18px;cursor:pointer;border:0;border-top:2px solid;}#titles>button:not(:last-child){margin-right:1px;width:calc(33.3% - 1px);}#titles>button>div.count{display:inline-block;font-size:16px;}.notable-traits{cursor:pointer;z-index:2;margin-left:5px;}#all-types{text-align:center;border:1px solid;margin:0 10px;margin-bottom:10px;display:block;border-radius:7px;}#all-types>p{margin:5px 0;}#sidebar-toggle{position:fixed;top:30px;left:300px;z-index:10;padding:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;cursor:pointer;font-weight:bold;transition:left .5s;font-size:1.2em;border:1px solid;border-left:0;}#source-sidebar{position:fixed;top:0;bottom:0;left:0;width:300px;z-index:1;overflow:auto;transition:left .5s;border-right:1px solid;}#source-sidebar>.title{font-size:1.5em;text-align:center;border-bottom:1px solid;margin-bottom:6px;}.theme-picker{position:absolute;left:211px;top:19px;}.theme-picker button{outline:none;}#settings-menu,#help-button{position:absolute;top:10px;}#settings-menu{right:0;outline:none;}#theme-picker,#settings-menu,#help-button,#copy-path{padding:4px;width:27px;height:29px;border:1px solid;border-radius:3px;cursor:pointer;}#help-button{right:30px;font-family:"Fira Sans",Arial,sans-serif;text-align:center;font-size:17px;padding-top:2px;}#copy-path{background:initial;margin-left:10px;padding:0;padding-left:2px;border:0;}#theme-choices{display:none;position:absolute;left:0;top:28px;border:1px solid;border-radius:3px;z-index:1;cursor:pointer;}#theme-choices>button{border:none;width:100%;padding:4px 8px;text-align:center;background:rgba(0,0,0,0);}#theme-choices>button:not(:first-child){border-top:1px solid;}kbd{display:inline-block;padding:3px 5px;font:15px monospace;line-height:10px;vertical-align:middle;border:solid 1px;border-radius:3px;box-shadow:inset 0 -1px 0;cursor:default;}.hidden-by-impl-hider,.hidden-by-usual-hider{display:none !important;}#implementations-list>h3>span.in-band{width:100%;}.table-display{width:100%;border:0;border-collapse:collapse;border-spacing:0;font-size:16px;}.table-display tr td:first-child{padding-right:0;}.table-display tr td:last-child{float:right;}.table-display .out-of-band{position:relative;font-size:19px;display:block;}#implementors-list>.impl-items .table-display .out-of-band{font-size:17px;}.table-display td:hover .anchor{display:block;top:2px;left:-5px;}#main>ul{padding-left:10px;}#main>ul>li{list-style:none;}.non-exhaustive{margin-bottom:1em;}div.children{padding-left:27px;display:none;}div.name{cursor:pointer;position:relative;margin-left:16px;}div.files>a{display:block;padding:0 3px;}div.files>a:hover,div.name:hover{background-color:#a14b4b;}div.name.expand+.children{display:block;}div.name::before{content:"\25B6";padding-left:4px;font-size:0.7em;position:absolute;left:-16px;top:4px;}div.name.expand::before{transform:rotate(90deg);left:-15px;top:2px;}details.rustdoc-toggle>summary.hideme{cursor:pointer;}details.rustdoc-toggle>summary,details.undocumented>summary{list-style:none;}details.rustdoc-toggle>summary::-webkit-details-marker,details.rustdoc-toggle>summary::marker,details.undocumented>summary::-webkit-details-marker,details.undocumented>summary::marker{display:none;}details.rustdoc-toggle>summary.hideme>span{margin-left:9px;}details.rustdoc-toggle>summary::before{content:"[+]";font-weight:300;font-size:0.8em;letter-spacing:1px;cursor:pointer;}details.rustdoc-toggle.top-doc>summary,details.rustdoc-toggle.top-doc>summary::before,details.rustdoc-toggle.non-exhaustive>summary,details.rustdoc-toggle.non-exhaustive>summary::before{font-family:'Fira Sans';font-size:16px;}details.non-exhaustive{margin-bottom:8px;}details.rustdoc-toggle>summary.hideme::before{position:relative;}details.rustdoc-toggle>summary:not(.hideme)::before{position:absolute;left:-23px;top:3px;}.impl-items>details.rustdoc-toggle>summary:not(.hideme)::before,.undocumented>details.rustdoc-toggle>summary:not(.hideme)::before{position:absolute;left:-2px;}details.rustdoc-toggle[open] >summary.hideme{position:absolute;}details.rustdoc-toggle,details.undocumented{position:relative;}details.rustdoc-toggle[open] >summary.hideme>span{display:none;}details.rustdoc-toggle[open] >summary::before{content:"[−]";display:inline;}details.undocumented>summary::before{content:"[+] Show hidden undocumented items";cursor:pointer;font-size:16px;font-weight:300;}details.undocumented[open] >summary::before{content:"[−] Hide undocumented items";}@media (min-width:701px){.docblock>.information:first-child>.tooltip{margin-top:16px;}}@media (max-width:700px){body{padding-top:0px;}.rustdoc>.sidebar{height:45px;min-height:40px;margin:0;margin-left:-15px;padding:0 15px;position:static;z-index:11;}.sidebar>.location{float:right;margin:0px;margin-top:2px;padding:3px 10px 1px 10px;min-height:39px;background:inherit;text-align:left;font-size:24px;}.sidebar .location:empty{padding:0;}.sidebar .logo-container{width:35px;height:35px;margin-top:5px;margin-bottom:5px;float:left;margin-left:50px;}.sidebar .logo-container>img{max-width:35px;max-height:35px;}.sidebar-menu{position:fixed;z-index:10;font-size:2rem;cursor:pointer;width:45px;left:0;text-align:center;display:block;border-bottom:1px solid;border-right:1px solid;height:45px;}.rustdoc.source>.sidebar>.sidebar-menu{display:none;}.sidebar-elems{position:fixed;z-index:1;left:0;top:45px;bottom:0;overflow-y:auto;border-right:1px solid;display:none;}.sidebar>.block.version{overflow:hidden;border-bottom:none;margin-bottom:0;height:100%;padding-left:12px;}.sidebar>.block.version>div.narrow-helper{float:left;width:1px;height:100%;}.sidebar>.block.version>p{margin:0;min-width:55px;display:flex;align-items:center;height:100%;}nav.sub{width:calc(100% - 32px);float:right;}.content{margin-left:0px;}#main,#search{margin-top:45px;padding:0;}#search{margin-left:0;}.anchor{display:none !important;}.theme-picker{left:10px;top:54px;z-index:1;}.notable-traits{position:absolute;left:-22px;top:24px;}#titles>button>div.count{float:left;width:100%;}#titles{height:50px;}.sidebar.mobile{position:fixed;width:100%;margin-left:0;background-color:rgba(0,0,0,0);height:100%;}.sidebar.mobile>div.version{overflow:hidden;max-height:33px;}.sidebar{width:calc(100% + 30px);}.show-it{display:block;width:246px;}.show-it>.block.items{margin:8px 0;}.show-it>.block.items>ul{margin:0;}.show-it>.block.items>ul>li{text-align:center;margin:2px 0;}.show-it>.block.items>ul>li>a{font-size:21px;}#sidebar-filler{position:fixed;left:45px;width:calc(100% - 45px);top:0;height:45px;z-index:-1;border-bottom:1px solid;}#main>details.rustdoc-toggle>summary::before,#main>div>details.rustdoc-toggle>summary::before{left:-11px;}#all-types{margin:10px;}#sidebar-toggle{top:100px;width:30px;font-size:1.5rem;text-align:center;padding:0;}#source-sidebar{z-index:11;}#main>.line-numbers{margin-top:0;}.notable-traits .notable-traits-tooltiptext{left:0;top:100%;}#help-button{display:none;}.item-table{display:flex;flex-flow:column wrap;}.item-left,.item-right{width:100%;}.search-container>div{width:calc(100% - 32px);}.search-results>a{border-bottom:1px solid #aaa9;padding:5px 0px;}.search-results .result-name,.search-results div.desc,.search-results .result-description{width:100%;}.search-results div.desc,.search-results .result-description,.item-right{padding-left:2em;}}@media print{nav.sub,.content .out-of-band{display:none;}}@media (max-width:464px){#titles,#titles>button{height:73px;}#main,#search{margin-top:100px;}#main>table:not(.table-display) td{word-break:break-word;width:50%;}.search-container>div{display:block;width:calc(100% - 37px);}#crate-search{width:100%;border-radius:4px;border:0;}#crate-search+.search-input{width:calc(100% + 71px);margin-left:-36px;}#theme-picker,#settings-menu{padding:5px;width:31px;height:31px;}#theme-picker{margin-top:-2px;}#settings-menu{top:7px;}.docblock{margin-left:12px;}} \ No newline at end of file diff --git a/rustdoc/latest/search-index.js b/rustdoc/latest/search-index.js new file mode 100644 index 00000000..a3a2cd07 --- /dev/null +++ b/rustdoc/latest/search-index.js @@ -0,0 +1,4 @@ +var searchIndex = JSON.parse('{\ +"halo2":{"doc":"halo2","t":[0,0,0,0,0,0,16,16,16,8,18,3,8,8,16,18,8,8,8,8,18,18,18,18,18,16,16,16,3,18,18,18,10,10,10,10,10,11,5,5,11,11,11,11,11,11,5,11,10,10,11,11,11,11,11,11,11,10,10,11,11,10,5,11,11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,10,10,10,10,10,10,10,5,5,11,10,10,10,5,11,11,11,11,11,10,10,11,11,5,10,10,11,11,10,11,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,10,3,8,16,8,16,3,3,3,3,16,3,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,0,10,11,11,10,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,8,3,10,11,10,11,11,11,11,11,11,10,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,13,13,13,3,13,4,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,3,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,13,13,4,4,8,13,8,3,8,16,13,3,3,13,4,4,3,13,13,8,16,13,3,13,13,13,3,3,3,13,3,13,13,3,13,13,13,13,3,3,13,11,11,11,11,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,10,11,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,10,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,10,11,11,11,11,11,11,11,11,11,11,11,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,12,8,3,4,3,3,3,13,3,3,3,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,3,3,3,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11,11,11,11,11,11,3,3,12,11,11,11,11,11,11,11,11,12,5,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,12,12,12,11,11,11,11,11,11,11,11,5,11,11,3,3,3,3,8,16,8,8,8,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,10,11,10,11,10,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,10,11],"n":["arithmetic","circuit","dev","plonk","poly","transcript","AffineExt","Base","Base","BatchInvert","CURVE_ID","Coordinates","CurveAffine","CurveExt","CurveExt","DELTA","Field","Field","FieldExt","Group","MODULUS","RESCUE_ALPHA","RESCUE_INVALPHA","ROOT_OF_UNITY","ROOT_OF_UNITY_INV","Scalar","ScalarExt","ScalarExt","SqrtTables","TWO_INV","T_MINUS1_OVER2","ZETA","a","a","b","b","batch_invert","batch_invert","best_fft","best_multiexp","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","compute_inner_product","conditional_select","coordinates","ct_is_zero","cube","cube","default","deref","deref","deref_mut","deref_mut","double","double","drop","drop","endo","eval_polynomial","fmt","fmt","from","from","from_bytes","from_bytes_wide","from_u128","from_u64","from_xy","get_lower_128","get_lower_32","group_add","group_scale","group_sub","group_zero","hash_to_curve","init","init","into","into","invert","invert","is_on_curve","is_on_curve","is_zero","is_zero","jacobian_coordinates","kate_division","lagrange_interpolate","new","new_jacobian","one","one","parallelize","pow","pow_by_t_minus1_over2","pow_vartime","pow_vartime","rand","random","random","read","read","small_multiexp","sqrt","sqrt","sqrt_alt","sqrt_alt","sqrt_ratio","sqrt_ratio","square","square","to_bytes","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","u","v","vzip","vzip","write","write","x","y","zero","zero","Cell","Chip","Config","Layouter","Loaded","NamespacedLayouter","Region","RegionIndex","RegionStart","Root","SimpleFloorPlanner","assign_advice","assign_fixed","assign_region","assign_region","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","config","constrain_equal","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","drop","drop","eq","floor_planner","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","get_root","get_root","init","init","init","init","init","init","into","into","into","into","into","into","layouter","loaded","namespace","ne","pop_namespace","pop_namespace","push_namespace","push_namespace","synthesize","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","V1","V1Pass","assign_region","borrow","borrow","borrow_mut","borrow_mut","deref","deref","deref_mut","deref_mut","drop","drop","fmt","fmt","from","from","get_root","init","init","into","into","pop_namespace","push_namespace","synthesize","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","RegionLayouter","RegionShape","assign_advice","assign_advice","assign_fixed","assign_fixed","borrow","borrow_mut","clone","clone_into","columns","constrain_equal","constrain_equal","deref","deref_mut","drop","enable_selector","enable_selector","fmt","from","init","into","new","region_index","row_count","to_owned","try_from","try_into","type_id","vzip","Cell","Constraint","Lookup","MockProver","Permutation","VerifyFailure","assign_advice","assign_fixed","borrow","borrow","borrow_mut","borrow_mut","copy","deref","deref","deref_mut","deref_mut","drop","drop","enable_selector","enter_region","eq","exit_region","fmt","fmt","fmt","from","from","init","init","into","into","metadata","ne","pop_namespace","push_namespace","run","to_string","try_from","try_from","try_into","try_into","type_id","type_id","verify","vzip","vzip","column","column","constraint","gate","lookup_index","offset","perm_index","region","row","row","row","Constraint","Gate","Region","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","deref","deref","deref_mut","deref_mut","deref_mut","drop","drop","drop","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","init","init","init","into","into","into","ne","ne","ne","to_string","to_string","to_string","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","Advice","Advice","Advice","Any","Assigned","Assignment","BoundsFailure","Circuit","Column","ColumnType","Config","Constant","Constraint","ConstraintSystem","ConstraintSystemFailure","Error","Expression","Fixed","Fixed","Fixed","FloorPlanner","FloorPlanner","IncompatibleParams","Instance","Instance","Instance","OpeningError","Permutation","PinnedConstraintSystem","PinnedVerificationKey","Product","ProvingKey","Rational","Scaled","Selector","Sum","SynthesisError","TranscriptError","Trivial","VerifyingKey","VirtualCells","Zero","add","add","add","advice_column","assign_advice","assign_fixed","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","configure","copy","create_gate","create_proof","default","degree","degree","denominator","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","enable","enable_selector","enter_region","eq","eq","eq","eq","eq","eq","eq","evaluate","evaluate","exit_region","fixed_column","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","get_domain","get_vk","hash","hash","hash","hash","hash","hash","hash_into","index","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","instance_column","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","invert","keygen_pk","keygen_vk","lookup","mapping","mul","mul","mul","mul","ne","ne","ne","neg","neg","new","numerator","partial_cmp","permutation","pinned","pinned","pop_namespace","push_namespace","query_advice","query_any","query_fixed","query_instance","query_selector","read","selector","square","sub","sub","sub","synthesize","synthesize","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","verify_proof","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","without_witnesses","write","0","Basis","Coeff","Error","EvaluationDomain","ExtendedLagrangeCoeff","LagrangeCoeff","OpeningError","PinnedEvaluationDomain","Polynomial","Rotation","SamplingError","add","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","coeff_from_vec","coeff_to_extended","commitment","constant_extended","constant_lagrange","cur","default","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","divide_by_vanishing_poly","drop","drop","drop","drop","drop","drop","drop","drop","empty_coeff","empty_extended","empty_lagrange","eq","extended_len","extended_to_coeff","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","get_barycentric_weight","get_extended_omega","get_omega","get_omega_inv","get_quotient_poly_degree","index","index","index","index_mut","index_mut","index_mut","init","init","init","init","init","init","init","init","into","into","into","into","into","into","into","into","iter","iter_mut","lagrange_from_vec","lagrange_to_coeff","mul","mul","multiopen","ne","new","next","num_coeffs","one_minus","pinned","prev","rotate","rotate_omega","sub","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","0","Accumulator","Blind","Guard","MSM","Params","add","add_assign","add_assign","add_constant_term","add_msm","add_to_g_scalars","add_to_h_scalar","add_to_u_scalar","append_term","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","challenges_packed","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","commit","commit_lagrange","compute_g","create_proof","default","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","empty_msm","eq","eval","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","g","get_g","init","init","init","init","init","into","into","into","into","into","mul","mul_assign","mul_assign","ne","new","new","read","scale","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","use_challenges","use_g","verify_proof","vzip","vzip","vzip","vzip","vzip","write","ProverQuery","VerifierQuery","blind","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","commitment","create_proof","deref","deref","deref_mut","deref_mut","drop","drop","eval","fmt","fmt","from","from","init","init","into","into","point","point","poly","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","verify_proof","vzip","vzip","Blake2bRead","Blake2bWrite","Challenge255","ChallengeScalar","EncodedChallenge","Input","Transcript","TranscriptRead","TranscriptWrite","as_challenge_scalar","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","common_point","common_point","common_point","common_scalar","common_scalar","common_scalar","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","finalize","fmt","fmt","fmt","fmt","from","from","from","from","get_scalar","get_scalar","init","init","init","init","init","init","into","into","into","into","new","new","read_point","read_point","read_scalar","read_scalar","squeeze_challenge","squeeze_challenge","squeeze_challenge","squeeze_challenge_scalar","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","write_point","write_point","write_scalar","write_scalar"],"q":["halo2","","","","","","halo2::arithmetic","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","halo2::circuit","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","halo2::circuit::floor_planner","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","halo2::circuit::layouter","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","halo2::dev","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","halo2::dev::VerifyFailure","","","","","","","","","","","halo2::dev::metadata","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","halo2::plonk","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","halo2::poly","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","halo2::poly::commitment","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","halo2::poly::multiopen","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","halo2::transcript","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"d":["This module provides common utilities, traits and …","Traits and structs for implementing circuit components.","Tools for developing circuits.","This module provides an implementation of a variant of …","Contains utilities for performing arithmetic over …","This module contains utilities and traits for dealing …","The affine version of the curve","The base field over which this elliptic curve is …","The base field over which this elliptic curve is …","Extension trait for iterators over mutable field elements …","CURVE_ID used for hash-to-curve.","The affine coordinates of a point on an elliptic curve.","This trait is the affine counterpart to Curve and is used …","This trait is a common interface for dealing with …","The projective form of the curve","Generator of the $t-order$ multiplicative subgroup","This trait represents an element of a field.","This trait represents an element of a field.","This trait is a common interface for dealing with …","This represents an element of a group with basic …","Modulus of the field written as a string for display …","Ideally the smallest prime $\\\\alpha$ such that gcd($p - …","$RESCUE_INVALPHA \\\\cdot RESCUE_ALPHA = 1 \\\\mod p - 1$ such …","Generator of the $2^S$ multiplicative subgroup","Inverse of ROOT_OF_UNITY","The group is assumed to be of prime order $p$. Scalar is …","The scalar field of this elliptic curve.","The scalar field of this elliptic curve.","Tables used for square root computation.","Inverse of $2$ in the field.","The value $(T-1)/2$ such that $2^S \\\\cdot T = p - 1$ with …","Element of multiplicative order $3$.","Returns the curve constant a.","Returns the curve constant $a$.","Returns the curve constant b.","Returns the curve constant $b$.","Consume this iterator and invert each field element (when …","Performs a batch inversion using Montgomery’s trick, …","Performs a radix-$2$ Fast-Fourier Transformation (FFT) on …","Performs a multi-exponentiation operation.","","","","","","","This computes the inner product of two vectors a and b.","","Gets the coordinates of this point.","Returns whether or not this element is zero.","Cubes this element.","Cubes this element.","","","","","","Doubles this element.","Doubles this element.","","","Apply the curve endomorphism by multiplying the …","This evaluates a provided polynomial (in coefficient …","","","","","Attempts to obtain a field element from its normalized, …","Obtains a field element that is congruent to the provided …","Obtains a field element congruent to the integer v.","Obtains a field element congruent to the integer v.","Obtains a point given $(x, y)$, failing if it is not on …","Gets the lower 128 bits of this field element when …","Gets the lower 32 bits of this field element when …","Adds rhs to this group element.","Scales this group element by a scalar.","Subtracts rhs from this group element.","Returns the additive identity of the group.","Requests a hasher that accepts messages and returns …","","","","","Computes the multiplicative inverse of this element, …","Computes the multiplicative inverse of this element, …","Returns whether or not this element is on the curve; …","Returns whether or not this element is on the curve; …","Returns true iff this element is zero.","Returns true iff this element is zero.","Return the Jacobian coordinates of this point.","Divides polynomial a in X by X - b with no remainder.","Returns coefficients of an n - 1 degree polynomial given …","Build tables given parameters for the perfect hash.","Obtains a point given Jacobian coordinates $X : Y : Z$, …","Returns the one element of the field, the multiplicative …","Returns the one element of the field, the multiplicative …","This simple utility function will parallelize an …","Exponentiates self by by, where by is a little-endian …","Raise this field element to the power T_MINUS1_OVER2. …","Exponentiates self by exp, where exp is a little-endian …","Exponentiates self by exp, where exp is a little-endian …","This computes a random element of the field using system …","Returns an element chosen uniformly at random using a …","Returns an element chosen uniformly at random using a …","Reads a compressed element from the buffer and attempts …","Reads a normalized, little endian represented field …","Performs a small multi-exponentiation operation. Uses the …","Returns the square root of the field element, if it is …","Returns the square root of the field element, if it is …","Equivalent to sqrt_ratio(self, one()).","Same as sqrt_ratio(u, one()) but more efficient.","Computes:","Computes:","Squares this element.","Squares this element.","Converts this field element to its normalized, little …","","","","","","","","Returns the u-coordinate.","Returns the v-coordinate.","","","Writes an element in compressed form to the buffer.","Writes this element in its normalized, little endian form …","Returns the x-coordinate.","Returns the y-coordinate.","Returns the zero element of the field, the additive …","Returns the zero element of the field, the additive …","A pointer to a cell within a circuit.","A chip implements a set of instructions that can be used …","A type that holds the configuration for this chip, and …","A layout strategy within a circuit. The layouter is …","A type that holds any general chip state that needs to be …","This is a “namespaced” layouter which borrows a …","A region of the circuit in which a Chip can assign cells.","Index of a region in a layouter","Starting row of a region in a layouter","Represents the type of the “root” of this layouter, …","A simple FloorPlanner that performs minimal optimizations.","Assign an advice column value (witness).","Assign a fixed value.","Assign a region of gates to an absolute row number.","","","","","","","","","","","","","","","","","","","","The chip holds its own configuration.","Constraint two cells to have the same value.","","","","","","","","","","","","","","","","","","","","","","","Implementations of common circuit floor planners.","","","","","","","","","","","","","","","","Gets the “root” of this assignment, bypassing the …","","","","","","","","","","","","","","Implementations of common circuit layouters.","Provides access to general chip state loaded at the …","Enters into a namespace.","","Exits out of the existing namespace.","","Creates a new (sub)namespace and enters into it.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The version 1 FloorPlanner provided by halo2.","A single pass of the V1 layouter.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Helper trait for implementing a custom Layouter.","The shape of a region. For a region at a certain index, …","Assign an advice column value (witness)","","Assign a fixed value","","","","","","Get a reference to the set of columns used in a …","Constraint two cells to have the same value.","","","","","Enables a selector at the given offset.","","","","","","Create a new RegionShape for a region at region_index.","Get the region_index of a RegionShape.","Get the row_count of a RegionShape.","","","","","","A cell used in an active gate was not assigned to.","A constraint was not satisfied for a particular row.","A lookup input did not exist in its corresponding table.","A test prover for debugging circuits.","A permutation did not preserve the original value of a …","The reasons why a particular circuit is not satisfied.","","","","","","","","","","","","","","","","","","","","","","","","","","","Metadata about circuits.","","","","Runs a synthetic keygen-and-prove operation on the given …","","","","","","","","Returns Ok(()) if this MockProver is satisfied, or a list …","","","The column in which this cell should be assigned.","The column in which this permutation is not satisfied.","The polynomial constraint that is not satisfied.","The index of the active gate.","The index of the lookup that is not satisfied. These …","The offset (relative to the start of the region) at which …","The index of the permutation that is not satisfied. These …","The region in which this cell should be assigned.","The row on which this constraint is not satisfied.","The row on which this lookup is not satisfied.","The row on which this permutation is not satisfied.","Metadata about a configured constraint within a circuit.","Metadata about a configured gate within a circuit.","Metadata about an assigned region within a circuit.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","An advice column","An Advice variant","This is an advice (witness) column queried at a certain …","An enum over the Advice, Fixed, Instance structs","A value assigned to a cell within a circuit.","This trait allows a Circuit to direct some backend to …","Out of bounds index passed to a backend","This is a trait that circuits provide implementations for …","A column with an index and type","A column type","This is a configuration object that stores things like …","This is a constant polynomial","An individual polynomial constraint.","This is a description of the circuit environment, such as …","The constraint system is not satisfied.","This is an error that could occur during proving or …","Low-degree expression representing an identity that must …","A fixed column","A Fixed variant","This is a fixed column queried at a certain relative …","A floor planning strategy for a circuit.","The floor planner used for this circuit. This is an …","The structured reference string or the parameters are not …","An instance column","An Instance variant","This is an instance (external) column queried at a …","Opening error","A permutation.","Represents the minimal parameters that determine a …","Minimal representation of a verification key that can be …","This is the product of two polynomials","This is a proving key which allows for the creation of …","A value stored as a fraction to enable batch inversion.","This is a scaled polynomial","A selector, representing a fixed boolean value per row of …","This is the sum of two polynomials","This is an error that can occur during synthesis of the …","Transcript error","A value that does not require inversion to evaluate.","This is a verifying key which allows for the verification …","Exposes the “virtual cells” that can be queried while …","The field element zero.","","","","Allocate a new advice column","Assign an advice column value (witness)","Assign a fixed value","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The circuit is given an opportunity to describe the exact …","Assign two cells to have the same value","Creates a new gate.","This creates a proof for the provided circuit when given …","","Compute the degree of this polynomial","Compute the degree of the constraint system (the maximum …","Returns the denominator, if non-trivial.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Enable this selector at the given offset within the given …","Enables a selector at the given row.","Creates a new region and enters into it.","","","","","","","","Evaluates this assigned value directly, performing an …","Evaluate the polynomial using the provided closures to …","Exits the current region.","Allocate a new fixed column","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Get the underlying EvaluationDomain.","Get the underlying VerifyingKey.","","","","","","","Hashes a verification key into a transcript.","Returns index of permutation","","","","","","","","","","","","","","","","","","Allocate a new instance column","","","","","","","","","","","","","","","","","","Inverts this assigned value.","Generate a ProvingKey from a VerifyingKey and an instance …","Generate a VerifyingKey from an instance of Circuit.","Add a lookup argument for some input expressions and …","Returns mapping of permutation","","","","","","","","","","Configures a new permutation for the given columns.","Returns the numerator.","","Add a permutation argument for some columns","Obtain a pinned version of this constraint system; a …","Obtains a pinned representation of this verification key …","Exits out of the existing namespace.","Creates a new (sub)namespace and enters into it.","Query an advice column at a relative position","Query an Any column at a relative position","Query a fixed column at a relative position","Query an instance column at a relative position","Query a selector at the current position.","Reads a verification key from a buffer.","Allocate a new selector.","Square this expression.","","","","Given the provided cs, synthesize the given circuit.","Given the provided cs, synthesize the circuit. The …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns a boolean indicating whether or not the proof is …","","","","","","","","","","","","","","","","","","Returns a copy of this circuit with no witness values …","Writes a verifying key to a buffer.","","The basis over which a polynomial is described.","The polynomial is defined as coefficients","This is an error that could occur during proving or …","This structure contains precomputed constants and other …","The polynomial is defined as coefficients of Lagrange …","The polynomial is defined as coefficients of Lagrange …","OpeningProof is not well-formed","Represents the minimal parameters that determine an …","Represents a univariate polynomial defined over a field …","Describes the relative rotation of a vector. Negative …","Caller needs to re-sample a point","","","","","","","","","","","","","","","","","","","","","","","","","","","","Obtains a polynomial in coefficient form when given a …","This takes us from an n-length coefficient vector into a …","This module contains an implementation of the polynomial …","Returns a constant polynomial in the extended Lagrange …","Returns a constant polynomial in the Lagrange coefficient …","The current location in the evaluation domain","","","","","","","","","","","","","","","","","","","","This divides the polynomial (in the extended domain) by …","","","","","","","","","Returns an empty (zero) polynomial in the coefficient …","Returns an empty (zero) polynomial in the extended …","Returns an empty (zero) polynomial in the Lagrange …","","Get the size of the extended domain","This takes us from the extended evaluation domain and …","","","","","","","","","","","","","","","","","Gets the barycentric weight of $1$ over the $2^k$ size …","Get the generator of the extended domain’s …","Get $\\\\omega$, the generator of the $2^k$ order …","Get $\\\\omega^{-1}$, the inverse of the generator of the …","Gets the quotient polynomial’s degree (as a multiple of …","","","","","","","","","","","","","","","","","","","","","","","Iterate over the values, which are either in coefficient …","Iterate over the values mutably, which are either in …","Obtains a polynomial in Lagrange form when given a vector …","This takes us from an n-length vector into the …","","","This module contains an optimisation of the polynomial …","","This constructs a new evaluation domain object based on …","The next location in the evaluation domain","Gets the size of this polynomial in terms of the number of…","Maps every coefficient c in p to 1 - c.","Obtain a pinned version of this evaluation domain; a …","The previous location in the evaluation domain","Rotates the values in a Lagrange basis polynomial by …","Multiplies a value by some power of $\\\\omega$, essentially …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","An accumulator instance consisting of an evaluation claim …","Wrapper type around a blinding factor.","A guard returned by the verifier","A multiscalar multiplication in the polynomial commitment …","These are the public parameters for the polynomial …","","","","Add a value to the first entry of g_scalars.","Add another multiexp into this one","Add a vector of scalars to g_scalars. This function will …","Add to h_scalar","Add to u_scalar","Add arbitrary term (the scalar and the point)","","","","","","","","","","","A vector of 128-bit challenges sampled by the verifier, …","","","","","","","","","This computes a commitment to a polynomial described by …","This commits to a polynomial using its evaluations over …","Computes G + H, where G = ⟨s, params.g⟩ and H is used …","Create a polynomial commitment opening proof for the …","","","","","","","","","","","","","","","","","Generates an empty multiscalar multiplication struct …","","Perform multiexp and check that it results in zero","","","","","","","","","","","The claimed output of the linear-time polycommit opening …","Getter for g generators","","","","","","","","","","","","","","","Create a new, empty MSM using the provided parameters.","Initializes parameters for the curve, given a random …","Reads params from a buffer.","Scale all scalars in the MSM by some scaling factor","","","","","","","","","","","","","","","","","","","","Lets caller supply the challenges and obtain an MSM with …","Lets caller supply the purported G point and simply …","Checks to see if the proof represented within transcript …","","","","","","Writes params to a buffer.","A polynomial query at a point","A polynomial query at a point","blinding factor of polynomial","","","","","","","","","commitment to polynomial","Create a multi-opening proof","","","","","","","evaluation of polynomial at query point","","","","","","","","","point at which polynomial is queried","point at which polynomial is queried","coefficients of polynomial","","","","","","","","","Verify a multi-opening proof","","","We will replace BLAKE2b with an algebraic hash function …","We will replace BLAKE2b with an algebraic hash function …","A 255-bit challenge.","The scalar representation of a verifier challenge.","EncodedChallenge defines a challenge encoding with a …","The Input type used to derive the challenge encoding. For …","Generic transcript view (from either the prover or …","Transcript view from the perspective of a verifier that …","Transcript view from the perspective of a prover that has …","Cast an encoded challenge as a typed ChallengeScalar.","","","","","","","","","","","","","","","","","Writing the point to the transcript without writing it to …","","","Writing the scalar to the transcript without writing it …","","","","","","","","","","","","","","","","","Conclude the interaction and return the output buffer …","","","","","","","","","Get a scalar field element from an encoded challenge.","","","Initialize a transcript given an input buffer.","","Initialize a transcript given an output buffer.","","","","","","","Get an encoded challenge from a given input challenge.","","Read a curve point from the prover.","","Read a curve scalar from the prover.","","Squeeze an encoded verifier challenge from the transcript.","","","Squeeze a typed challenge (in the scalar field) from the …","","","","","","","","","","","","","","","","","","","","","Write a curve point to the proof and the transcript.","","Write a scalar to the proof and the transcript.",""],"i":[0,0,0,0,0,0,1,1,2,0,1,0,0,0,2,3,0,0,0,0,3,3,3,3,3,4,1,2,0,3,3,3,1,2,1,2,5,3,0,0,6,7,6,7,6,6,0,6,2,3,8,8,6,6,7,6,7,8,8,6,7,1,0,6,7,6,7,3,3,3,3,2,3,3,4,4,4,4,1,6,7,6,7,8,8,1,2,8,8,1,0,0,7,1,8,8,0,3,3,8,8,3,8,8,2,3,0,8,8,3,7,3,7,8,8,3,6,6,7,6,7,6,7,6,6,6,7,2,3,6,6,8,8,0,0,9,0,9,0,0,0,0,10,0,11,11,10,12,13,14,15,16,11,12,13,14,15,16,11,12,14,15,16,14,15,16,9,11,13,14,14,15,15,16,11,12,13,14,15,16,11,12,13,14,15,16,11,12,12,15,0,13,14,15,16,11,12,13,14,14,15,15,16,11,11,12,10,12,13,14,15,16,11,12,13,14,15,16,11,12,0,9,10,15,10,12,10,12,13,14,15,16,13,14,15,16,11,12,13,14,15,16,11,12,13,14,15,16,11,12,13,14,15,16,11,12,0,0,17,18,17,18,17,18,17,18,17,18,17,18,17,18,17,17,18,17,18,17,17,17,18,18,17,18,17,18,17,18,17,0,0,19,20,19,20,20,20,20,20,20,19,20,20,20,20,19,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,0,21,0,22,22,21,22,21,22,22,21,22,21,22,21,22,22,22,21,22,21,21,22,21,22,21,22,21,22,0,21,22,22,22,21,21,22,21,22,21,22,22,21,22,23,24,25,23,26,23,24,23,25,26,24,0,0,0,27,28,29,27,28,29,27,28,29,27,28,29,27,28,29,27,28,29,27,27,28,28,29,29,27,27,28,28,29,29,27,28,29,27,28,29,27,28,29,27,28,29,27,28,29,27,28,29,27,28,29,27,28,29,0,30,31,0,0,0,32,0,0,0,33,31,0,0,32,0,0,0,30,31,0,33,32,0,30,31,32,0,0,0,31,0,34,31,0,31,32,32,34,0,0,34,34,34,31,35,36,36,37,38,39,40,30,41,42,34,31,43,35,44,45,46,47,48,32,37,38,39,40,30,41,42,34,31,43,35,44,45,46,47,48,32,37,38,39,40,30,41,42,34,31,35,37,38,39,40,30,41,42,34,31,35,37,33,36,35,0,35,31,35,34,37,38,39,40,30,41,42,34,31,43,35,44,45,46,47,48,32,37,38,39,40,30,41,42,34,31,43,35,44,45,46,47,48,32,37,38,39,40,30,41,42,34,31,43,35,44,45,46,47,48,32,41,36,36,37,38,39,40,30,41,42,34,31,36,35,37,38,39,40,30,41,42,34,31,43,35,44,45,46,47,48,32,37,37,37,37,38,39,40,30,30,30,30,41,42,34,34,34,31,43,43,43,35,44,45,46,47,48,32,46,48,37,38,39,40,30,41,46,42,37,38,39,40,30,41,42,34,31,43,35,44,45,46,47,48,32,35,37,38,39,40,30,41,42,34,31,43,35,44,45,46,47,48,32,34,0,0,35,42,34,34,31,31,37,41,42,34,31,42,34,37,35,35,46,36,36,45,45,45,45,45,46,35,31,34,34,31,49,33,37,38,39,40,30,41,42,34,31,35,37,37,37,37,38,39,40,30,41,42,34,31,43,35,44,45,46,47,48,32,37,38,39,40,30,41,42,34,31,43,35,44,45,46,47,48,32,37,38,39,40,30,41,42,34,31,43,35,44,45,46,47,48,32,0,37,38,39,40,30,41,42,34,31,43,35,44,45,46,47,48,32,33,46,50,0,0,0,0,0,0,51,0,0,0,51,52,53,54,51,55,56,57,52,50,53,54,51,55,56,57,52,50,55,56,57,52,50,55,56,57,52,50,53,53,0,53,53,50,50,53,54,51,55,56,57,52,52,50,53,54,51,55,56,57,52,52,50,53,53,54,51,55,56,57,52,50,53,53,53,50,53,53,53,54,51,55,56,57,52,50,53,54,51,55,56,57,52,50,53,53,53,53,53,52,52,52,52,52,52,53,54,51,55,56,57,52,50,53,54,51,55,56,57,52,50,52,52,53,53,52,52,0,50,53,50,52,52,53,50,52,53,52,55,56,57,52,50,53,54,51,55,56,57,52,50,53,54,51,55,56,57,52,50,53,54,51,55,56,57,52,50,53,54,51,55,56,57,52,50,58,0,0,0,0,0,58,58,58,59,59,59,59,59,59,59,60,61,62,58,59,60,61,62,58,61,59,60,61,58,59,60,61,58,62,62,60,0,58,59,60,61,62,58,59,60,61,62,58,59,60,61,62,58,62,58,59,59,60,61,62,58,59,60,61,62,58,61,62,59,60,61,62,58,59,60,61,62,58,58,58,58,58,59,62,62,59,59,60,61,58,59,60,61,62,58,59,60,61,62,58,59,60,61,62,58,60,60,0,59,60,61,62,58,62,0,0,63,63,64,63,64,63,64,63,64,64,0,63,64,63,64,63,64,64,63,64,63,64,63,64,63,64,63,64,63,63,64,63,64,63,64,63,64,0,63,64,0,0,0,0,0,65,0,0,0,65,66,67,68,69,66,67,68,69,66,67,68,69,66,67,68,69,70,66,67,70,66,67,66,67,68,68,69,69,66,67,68,69,66,67,68,69,67,66,67,68,69,66,67,68,69,65,69,66,66,67,67,68,69,66,67,68,69,65,69,71,66,71,66,70,66,67,70,66,67,68,69,66,67,68,69,66,67,68,69,66,67,68,69,66,67,68,69,72,67,72,67],"f":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[["u32",15]]],[[]],[[]],[[]],[[]],[[]],[[],["coordinates",3]],[[]],[[],["field",8]],[[["coordinates",3],["choice",3]],["coordinates",3]],[[],[["ctoption",3,["coordinates"]],["coordinates",3]]],[[],["choice",3]],[[]],[[]],[[],["coordinates",3]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[]],[[]],[[["usize",15]]],[[["usize",15]]],[[]],[[["field",8]],["field",8]],[[["formatter",3]],[["result",4,["error"]],["error",3]]],[[["formatter",3]],[["result",4,["error"]],["error",3]]],[[]],[[]],[[],["ctoption",3]],[[]],[[["u128",15]]],[[["u64",15]]],[[],["ctoption",3]],[[],["u128",15]],[[],["u32",15]],[[]],[[]],[[]],[[]],[[["str",15]],[["box",3,["fn","global"]],["fn",8],["global",3]]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[],["ctoption",3]],[[],["ctoption",3]],[[],["choice",3]],[[],["choice",3]],[[],["bool",15]],[[],["bool",15]],[[]],[[["intoiterator",8],["field",8]],[["field",8],["vec",3]]],[[],[["vec",3],["fieldext",8]]],[[["usize",15],["u32",15]],["sqrttables",3]],[[],["ctoption",3]],[[]],[[]],[[["sync",8],["send",8],["fn",8],["clone",8]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],[["error",3],["result",4,["error"]]]],[[],[["error",3],["result",4,["error"]]]],[[]],[[],["ctoption",3]],[[],["ctoption",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[],[["error",3],["result",4,["error"]]]],[[],[["error",3],["result",4,["error"]]]],[[]],[[]],[[]],[[]],null,null,null,null,null,null,null,null,null,null,null,[[["column",3,["advice"]],["usize",15],["advice",3]],[["result",4,["cell","error"]],["cell",3],["error",4]]],[[["usize",15],["column",3,["fixed"]],["fixed",3]],[["result",4,["cell","error"]],["cell",3],["error",4]]],[[],[["error",4],["result",4,["error"]]]],[[],[["error",4],["result",4,["error"]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["regionindex",3]],[[],["regionstart",3]],[[],["cell",3]],[[]],[[]],[[]],[[]],[[["permutation",3],["cell",3]],[["error",4],["result",4,["error"]]]],[[["usize",15]]],[[]],[[["usize",15]]],[[["usize",15]]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[]],[[["usize",15]]],[[["regionstart",3]],["bool",15]],null,[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[["usize",15]],["regionindex",3]],[[]],[[]],[[["usize",15]],["regionstart",3]],[[]],[[]],[[["regionlayouter",8]]],[[]],[[]],[[]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[]],[[],["namespacedlayouter",3]],[[["regionstart",3]],["bool",15]],[[["string",3],["option",4,["string"]]]],[[["string",3],["option",4,["string"]]]],[[]],[[]],[[],[["error",4],["result",4,["error"]]]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,[[],[["error",4],["result",4,["error"]]]],[[]],[[]],[[]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[["string",3],["option",4,["string"]]]],[[]],[[],[["error",4],["result",4,["error"]]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],null,null,[[["usize",15],["column",3,["advice"]],["fn",8],["fnmut",8],["advice",3]],[["result",4,["cell","error"]],["cell",3],["error",4]]],[[["usize",15],["column",3,["advice"]],["fn",8],["fnmut",8],["advice",3]],[["result",4,["cell","error"]],["cell",3],["error",4]]],[[["usize",15],["column",3,["fixed"]],["fn",8],["fixed",3],["fnmut",8]],[["result",4,["cell","error"]],["cell",3],["error",4]]],[[["usize",15],["column",3,["fixed"]],["fn",8],["fixed",3],["fnmut",8]],[["result",4,["cell","error"]],["cell",3],["error",4]]],[[]],[[]],[[],["regionshape",3]],[[]],[[],["hashset",3]],[[["permutation",3],["cell",3]],[["error",4],["result",4,["error"]]]],[[["permutation",3],["cell",3]],[["error",4],["result",4,["error"]]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["selector",3],["usize",15],["fn",8]],[["error",4],["result",4,["error"]]]],[[["selector",3],["usize",15],["fn",8]],[["error",4],["result",4,["error"]]]],[[["formatter",3]],["result",6]],[[]],[[],["usize",15]],[[]],[[["regionindex",3]]],[[],["regionindex",3]],[[],["usize",15]],[[]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,null,null,null,[[["column",3,["advice"]],["usize",15],["advice",3]],[["error",4],["result",4,["error"]]]],[[["usize",15],["column",3,["fixed"]],["fixed",3]],[["error",4],["result",4,["error"]]]],[[]],[[]],[[]],[[]],[[["any",4],["column",3,["any"]],["usize",15],["permutation",3]],[["error",4],["result",4,["error"]]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["selector",3],["usize",15]],[["error",4],["result",4,["error"]]]],[[]],[[["verifyfailure",4]],["bool",15]],[[]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],null,[[["verifyfailure",4]],["bool",15]],[[["string",3],["option",4,["string"]]]],[[]],[[["vec",3],["u32",15],["vec",3,["vec"]]],[["result",4,["error"]],["error",4]]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],[["result",4,["vec"]],["vec",3,["verifyfailure"]]]],[[]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["gate",3]],["bool",15]],[[["constraint",3]],["bool",15]],[[["region",3]],["bool",15]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[["gate",3]],["bool",15]],[[["constraint",3]],["bool",15]],[[["region",3]],["bool",15]],[[],["string",3]],[[],["string",3]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[["assigned",4]],["assigned",4]],[[],["assigned",4]],[[["expression",4]],["expression",4]],[[],[["advice",3],["column",3,["advice"]]]],[[["column",3,["advice"]],["usize",15],["advice",3]],[["error",4],["result",4,["error"]]]],[[["usize",15],["column",3,["fixed"]],["fixed",3]],[["error",4],["result",4,["error"]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["column",3]],[[],["advice",3]],[[],["fixed",3]],[[],["instance",3]],[[],["any",4]],[[],["selector",3]],[[],["permutation",3]],[[],["assigned",4]],[[],["expression",4]],[[],["constraintsystem",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["ordering",4]],[[["constraintsystem",3]]],[[["any",4],["column",3,["any"]],["usize",15],["permutation",3]],[["error",4],["result",4,["error"]]]],[[["str",15]]],[[["params",3],["provingkey",3]],[["error",4],["result",4,["error"]]]],[[],["constraintsystem",3]],[[],["usize",15]],[[],["usize",15]],[[],["option",4]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15],["region",3]],[["error",4],["result",4,["error"]]]],[[["selector",3],["usize",15]],[["error",4],["result",4,["error"]]]],[[]],[[["column",3]],["bool",15]],[[["advice",3]],["bool",15]],[[["fixed",3]],["bool",15]],[[["instance",3]],["bool",15]],[[["any",4]],["bool",15]],[[["selector",3]],["bool",15]],[[["permutation",3]],["bool",15]],[[]],[[]],[[]],[[],[["column",3,["fixed"]],["fixed",3]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["instance",3],["column",3,["instance"]]],[["any",4],["column",3,["any"]]]],[[]],[[["column",3,["fixed"]],["fixed",3]],[["any",4],["column",3,["any"]]]],[[["column",3,["advice"]],["advice",3]],[["any",4],["column",3,["any"]]]],[[]],[[]],[[]],[[["instance",3]],["any",4]],[[]],[[["fixed",3]],["any",4]],[[["advice",3]],["any",4]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["expression",4]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["evaluationdomain",3]],[[],["verifyingkey",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["result",6]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],[["instance",3],["column",3,["instance"]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["params",3],["verifyingkey",3]],[["error",4],["result",4,["provingkey","error"]],["provingkey",3]]],[[["params",3]],[["verifyingkey",3],["result",4,["verifyingkey","error"]],["error",4]]],[[],["usize",15]],[[]],[[],["assigned",4]],[[["assigned",4]],["assigned",4]],[[["expression",4]],["expression",4]],[[],["expression",4]],[[["column",3]],["bool",15]],[[["selector",3]],["bool",15]],[[["permutation",3]],["bool",15]],[[]],[[]],[[["constraintsystem",3]]],[[]],[[],[["option",4,["ordering"]],["ordering",4]]],[[],["permutation",3]],[[],["pinnedconstraintsystem",3]],[[],["pinnedverificationkey",3]],[[["string",3],["option",4,["string"]]]],[[]],[[["column",3,["advice"]],["rotation",3],["advice",3]],["expression",4]],[[["any",4],["column",3,["any"]],["rotation",3]],["expression",4]],[[["rotation",3],["column",3,["fixed"]],["fixed",3]],["expression",4]],[[["instance",3],["column",3,["instance"]],["rotation",3]],["expression",4]],[[["selector",3]],["expression",4]],[[["params",3]],["result",6]],[[],["selector",3]],[[]],[[["assigned",4]],["assigned",4]],[[],["assigned",4]],[[["expression",4]],["expression",4]],[[],[["error",4],["result",4,["error"]]]],[[],[["error",4],["result",4,["error"]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["any",4],["column",3,["any"]]],["result",4]],[[],["result",4]],[[["any",4],["column",3,["any"]]],["result",4]],[[["any",4],["column",3,["any"]]],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[["msm",3],["verifyingkey",3],["curveaffine",8],["params",3]],[["guard",3],["result",4,["guard","error"]],["error",4]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["result",6]],null,null,null,null,null,null,null,null,null,null,null,null,[[["polynomial",3]],["polynomial",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["coeff",3]],[[],["lagrangecoeff",3]],[[],["extendedlagrangecoeff",3]],[[],["polynomial",3]],[[],["rotation",3]],[[]],[[]],[[]],[[]],[[]],[[["vec",3]],[["polynomial",3,["coeff"]],["coeff",3]]],[[["polynomial",3,["coeff"]],["coeff",3],["rotation",3]],[["extendedlagrangecoeff",3],["polynomial",3,["extendedlagrangecoeff"]]]],null,[[],[["extendedlagrangecoeff",3],["polynomial",3,["extendedlagrangecoeff"]]]],[[],[["polynomial",3,["lagrangecoeff"]],["lagrangecoeff",3]]],[[],["rotation",3]],[[],["rotation",3]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[]],[[["usize",15]]],[[["usize",15]]],[[["extendedlagrangecoeff",3],["polynomial",3,["extendedlagrangecoeff"]]],[["extendedlagrangecoeff",3],["polynomial",3,["extendedlagrangecoeff"]]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],[["polynomial",3,["coeff"]],["coeff",3]]],[[],[["extendedlagrangecoeff",3],["polynomial",3,["extendedlagrangecoeff"]]]],[[],[["polynomial",3,["lagrangecoeff"]],["lagrangecoeff",3]]],[[["rotation",3]],["bool",15]],[[],["usize",15]],[[["extendedlagrangecoeff",3],["polynomial",3,["extendedlagrangecoeff"]]],["vec",3]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["usize",15]],[[["usize",15]]],[[["rangefull",3]]],[[["usize",15],["rangefrom",3,["usize"]]]],[[["usize",15],["rangefrom",3,["usize"]]]],[[["rangefull",3]]],[[["usize",15]]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["vec",3]],[["polynomial",3,["lagrangecoeff"]],["lagrangecoeff",3]]],[[["polynomial",3,["lagrangecoeff"]],["lagrangecoeff",3]],[["polynomial",3,["coeff"]],["coeff",3]]],[[["polynomial",3]],[["extendedlagrangecoeff",3],["polynomial",3,["extendedlagrangecoeff"]]]],[[],["polynomial",3]],null,[[["rotation",3]],["bool",15]],[[["u32",15]]],[[],["rotation",3]],[[],["usize",15]],[[]],[[],["pinnedevaluationdomain",3]],[[],["rotation",3]],[[["rotation",3]],[["polynomial",3,["lagrangecoeff"]],["lagrangecoeff",3]]],[[["rotation",3]]],[[["polynomial",3]],["polynomial",3]],[[]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,null,[[["blind",3]]],[[]],[[["blind",3]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[],["msm",3]],[[],["guard",3]],[[],["accumulator",3]],[[],["blind",3]],[[]],[[]],[[]],[[]],[[["polynomial",3],["blind",3]]],[[["polynomial",3],["blind",3]]],[[]],[[["params",3],["polynomial",3],["blind",3]],["result",6]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[],["msm",3]],[[["blind",3]],["bool",15]],[[],["bool",15]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],null,[[],["vec",3]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[["blind",3]]],[[["blind",3]]],[[]],[[["blind",3]],["bool",15]],[[["params",3]]],[[["u32",15]]],[[],["result",6]],[[]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["msm",3]],[[]],[[["msm",3],["curveaffine",8],["params",3]],[["guard",3],["error",4],["result",4,["guard","error"]]]],[[]],[[]],[[]],[[]],[[]],[[],["result",6]],null,null,null,[[]],[[]],[[]],[[]],[[],["proverquery",3]],[[],["verifierquery",3]],[[]],[[]],null,[[["params",3]],["result",6]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],null,[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],null,null,null,[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[["msm",3],["curveaffine",8],["params",3]],[["guard",3],["error",4],["result",4,["guard","error"]]]],[[]],[[]],null,null,null,null,null,null,null,null,null,[[],["challengescalar",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["blake2bread",3]],[[],["blake2bwrite",3]],[[],["challengescalar",3]],[[],["challenge255",3]],[[]],[[]],[[]],[[]],[[],["result",6]],[[],["result",6]],[[],["result",6]],[[],["result",6]],[[],["result",6]],[[],["result",6]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[]],[[["usize",15]]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["usize",15]],[[]],[[],["usize",15]],[[]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["result",6]],[[],["result",6]],[[],["result",6]],[[],["result",6]],[[]],[[],["challenge255",3]],[[],["challenge255",3]],[[],["challengescalar",3]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[],["result",6]],[[],["result",6]],[[],["result",6]],[[],["result",6]]],"p":[[8,"CurveExt"],[8,"CurveAffine"],[8,"FieldExt"],[8,"Group"],[8,"BatchInvert"],[3,"Coordinates"],[3,"SqrtTables"],[8,"Field"],[8,"Chip"],[8,"Layouter"],[3,"Region"],[3,"NamespacedLayouter"],[3,"SimpleFloorPlanner"],[3,"RegionIndex"],[3,"RegionStart"],[3,"Cell"],[3,"V1Pass"],[3,"V1"],[8,"RegionLayouter"],[3,"RegionShape"],[4,"VerifyFailure"],[3,"MockProver"],[13,"Cell"],[13,"Permutation"],[13,"Constraint"],[13,"Lookup"],[3,"Gate"],[3,"Constraint"],[3,"Region"],[4,"Any"],[4,"Expression"],[4,"Error"],[8,"Circuit"],[4,"Assigned"],[3,"ConstraintSystem"],[8,"Assignment"],[3,"Column"],[3,"Advice"],[3,"Fixed"],[3,"Instance"],[3,"Selector"],[3,"Permutation"],[3,"Constraint"],[3,"PinnedConstraintSystem"],[3,"VirtualCells"],[3,"VerifyingKey"],[3,"PinnedVerificationKey"],[3,"ProvingKey"],[8,"FloorPlanner"],[3,"Rotation"],[4,"Error"],[3,"Polynomial"],[3,"EvaluationDomain"],[3,"PinnedEvaluationDomain"],[3,"Coeff"],[3,"LagrangeCoeff"],[3,"ExtendedLagrangeCoeff"],[3,"Blind"],[3,"MSM"],[3,"Guard"],[3,"Accumulator"],[3,"Params"],[3,"ProverQuery"],[3,"VerifierQuery"],[8,"EncodedChallenge"],[3,"Blake2bRead"],[3,"Blake2bWrite"],[3,"ChallengeScalar"],[3,"Challenge255"],[8,"Transcript"],[8,"TranscriptRead"],[8,"TranscriptWrite"]]}\ +}'); +if (window.initSearch) {window.initSearch(searchIndex)}; \ No newline at end of file diff --git a/rustdoc/latest/search.js b/rustdoc/latest/search.js new file mode 100644 index 00000000..798e252d --- /dev/null +++ b/rustdoc/latest/search.js @@ -0,0 +1 @@ +(function(){var itemTypes=["mod","externcrate","import","struct","enum","fn","type","static","trait","impl","tymethod","method","structfield","variant","macro","primitive","associatedtype","constant","associatedconstant","union","foreigntype","keyword","existential","attr","derive","traitalias"];var TY_PRIMITIVE=itemTypes.indexOf("primitive");var TY_KEYWORD=itemTypes.indexOf("keyword");function printTab(nb){if(nb===0||nb===1||nb===2){searchState.currentTab=nb}var nb_copy=nb;onEachLazy(document.getElementById("titles").childNodes,function(elem){if(nb_copy===0){addClass(elem,"selected")}else{removeClass(elem,"selected")}nb_copy-=1});onEachLazy(document.getElementById("results").childNodes,function(elem){if(nb===0){addClass(elem,"active")}else{removeClass(elem,"active")}nb-=1})}function removeEmptyStringsFromArray(x){for(var i=0,len=x.length;i-1){var obj=searchIndex[results[i].id];obj.lev=results[i].lev;var res=buildHrefAndPath(obj);obj.displayPath=pathSplitter(res[0]);obj.fullPath=obj.displayPath+obj.name;obj.fullPath+="|"+obj.ty;obj.href=res[1];out.push(obj);if(out.length>=MAX_RESULTS){break}}}return out}function sortResults(results,isType){var ar=[];for(var entry in results){if(hasOwnPropertyRustdoc(results,entry)){ar.push(results[entry])}}results=ar;var i,len,result;for(i=0,len=results.length;ib?+1:-1)}a=(aaa.index<0);b=(bbb.index<0);if(a!==b){return a-b}a=aaa.index;b=bbb.index;if(a!==b){return a-b}if((aaa.item.ty===TY_PRIMITIVE&&bbb.item.ty!==TY_KEYWORD)||(aaa.item.ty===TY_KEYWORD&&bbb.item.ty!==TY_PRIMITIVE)){return-1}if((bbb.item.ty===TY_PRIMITIVE&&aaa.item.ty!==TY_PRIMITIVE)||(bbb.item.ty===TY_KEYWORD&&aaa.item.ty!==TY_KEYWORD)){return 1}a=(aaa.item.desc==="");b=(bbb.item.desc==="");if(a!==b){return a-b}a=aaa.item.ty;b=bbb.item.ty;if(a!==b){return a-b}a=aaa.item.path;b=bbb.item.path;if(a!==b){return(a>b?+1:-1)}return 0});for(i=0,len=results.length;i"));return{name:val.substring(0,val.indexOf("<")),generics:values.split(/\s*,\s*/),}}return{name:val,generics:[],}}function getObjectNameFromId(id){if(typeof id==="number"){return searchIndex[id].name}return id}function checkGenerics(obj,val){var tmp_lev,elem_name;if(val.generics.length>0){if(obj.length>GENERICS_DATA&&obj[GENERICS_DATA].length>=val.generics.length){var elems=Object.create(null);var elength=obj[GENERICS_DATA].length;for(var x=0;xGENERICS_DATA&&obj[GENERICS_DATA].length>0){var elems=Object.create(null);len=obj[GENERICS_DATA].length;for(x=0;xGENERICS_DATA&&obj[GENERICS_DATA].length!==0){var tmp_lev=checkGenerics(obj,val);if(tmp_lev<=MAX_LEV_DISTANCE){return tmp_lev}}}}else if(literalSearch){if((!val.generics||val.generics.length===0)&&obj.length>GENERICS_DATA&&obj[GENERICS_DATA].length>0){return obj[GENERICS_DATA].some(function(name){return name===val.name})}return false}lev_distance=Math.min(levenshtein(obj[NAME],val.name),lev_distance);if(lev_distance<=MAX_LEV_DISTANCE){lev_distance=Math.ceil((checkGenerics(obj,val)+lev_distance)/2)}else if(obj.length>GENERICS_DATA&&obj[GENERICS_DATA].length>0){var olength=obj[GENERICS_DATA].length;for(x=0;x0){var length=obj.type[INPUTS_DATA].length;for(var i=0;iOUTPUT_DATA){var ret=obj.type[OUTPUT_DATA];if(typeof ret[0]==="string"){ret=[ret]}for(var x=0,len=ret.length;xlength){return MAX_LEV_DISTANCE+1}for(var i=0;ilength){break}var lev_total=0;var aborted=false;for(var x=0;xMAX_LEV_DISTANCE){aborted=true;break}lev_total+=lev}if(!aborted){ret_lev=Math.min(ret_lev,Math.round(lev_total/clength))}}return ret_lev}function typePassesFilter(filter,type){if(filter<=NO_TYPE_FILTER)return true;if(filter===type)return true;var name=itemTypes[type];switch(itemTypes[filter]){case"constant":return name==="associatedconstant";case"fn":return name==="method"||name==="tymethod";case"type":return name==="primitive"||name==="associatedtype";case"trait":return name==="traitalias"}return false}function createAliasFromItem(item){return{crate:item.crate,name:item.name,path:item.path,desc:item.desc,ty:item.ty,parent:item.parent,type:item.type,is_alias:true,}}function handleAliases(ret,query,filterCrates){var aliases=[];var crateAliases=[];if(filterCrates!==undefined){if(ALIASES[filterCrates]&&ALIASES[filterCrates][query.search]){var query_aliases=ALIASES[filterCrates][query.search];var len=query_aliases.length;for(var i=0;iMAX_RESULTS){ret.others.pop()}};onEach(aliases,pushFunc);onEach(crateAliases,pushFunc)}var nSearchWords=searchWords.length;var i,it;var ty;var fullId;var returned;var in_args;var len;if((val.charAt(0)==="\""||val.charAt(0)==="'")&&val.charAt(val.length-1)===val.charAt(0)){val=extractGenerics(val.substr(1,val.length-2));for(i=0;i")>-1){var trimmer=function(s){return s.trim()};var parts=val.split("->").map(trimmer);var input=parts[0];var inputs=input.split(",").map(trimmer).sort();for(i=0,len=inputs.length;i1?paths.length-1:1);var lev,j;for(j=0;j1){lev=checkPath(contains,paths[paths.length-1],ty);if(lev>MAX_LEV_DISTANCE){continue}else if(lev>0){lev_add=lev/10}}returned=MAX_LEV_DISTANCE+1;in_args=MAX_LEV_DISTANCE+1;var index=-1;lev=MAX_LEV_DISTANCE+1;fullId=ty.id;if(searchWords[j].indexOf(split[i])>-1||searchWords[j].indexOf(val)>-1||ty.normalizedName.indexOf(val)>-1){if(typePassesFilter(typeFilter,ty.ty)&&results[fullId]===undefined){index=ty.normalizedName.indexOf(val)}}if((lev=levenshtein(searchWords[j],val))<=MAX_LEV_DISTANCE){if(typePassesFilter(typeFilter,ty.ty)){lev+=1}else{lev=MAX_LEV_DISTANCE+1}}in_args=findArg(ty,valGenerics,false,typeFilter);returned=checkReturned(ty,valGenerics,false,typeFilter);lev+=lev_add;if(lev>0&&val.length>3&&searchWords[j].indexOf(val)>-1){if(val.length<6){lev-=1}else{lev=0}}if(in_args<=MAX_LEV_DISTANCE){if(results_in_args[fullId]===undefined){results_in_args[fullId]={id:j,index:index,lev:in_args,}}results_in_args[fullId].lev=Math.min(results_in_args[fullId].lev,in_args)}if(returned<=MAX_LEV_DISTANCE){if(results_returned[fullId]===undefined){results_returned[fullId]={id:j,index:index,lev:returned,}}results_returned[fullId].lev=Math.min(results_returned[fullId].lev,returned)}if(typePassesFilter(typeFilter,ty.ty)&&(index!==-1||lev<=MAX_LEV_DISTANCE)){if(index!==-1&&paths.length<2){lev=0}if(results[fullId]===undefined){results[fullId]={id:j,index:index,lev:lev,}}results[fullId].lev=Math.min(results[fullId].lev,lev)}}}var ret={"in_args":sortResults(results_in_args,true),"returned":sortResults(results_returned,true),"others":sortResults(results,false),};handleAliases(ret,query,filterCrates);return ret}function validateResult(name,path,keys,parent){for(var i=0,len=keys.length;i-1||path.indexOf(keys[i])>-1||(parent!==undefined&&parent.name!==undefined&&parent.name.toLowerCase().indexOf(keys[i])>-1)||levenshtein(name,keys[i])<=MAX_LEV_DISTANCE)){return false}}return true}function getQuery(raw){var matches,type,query;query=raw;matches=query.match(/^(fn|mod|struct|enum|trait|type|const|macro)\s*:\s*/i);if(matches){type=matches[1].replace(/^const$/,"constant");query=query.substring(matches[0].length)}return{raw:raw,query:query,type:type,id:query+type}}function nextTab(direction){var next=(searchState.currentTab+direction+3)%searchState.focusedByTab.length;searchState.focusedByTab[searchState.currentTab]=document.activeElement;printTab(next);focusSearchResult()}function focusSearchResult(){var target=searchState.focusedByTab[searchState.currentTab]||document.querySelectorAll(".search-results.active a").item(0)||document.querySelectorAll("#titles > button").item(searchState.currentTab);if(target){target.focus()}}function buildHrefAndPath(item){var displayPath;var href;var type=itemTypes[item.ty];var name=item.name;var path=item.path;if(type==="mod"){displayPath=path+"::";href=window.rootPath+path.replace(/::/g,"/")+"/"+name+"/index.html"}else if(type==="primitive"||type==="keyword"){displayPath="";href=window.rootPath+path.replace(/::/g,"/")+"/"+type+"."+name+".html"}else if(type==="externcrate"){displayPath="";href=window.rootPath+name+"/index.html"}else if(item.parent!==undefined){var myparent=item.parent;var anchor="#"+type+"."+name;var parentType=itemTypes[myparent.ty];var pageType=parentType;var pageName=myparent.name;if(parentType==="primitive"){displayPath=myparent.name+"::"}else if(type==="structfield"&&parentType==="variant"){var enumNameIdx=item.path.lastIndexOf("::");var enumName=item.path.substr(enumNameIdx+2);path=item.path.substr(0,enumNameIdx);displayPath=path+"::"+enumName+"::"+myparent.name+"::";anchor="#variant."+myparent.name+".field."+name;pageType="enum";pageName=enumName}else{displayPath=path+"::"+myparent.name+"::"}href=window.rootPath+path.replace(/::/g,"/")+"/"+pageType+"."+pageName+".html"+anchor}else{displayPath=item.path+"::";href=window.rootPath+item.path.replace(/::/g,"/")+"/"+type+"."+name+".html"}return[displayPath,href]}function escape(content){var h1=document.createElement("h1");h1.textContent=content;return h1.innerHTML}function pathSplitter(path){var tmp=""+path.replace(/::/g,"::");if(tmp.endsWith("")){return tmp.slice(0,tmp.length-6)}return tmp}function addTab(array,query,display){var extraClass="";if(display===true){extraClass=" active"}var output=document.createElement("div");var duplicates={};var length=0;if(array.length>0){output.className="search-results "+extraClass;array.forEach(function(item){if(item.is_alias!==true){if(duplicates[item.fullPath]){return}duplicates[item.fullPath]=true}var name=item.name;var type=itemTypes[item.ty];length+=1;var extra="";if(type==="primitive"){extra=" (primitive type)"}else if(type==="keyword"){extra=" (keyword)"}var link=document.createElement("a");link.className="result-"+type;link.href=item.href;var wrapper=document.createElement("div");var resultName=document.createElement("div");resultName.className="result-name";if(item.is_alias){var alias=document.createElement("span");alias.className="alias";var bold=document.createElement("b");bold.innerText=item.alias;alias.appendChild(bold);alias.insertAdjacentHTML("beforeend"," - see ");resultName.appendChild(alias)}resultName.insertAdjacentHTML("beforeend",item.displayPath+""+name+extra+"");wrapper.appendChild(resultName);var description=document.createElement("div");description.className="desc";var spanDesc=document.createElement("span");spanDesc.insertAdjacentHTML("beforeend",item.desc);description.appendChild(spanDesc);wrapper.appendChild(description);link.appendChild(wrapper);output.appendChild(link)})}else{output.className="search-failed"+extraClass;output.innerHTML="No results :(
"+"Try on DuckDuckGo?

"+"Or try looking in one of these:"}return[output,length]}function makeTabHeader(tabNb,text,nbElems){if(searchState.currentTab===tabNb){return""}return""}function showResults(results,go_to_first){var search=searchState.outputElement();if(go_to_first||(results.others.length===1&&getSettingValue("go-to-only-result")==="true"&&(!search.firstChild||search.firstChild.innerText!==searchState.loadingText))){var elem=document.createElement("a");elem.href=results.others[0].href;removeClass(elem,"active");document.body.appendChild(elem);elem.click();return}var query=getQuery(searchState.input.value);currentResults=query.id;var ret_others=addTab(results.others,query);var ret_in_args=addTab(results.in_args,query,false);var ret_returned=addTab(results.returned,query,false);var currentTab=searchState.currentTab;if((currentTab===0&&ret_others[1]===0)||(currentTab===1&&ret_in_args[1]===0)||(currentTab===2&&ret_returned[1]===0)){if(ret_others[1]!==0){currentTab=0}else if(ret_in_args[1]!==0){currentTab=1}else if(ret_returned[1]!==0){currentTab=2}}var output="

Results for "+escape(query.query)+(query.type?" (type: "+escape(query.type)+")":"")+"

"+"
"+makeTabHeader(0,"In Names",ret_others[1])+makeTabHeader(1,"In Parameters",ret_in_args[1])+makeTabHeader(2,"In Return Types",ret_returned[1])+"
";var resultsElem=document.createElement("div");resultsElem.id="results";resultsElem.appendChild(ret_others[0]);resultsElem.appendChild(ret_in_args[0]);resultsElem.appendChild(ret_returned[0]);search.innerHTML=output;search.appendChild(resultsElem);searchState.focusedByTab=[null,null,null];searchState.showResults(search);var elems=document.getElementById("titles").childNodes;elems[0].onclick=function(){printTab(0)};elems[1].onclick=function(){printTab(1)};elems[2].onclick=function(){printTab(2)};printTab(currentTab)}function execSearch(query,searchWords,filterCrates){function getSmallest(arrays,positions,notDuplicates){var start=null;for(var it=0,len=positions.length;itpositions[it]&&(start===null||start>arrays[it][positions[it]].lev)&&!notDuplicates[arrays[it][positions[it]].fullPath]){start=arrays[it][positions[it]].lev}}return start}function mergeArrays(arrays){var ret=[];var positions=[];var notDuplicates={};for(var x=0,arrays_len=arrays.length;xpositions[x]&&arrays[x][positions[x]].lev===smallest&&!notDuplicates[arrays[x][positions[x]].fullPath]){ret.push(arrays[x][positions[x]]);notDuplicates[arrays[x][positions[x]].fullPath]=true;positions[x]+=1}}}return ret}function tokenizeQuery(raw){var i,matched;var l=raw.length;var depth=0;var nextAngle=/(<|>)/g;var ret=[];var start=0;for(i=0;i'){depth+=1}break;case">":if(depth>0){depth-=1}break;case",":if(depth===0){ret.push(raw.substring(start,i));start=i+1}break}}if(start!==i){ret.push(raw.substring(start,i))}return ret}var queries=tokenizeQuery(query.raw);var results={"in_args":[],"returned":[],"others":[],};for(var i=0,len=queries.length;i1){return{"in_args":mergeArrays(results.in_args),"returned":mergeArrays(results.returned),"others":mergeArrays(results.others),}}return{"in_args":results.in_args[0],"returned":results.returned[0],"others":results.others[0],}}function getFilterCrates(){var elem=document.getElementById("crate-search");if(elem&&elem.value!=="All crates"&&hasOwnPropertyRustdoc(rawSearchIndex,elem.value)){return elem.value}return undefined}function search(e,forced){var params=searchState.getQueryStringParams();var query=getQuery(searchState.input.value.trim());if(e){e.preventDefault()}if(query.query.length===0){return}if(!forced&&query.id===currentResults){if(query.query.length>0){searchState.putBackSearch(searchState.input)}return}searchState.title="Results for "+query.query+" - Rust";if(searchState.browserSupportsHistoryApi()){var newURL=getNakedUrl()+"?search="+encodeURIComponent(query.raw)+window.location.hash;if(!history.state&&!params.search){history.pushState(query,"",newURL)}else{history.replaceState(query,"",newURL)}}var filterCrates=getFilterCrates();showResults(execSearch(query,index,filterCrates),params.go_to_first)}function buildIndex(rawSearchIndex){searchIndex=[];var searchWords=[];var i,word;var currentIndex=0;var id=0;for(var crate in rawSearchIndex){if(!hasOwnPropertyRustdoc(rawSearchIndex,crate)){continue}var crateSize=0;searchWords.push(crate);var crateRow={crate:crate,ty:1,name:crate,path:"",desc:rawSearchIndex[crate].doc,parent:undefined,type:null,id:id,normalizedName:crate.indexOf("_")===-1?crate:crate.replace(/_/g,""),};id+=1;searchIndex.push(crateRow);currentIndex+=1;var itemTypes=rawSearchIndex[crate].t;var itemNames=rawSearchIndex[crate].n;var itemPaths=rawSearchIndex[crate].q;var itemDescs=rawSearchIndex[crate].d;var itemParentIdxs=rawSearchIndex[crate].i;var itemFunctionSearchTypes=rawSearchIndex[crate].f;var paths=rawSearchIndex[crate].p;var aliases=rawSearchIndex[crate].a;var len=paths.length;for(i=0;i0?paths[itemParentIdxs[i]-1]:undefined,type:itemFunctionSearchTypes[i],id:id,normalizedName:word.indexOf("_")===-1?word:word.replace(/_/g,""),};id+=1;searchIndex.push(row);lastPath=row.path;crateSize+=1}if(aliases){ALIASES[crate]={};var j,local_aliases;for(var alias_name in aliases){if(!hasOwnPropertyRustdoc(aliases,alias_name)){continue}if(!hasOwnPropertyRustdoc(ALIASES[crate],alias_name)){ALIASES[crate][alias_name]=[]}local_aliases=aliases[alias_name];for(j=0,len=local_aliases.length;j0){searchState.input.value=params.search;search(e)}else{searchState.input.value="";searchState.hideResults()}})}window.onpageshow=function(){var qSearch=searchState.getQueryStringParams().search;if(searchState.input.value===""&&qSearch){searchState.input.value=qSearch}search()}}index=buildIndex(rawSearchIndex);registerSearchEvents();if(searchState.getQueryStringParams().search){search()}};if(window.searchIndex!==undefined){initSearch(window.searchIndex)}})() \ No newline at end of file diff --git a/rustdoc/latest/settings.css b/rustdoc/latest/settings.css new file mode 100644 index 00000000..67098658 --- /dev/null +++ b/rustdoc/latest/settings.css @@ -0,0 +1 @@ +.setting-line{padding:5px;position:relative;}.setting-line>div{display:inline-block;vertical-align:top;font-size:17px;padding-top:2px;}.setting-line>.title{font-size:19px;width:100%;max-width:none;border-bottom:1px solid;}.toggle{position:relative;display:inline-block;width:45px;height:27px;margin-right:20px;}.toggle input{opacity:0;position:absolute;}.select-wrapper{float:right;position:relative;height:27px;min-width:25%;}.select-wrapper select{appearance:none;-moz-appearance:none;-webkit-appearance:none;background:none;border:2px solid #ccc;padding-right:28px;width:100%;}.select-wrapper img{pointer-events:none;position:absolute;right:0;bottom:0;background:#ccc;height:100%;width:28px;padding:0px 4px;}.select-wrapper select option{color:initial;}.slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ccc;-webkit-transition:.3s;transition:.3s;}.slider:before{position:absolute;content:"";height:19px;width:19px;left:4px;bottom:4px;background-color:white;-webkit-transition:.3s;transition:.3s;}input:checked+.slider{background-color:#2196F3;}input:focus+.slider{box-shadow:0 0 0 2px #0a84ff,0 0 0 6px rgba(10,132,255,0.3);}input:checked+.slider:before{-webkit-transform:translateX(19px);-ms-transform:translateX(19px);transform:translateX(19px);}.setting-line>.sub-settings{padding-left:42px;width:100%;display:block;} \ No newline at end of file diff --git a/rustdoc/latest/settings.html b/rustdoc/latest/settings.html new file mode 100644 index 00000000..75969d2d --- /dev/null +++ b/rustdoc/latest/settings.html @@ -0,0 +1,19 @@ +Rustdoc settings + + + +

Rustdoc settings

Theme preferences
Use system theme
Preferred dark theme
Preferred light theme
+
Auto-hide item contents for large items.
Auto-hide item methods' documentation
Auto-hide trait implementation documentation
Directly go to item in search if there is only one result
Show line numbers on code examples
Disable keyboard shortcuts
+ + \ No newline at end of file diff --git a/rustdoc/latest/settings.js b/rustdoc/latest/settings.js new file mode 100644 index 00000000..b4d6fdcd --- /dev/null +++ b/rustdoc/latest/settings.js @@ -0,0 +1 @@ +(function(){function changeSetting(settingName,value){updateLocalStorage("rustdoc-"+settingName,value);switch(settingName){case"preferred-dark-theme":case"preferred-light-theme":case"use-system-theme":updateSystemTheme();break}}function handleKey(ev){if(ev.ctrlKey||ev.altKey||ev.metaKey){return}switch(getVirtualKey(ev)){case"Enter":case"Return":case"Space":ev.target.checked=!ev.target.checked;ev.preventDefault();break}}function setEvents(){onEachLazy(document.getElementsByClassName("slider"),function(elem){var toggle=elem.previousElementSibling;var settingId=toggle.id;var settingValue=getSettingValue(settingId);if(settingValue!==null){toggle.checked=settingValue==="true"}toggle.onchange=function(){changeSetting(this.id,this.checked)};toggle.onkeyup=handleKey;toggle.onkeyrelease=handleKey});onEachLazy(document.getElementsByClassName("select-wrapper"),function(elem){var select=elem.getElementsByTagName("select")[0];var settingId=select.id;var settingValue=getSettingValue(settingId);if(settingValue!==null){select.value=settingValue}select.onchange=function(){changeSetting(this.id,this.value)}})}window.addEventListener("DOMContentLoaded",setEvents)})() \ No newline at end of file diff --git a/rustdoc/latest/source-files.js b/rustdoc/latest/source-files.js new file mode 100644 index 00000000..4b856096 --- /dev/null +++ b/rustdoc/latest/source-files.js @@ -0,0 +1,3 @@ +var N = null;var sourcesIndex = {}; +sourcesIndex["halo2"] = {"name":"","dirs":[{"name":"circuit","dirs":[{"name":"floor_planner","dirs":[{"name":"v1","files":["strategy.rs"]}],"files":["single_pass.rs","v1.rs"]}],"files":["floor_planner.rs","layouter.rs"]},{"name":"dev","files":["metadata.rs"]},{"name":"plonk","dirs":[{"name":"lookup","files":["prover.rs","verifier.rs"]},{"name":"permutation","files":["keygen.rs","prover.rs","verifier.rs"]},{"name":"vanishing","files":["prover.rs","verifier.rs"]}],"files":["circuit.rs","keygen.rs","lookup.rs","permutation.rs","prover.rs","vanishing.rs","verifier.rs"]},{"name":"poly","dirs":[{"name":"commitment","files":["msm.rs","prover.rs","verifier.rs"]},{"name":"multiopen","files":["prover.rs","verifier.rs"]}],"files":["commitment.rs","domain.rs","multiopen.rs"]}],"files":["arithmetic.rs","circuit.rs","dev.rs","lib.rs","multicore.rs","plonk.rs","poly.rs","transcript.rs"]}; +createSourceSidebar(); diff --git a/rustdoc/latest/source-script.js b/rustdoc/latest/source-script.js new file mode 100644 index 00000000..5dc8fee0 --- /dev/null +++ b/rustdoc/latest/source-script.js @@ -0,0 +1 @@ +(function(){function getCurrentFilePath(){var parts=window.location.pathname.split("/");var rootPathParts=window.rootPath.split("/");for(var i=0,len=rootPathParts.length;i"){sidebar.style.left="";this.style.left="";child.innerText="<";updateLocalStorage("rustdoc-source-sidebar-show","true")}else{sidebar.style.left="-300px";this.style.left="0";child.innerText=">";updateLocalStorage("rustdoc-source-sidebar-show","false")}}function createSidebarToggle(){var sidebarToggle=document.createElement("div");sidebarToggle.id="sidebar-toggle";sidebarToggle.onclick=toggleSidebar;var inner1=document.createElement("div");inner1.style.position="relative";var inner2=document.createElement("div");inner2.style.paddingTop="3px";if(getCurrentValue("rustdoc-source-sidebar-show")==="true"){inner2.innerText="<"}else{inner2.innerText=">";sidebarToggle.style.left="0"}inner1.appendChild(inner2);sidebarToggle.appendChild(inner1);return sidebarToggle}function createSourceSidebar(){if(!window.rootPath.endsWith("/")){window.rootPath+="/"}var main=document.getElementById("main");var sidebarToggle=createSidebarToggle();main.insertBefore(sidebarToggle,main.firstChild);var sidebar=document.createElement("div");sidebar.id="source-sidebar";if(getCurrentValue("rustdoc-source-sidebar-show")!=="true"){sidebar.style.left="-300px"}var currentFile=getCurrentFilePath();var hasFoundFile=false;var title=document.createElement("div");title.className="title";title.innerText="Files";sidebar.appendChild(title);Object.keys(sourcesIndex).forEach(function(key){sourcesIndex[key].name=key;hasFoundFile=createDirEntry(sourcesIndex[key],sidebar,"",currentFile,hasFoundFile)});main.insertBefore(sidebar,main.firstChild);var selected_elem=sidebar.getElementsByClassName("selected")[0];if(typeof selected_elem!=="undefined"){selected_elem.focus()}}var lineNumbersRegex=/^#?(\d+)(?:-(\d+))?$/;function highlightSourceLines(scrollTo,match){if(typeof match==="undefined"){match=window.location.hash.match(lineNumbersRegex)}if(!match){return}var from=parseInt(match[1],10);var to=from;if(typeof match[2]!=="undefined"){to=parseInt(match[2],10)}if(tocur_line_id){var tmp=prev_line_id;prev_line_id=cur_line_id;cur_line_id=tmp}set_fragment(prev_line_id+"-"+cur_line_id)}else{prev_line_id=cur_line_id;set_fragment(cur_line_id)}}}());window.addEventListener("hashchange",function(){var match=window.location.hash.match(lineNumbersRegex);if(match){return highlightSourceLines(false,match)}});onEachLazy(document.getElementsByClassName("line-numbers"),function(el){el.addEventListener("click",handleSourceHighlight)});highlightSourceLines(true);window.createSourceSidebar=createSourceSidebar})() \ No newline at end of file diff --git a/rustdoc/latest/src/halo2/arithmetic.rs.html b/rustdoc/latest/src/halo2/arithmetic.rs.html new file mode 100644 index 00000000..e09fdb6b --- /dev/null +++ b/rustdoc/latest/src/halo2/arithmetic.rs.html @@ -0,0 +1,938 @@ +arithmetic.rs - source + + + +
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+ 32
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+ 41
+ 42
+ 43
+ 44
+ 45
+ 46
+ 47
+ 48
+ 49
+ 50
+ 51
+ 52
+ 53
+ 54
+ 55
+ 56
+ 57
+ 58
+ 59
+ 60
+ 61
+ 62
+ 63
+ 64
+ 65
+ 66
+ 67
+ 68
+ 69
+ 70
+ 71
+ 72
+ 73
+ 74
+ 75
+ 76
+ 77
+ 78
+ 79
+ 80
+ 81
+ 82
+ 83
+ 84
+ 85
+ 86
+ 87
+ 88
+ 89
+ 90
+ 91
+ 92
+ 93
+ 94
+ 95
+ 96
+ 97
+ 98
+ 99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
+399
+400
+401
+402
+403
+404
+405
+406
+407
+408
+409
+410
+411
+412
+413
+414
+415
+416
+417
+418
+419
+420
+421
+422
+423
+424
+425
+426
+427
+428
+429
+430
+431
+432
+433
+434
+435
+436
+437
+438
+439
+440
+441
+442
+443
+444
+445
+446
+447
+448
+449
+450
+451
+452
+453
+454
+455
+456
+457
+458
+459
+
+//! This module provides common utilities, traits and structures for group,
+//! field and polynomial arithmetic.
+
+use super::multicore;
+pub use ff::Field;
+use group::Group as _;
+
+pub use pasta_curves::arithmetic::*;
+
+/// Extension trait for iterators over mutable field elements which allows those
+/// field elements to be inverted in a batch.
+pub trait BatchInvert<F: Field> {
+    /// Consume this iterator and invert each field element (when nonzero),
+    /// returning the inverse of all nonzero field elements. Zero elements
+    /// are left as zero.
+    fn batch_invert(self) -> F;
+}
+
+impl<'a, F, I> BatchInvert<F> for I
+where
+    F: FieldExt,
+    I: IntoIterator<Item = &'a mut F>,
+{
+    fn batch_invert(self) -> F {
+        let mut acc = F::one();
+        let iter = self.into_iter();
+        let mut tmp = Vec::with_capacity(iter.size_hint().0);
+        for p in iter {
+            let q = *p;
+            tmp.push((acc, p));
+            acc = F::conditional_select(&(acc * q), &acc, q.ct_is_zero());
+        }
+        acc = acc.invert().unwrap();
+        let allinv = acc;
+
+        for (tmp, p) in tmp.into_iter().rev() {
+            let skip = p.ct_is_zero();
+
+            let tmp = tmp * acc;
+            acc = F::conditional_select(&(acc * *p), &acc, skip);
+            *p = F::conditional_select(&tmp, p, skip);
+        }
+
+        allinv
+    }
+}
+
+fn multiexp_serial<C: CurveAffine>(coeffs: &[C::Scalar], bases: &[C], acc: &mut C::Curve) {
+    let coeffs: Vec<[u8; 32]> = coeffs.iter().map(|a| a.to_bytes()).collect();
+
+    let c = if bases.len() < 4 {
+        1
+    } else if bases.len() < 32 {
+        3
+    } else {
+        (f64::from(bases.len() as u32)).ln().ceil() as usize
+    };
+
+    fn get_at(segment: usize, c: usize, bytes: &[u8; 32]) -> usize {
+        let skip_bits = segment * c;
+        let skip_bytes = skip_bits / 8;
+
+        if skip_bytes >= 32 {
+            return 0;
+        }
+
+        let mut v = [0; 8];
+        for (v, o) in v.iter_mut().zip(bytes[skip_bytes..].iter()) {
+            *v = *o;
+        }
+
+        let mut tmp = u64::from_le_bytes(v);
+        tmp >>= skip_bits - (skip_bytes * 8);
+        tmp = tmp % (1 << c);
+
+        tmp as usize
+    }
+
+    let segments = (256 / c) + 1;
+
+    for current_segment in (0..segments).rev() {
+        for _ in 0..c {
+            *acc = acc.double();
+        }
+
+        #[derive(Clone, Copy)]
+        enum Bucket<C: CurveAffine> {
+            None,
+            Affine(C),
+            Projective(C::Curve),
+        }
+
+        impl<C: CurveAffine> Bucket<C> {
+            fn add_assign(&mut self, other: &C) {
+                *self = match *self {
+                    Bucket::None => Bucket::Affine(*other),
+                    Bucket::Affine(a) => Bucket::Projective(a + *other),
+                    Bucket::Projective(mut a) => {
+                        a += *other;
+                        Bucket::Projective(a)
+                    }
+                }
+            }
+
+            fn add(self, mut other: C::Curve) -> C::Curve {
+                match self {
+                    Bucket::None => other,
+                    Bucket::Affine(a) => {
+                        other += a;
+                        other
+                    }
+                    Bucket::Projective(a) => other + &a,
+                }
+            }
+        }
+
+        let mut buckets: Vec<Bucket<C>> = vec![Bucket::None; (1 << c) - 1];
+
+        for (coeff, base) in coeffs.iter().zip(bases.iter()) {
+            let coeff = get_at(current_segment, c, coeff);
+            if coeff != 0 {
+                buckets[coeff - 1].add_assign(base);
+            }
+        }
+
+        // Summation by parts
+        // e.g. 3a + 2b + 1c = a +
+        //                    (a) + b +
+        //                    ((a) + b) + c
+        let mut running_sum = C::Curve::identity();
+        for exp in buckets.into_iter().rev() {
+            running_sum = exp.add(running_sum);
+            *acc = *acc + &running_sum;
+        }
+    }
+}
+
+/// Performs a small multi-exponentiation operation.
+/// Uses the double-and-add algorithm with doublings shared across points.
+pub fn small_multiexp<C: CurveAffine>(coeffs: &[C::Scalar], bases: &[C]) -> C::Curve {
+    let coeffs: Vec<[u8; 32]> = coeffs.iter().map(|a| a.to_bytes()).collect();
+    let mut acc = C::Curve::identity();
+
+    // for byte idx
+    for byte_idx in (0..32).rev() {
+        // for bit idx
+        for bit_idx in (0..8).rev() {
+            acc = acc.double();
+            // for each coeff
+            for coeff_idx in 0..coeffs.len() {
+                let byte = coeffs[coeff_idx][byte_idx];
+                if ((byte >> bit_idx) & 1) != 0 {
+                    acc += bases[coeff_idx];
+                }
+            }
+        }
+    }
+
+    acc
+}
+
+/// Performs a multi-exponentiation operation.
+///
+/// This function will panic if coeffs and bases have a different length.
+///
+/// This will use multithreading if beneficial.
+pub fn best_multiexp<C: CurveAffine>(coeffs: &[C::Scalar], bases: &[C]) -> C::Curve {
+    assert_eq!(coeffs.len(), bases.len());
+
+    let num_threads = multicore::current_num_threads();
+    if coeffs.len() > num_threads {
+        let chunk = coeffs.len() / num_threads;
+        let num_chunks = coeffs.chunks(chunk).len();
+        let mut results = vec![C::Curve::identity(); num_chunks];
+        multicore::scope(|scope| {
+            let chunk = coeffs.len() / num_threads;
+
+            for ((coeffs, bases), acc) in coeffs
+                .chunks(chunk)
+                .zip(bases.chunks(chunk))
+                .zip(results.iter_mut())
+            {
+                scope.spawn(move |_| {
+                    multiexp_serial(coeffs, bases, acc);
+                });
+            }
+        });
+        results.iter().fold(C::Curve::identity(), |a, b| a + b)
+    } else {
+        let mut acc = C::Curve::identity();
+        multiexp_serial(coeffs, bases, &mut acc);
+        acc
+    }
+}
+
+/// Performs a radix-$2$ Fast-Fourier Transformation (FFT) on a vector of size
+/// $n = 2^k$, when provided `log_n` = $k$ and an element of multiplicative
+/// order $n$ called `omega` ($\omega$). The result is that the vector `a`, when
+/// interpreted as the coefficients of a polynomial of degree $n - 1$, is
+/// transformed into the evaluations of this polynomial at each of the $n$
+/// distinct powers of $\omega$. This transformation is invertible by providing
+/// $\omega^{-1}$ in place of $\omega$ and dividing each resulting field element
+/// by $n$.
+///
+/// This will use multithreading if beneficial.
+pub fn best_fft<G: Group>(a: &mut [G], omega: G::Scalar, log_n: u32) {
+    let threads = multicore::current_num_threads();
+    let log_threads = log2_floor(threads);
+
+    if log_n <= log_threads {
+        serial_fft(a, omega, log_n);
+    } else {
+        parallel_fft(a, omega, log_n, log_threads);
+    }
+}
+
+fn serial_fft<G: Group>(a: &mut [G], omega: G::Scalar, log_n: u32) {
+    fn bitreverse(mut n: u32, l: u32) -> u32 {
+        let mut r = 0;
+        for _ in 0..l {
+            r = (r << 1) | (n & 1);
+            n >>= 1;
+        }
+        r
+    }
+
+    let n = a.len() as u32;
+    assert_eq!(n, 1 << log_n);
+
+    for k in 0..n {
+        let rk = bitreverse(k, log_n);
+        if k < rk {
+            a.swap(rk as usize, k as usize);
+        }
+    }
+
+    let mut m = 1;
+    for _ in 0..log_n {
+        let w_m = omega.pow(&[u64::from(n / (2 * m)), 0, 0, 0]);
+
+        let mut k = 0;
+        while k < n {
+            let mut w = G::Scalar::one();
+            for j in 0..m {
+                let mut t = a[(k + j + m) as usize];
+                t.group_scale(&w);
+                a[(k + j + m) as usize] = a[(k + j) as usize];
+                a[(k + j + m) as usize].group_sub(&t);
+                a[(k + j) as usize].group_add(&t);
+                w *= &w_m;
+            }
+
+            k += 2 * m;
+        }
+
+        m *= 2;
+    }
+}
+
+fn parallel_fft<G: Group>(a: &mut [G], omega: G::Scalar, log_n: u32, log_threads: u32) {
+    assert!(log_n >= log_threads);
+
+    let num_threads = 1 << log_threads;
+    let log_new_n = log_n - log_threads;
+    let mut tmp = vec![vec![G::group_zero(); 1 << log_new_n]; num_threads];
+    let new_omega = omega.pow(&[num_threads as u64, 0, 0, 0]);
+
+    multicore::scope(|scope| {
+        let a = &*a;
+
+        for (j, tmp) in tmp.iter_mut().enumerate() {
+            scope.spawn(move |_| {
+                // Shuffle into a sub-FFT
+                let omega_j = omega.pow(&[j as u64, 0, 0, 0]);
+                let omega_step = omega.pow(&[(j as u64) << log_new_n, 0, 0, 0]);
+
+                let mut elt = G::Scalar::one();
+
+                for (i, tmp) in tmp.iter_mut().enumerate() {
+                    for s in 0..num_threads {
+                        let idx = (i + (s << log_new_n)) % (1 << log_n);
+                        let mut t = a[idx];
+                        t.group_scale(&elt);
+                        tmp.group_add(&t);
+                        elt *= &omega_step;
+                    }
+                    elt *= &omega_j;
+                }
+
+                // Perform sub-FFT
+                serial_fft(tmp, new_omega, log_new_n);
+            });
+        }
+    });
+
+    // Unshuffle
+    let mask = (1 << log_threads) - 1;
+    for (idx, a) in a.iter_mut().enumerate() {
+        *a = tmp[idx & mask][idx >> log_threads];
+    }
+}
+
+/// This evaluates a provided polynomial (in coefficient form) at `point`.
+pub fn eval_polynomial<F: Field>(poly: &[F], point: F) -> F {
+    // TODO: parallelize?
+    poly.iter()
+        .rev()
+        .fold(F::zero(), |acc, coeff| acc * point + coeff)
+}
+
+/// This computes the inner product of two vectors `a` and `b`.
+///
+/// This function will panic if the two vectors are not the same size.
+pub fn compute_inner_product<F: Field>(a: &[F], b: &[F]) -> F {
+    // TODO: parallelize?
+    assert_eq!(a.len(), b.len());
+
+    let mut acc = F::zero();
+    for (a, b) in a.iter().zip(b.iter()) {
+        acc += (*a) * (*b);
+    }
+
+    acc
+}
+
+/// Divides polynomial `a` in `X` by `X - b` with
+/// no remainder.
+pub fn kate_division<'a, F: Field, I: IntoIterator<Item = &'a F>>(a: I, mut b: F) -> Vec<F>
+where
+    I::IntoIter: DoubleEndedIterator + ExactSizeIterator,
+{
+    b = -b;
+    let a = a.into_iter();
+
+    let mut q = vec![F::zero(); a.len() - 1];
+
+    let mut tmp = F::zero();
+    for (q, r) in q.iter_mut().rev().zip(a.rev()) {
+        let mut lead_coeff = *r;
+        lead_coeff.sub_assign(&tmp);
+        *q = lead_coeff;
+        tmp = lead_coeff;
+        tmp.mul_assign(&b);
+    }
+
+    q
+}
+
+/// This simple utility function will parallelize an operation that is to be
+/// performed over a mutable slice.
+pub fn parallelize<T: Send, F: Fn(&mut [T], usize) + Send + Sync + Clone>(v: &mut [T], f: F) {
+    let n = v.len();
+    let num_threads = multicore::current_num_threads();
+    let mut chunk = (n as usize) / num_threads;
+    if chunk < num_threads {
+        chunk = n as usize;
+    }
+
+    multicore::scope(|scope| {
+        for (chunk_num, v) in v.chunks_mut(chunk).enumerate() {
+            let f = f.clone();
+            scope.spawn(move |_| {
+                let start = chunk_num * chunk;
+                f(v, start);
+            });
+        }
+    });
+}
+
+fn log2_floor(num: usize) -> u32 {
+    assert!(num > 0);
+
+    let mut pow = 0;
+
+    while (1 << (pow + 1)) <= num {
+        pow += 1;
+    }
+
+    pow
+}
+
+/// Returns coefficients of an n - 1 degree polynomial given a set of n points
+/// and their evaluations. This function will panic if two values in `points`
+/// are the same.
+pub fn lagrange_interpolate<F: FieldExt>(points: &[F], evals: &[F]) -> Vec<F> {
+    assert_eq!(points.len(), evals.len());
+    if points.len() == 1 {
+        // Constant polynomial
+        return vec![evals[0]];
+    } else {
+        let mut denoms = Vec::with_capacity(points.len());
+        for (j, x_j) in points.iter().enumerate() {
+            let mut denom = Vec::with_capacity(points.len() - 1);
+            for x_k in points
+                .iter()
+                .enumerate()
+                .filter(|&(k, _)| k != j)
+                .map(|a| a.1)
+            {
+                denom.push(*x_j - x_k);
+            }
+            denoms.push(denom);
+        }
+        // Compute (x_j - x_k)^(-1) for each j != i
+        denoms.iter_mut().flat_map(|v| v.iter_mut()).batch_invert();
+
+        let mut final_poly = vec![F::zero(); points.len()];
+        for (j, (denoms, eval)) in denoms.into_iter().zip(evals.iter()).enumerate() {
+            let mut tmp: Vec<F> = Vec::with_capacity(points.len());
+            let mut product = Vec::with_capacity(points.len() - 1);
+            tmp.push(F::one());
+            for (x_k, denom) in points
+                .iter()
+                .enumerate()
+                .filter(|&(k, _)| k != j)
+                .map(|a| a.1)
+                .zip(denoms.into_iter())
+            {
+                product.resize(tmp.len() + 1, F::zero());
+                for ((a, b), product) in tmp
+                    .iter()
+                    .chain(std::iter::once(&F::zero()))
+                    .zip(std::iter::once(&F::zero()).chain(tmp.iter()))
+                    .zip(product.iter_mut())
+                {
+                    *product = *a * (-denom * x_k) + *b * denom;
+                }
+                std::mem::swap(&mut tmp, &mut product);
+            }
+            assert_eq!(tmp.len(), points.len());
+            assert_eq!(product.len(), points.len() - 1);
+            for (final_coeff, interpolation_coeff) in final_poly.iter_mut().zip(tmp.into_iter()) {
+                *final_coeff += interpolation_coeff * eval;
+            }
+        }
+        final_poly
+    }
+}
+
+#[cfg(test)]
+use crate::pasta::Fp;
+
+#[test]
+fn test_lagrange_interpolate() {
+    let points = (0..5).map(|_| Fp::rand()).collect::<Vec<_>>();
+    let evals = (0..5).map(|_| Fp::rand()).collect::<Vec<_>>();
+
+    for coeffs in 0..5 {
+        let points = &points[0..coeffs];
+        let evals = &evals[0..coeffs];
+
+        let poly = lagrange_interpolate(points, evals);
+        assert_eq!(poly.len(), points.len());
+
+        for (point, eval) in points.iter().zip(evals) {
+            assert_eq!(eval_polynomial(&poly, *point), *eval);
+        }
+    }
+}
+
+
+ + \ No newline at end of file diff --git a/rustdoc/latest/src/halo2/circuit.rs.html b/rustdoc/latest/src/halo2/circuit.rs.html new file mode 100644 index 00000000..6cf34e5f --- /dev/null +++ b/rustdoc/latest/src/halo2/circuit.rs.html @@ -0,0 +1,646 @@ +circuit.rs - source + + + +
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+ 32
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+ 41
+ 42
+ 43
+ 44
+ 45
+ 46
+ 47
+ 48
+ 49
+ 50
+ 51
+ 52
+ 53
+ 54
+ 55
+ 56
+ 57
+ 58
+ 59
+ 60
+ 61
+ 62
+ 63
+ 64
+ 65
+ 66
+ 67
+ 68
+ 69
+ 70
+ 71
+ 72
+ 73
+ 74
+ 75
+ 76
+ 77
+ 78
+ 79
+ 80
+ 81
+ 82
+ 83
+ 84
+ 85
+ 86
+ 87
+ 88
+ 89
+ 90
+ 91
+ 92
+ 93
+ 94
+ 95
+ 96
+ 97
+ 98
+ 99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+
+//! Traits and structs for implementing circuit components.
+
+use std::{fmt, marker::PhantomData};
+
+use ff::Field;
+
+use crate::{
+    arithmetic::FieldExt,
+    plonk::{Advice, Any, Assigned, Column, Error, Fixed, Permutation, Selector},
+};
+
+pub mod floor_planner;
+pub use floor_planner::single_pass::SimpleFloorPlanner;
+
+pub mod layouter;
+
+/// A chip implements a set of instructions that can be used by gadgets.
+///
+/// The chip stores state that is required at circuit synthesis time in
+/// [`Chip::Config`], which can be fetched via [`Chip::config`].
+///
+/// The chip also loads any fixed configuration needed at synthesis time
+/// using its own implementation of `load`, and stores it in [`Chip::Loaded`].
+/// This can be accessed via [`Chip::loaded`].
+pub trait Chip<F: FieldExt>: Sized {
+    /// A type that holds the configuration for this chip, and any other state it may need
+    /// during circuit synthesis, that can be derived during [`Circuit::configure`].
+    ///
+    /// [`Circuit::configure`]: crate::plonk::Circuit::configure
+    type Config: fmt::Debug + Clone;
+
+    /// A type that holds any general chip state that needs to be loaded at the start of
+    /// [`Circuit::synthesize`]. This might simply be `()` for some chips.
+    ///
+    /// [`Circuit::synthesize`]: crate::plonk::Circuit::synthesize
+    type Loaded: fmt::Debug + Clone;
+
+    /// The chip holds its own configuration.
+    fn config(&self) -> &Self::Config;
+
+    /// Provides access to general chip state loaded at the beginning of circuit
+    /// synthesis.
+    ///
+    /// Panics if called before `Chip::load`.
+    fn loaded(&self) -> &Self::Loaded;
+}
+
+/// Index of a region in a layouter
+#[derive(Clone, Copy, Debug)]
+pub struct RegionIndex(usize);
+
+impl From<usize> for RegionIndex {
+    fn from(idx: usize) -> RegionIndex {
+        RegionIndex(idx)
+    }
+}
+
+impl std::ops::Deref for RegionIndex {
+    type Target = usize;
+
+    fn deref(&self) -> &Self::Target {
+        &self.0
+    }
+}
+
+/// Starting row of a region in a layouter
+#[derive(Clone, Copy, Debug, PartialEq, Eq)]
+pub struct RegionStart(usize);
+
+impl From<usize> for RegionStart {
+    fn from(idx: usize) -> RegionStart {
+        RegionStart(idx)
+    }
+}
+
+impl std::ops::Deref for RegionStart {
+    type Target = usize;
+
+    fn deref(&self) -> &Self::Target {
+        &self.0
+    }
+}
+
+/// A pointer to a cell within a circuit.
+#[derive(Clone, Copy, Debug)]
+pub struct Cell {
+    /// Identifies the region in which this cell resides.
+    region_index: RegionIndex,
+    /// The relative offset of this cell within its region.
+    row_offset: usize,
+    /// The column of this cell.
+    column: Column<Any>,
+}
+
+/// A region of the circuit in which a [`Chip`] can assign cells.
+///
+/// Inside a region, the chip may freely use relative offsets; the [`Layouter`] will
+/// treat these assignments as a single "region" within the circuit.
+///
+/// The [`Layouter`] is allowed to optimise between regions as it sees fit. Chips must use
+/// [`Region::constrain_equal`] to copy in variables assigned in other regions.
+///
+/// TODO: It would be great if we could constrain the columns in these types to be
+/// "logical" columns that are guaranteed to correspond to the chip (and have come from
+/// `Chip::Config`).
+#[derive(Debug)]
+pub struct Region<'r, F: Field> {
+    region: &'r mut dyn layouter::RegionLayouter<F>,
+}
+
+impl<'r, F: Field> From<&'r mut dyn layouter::RegionLayouter<F>> for Region<'r, F> {
+    fn from(region: &'r mut dyn layouter::RegionLayouter<F>) -> Self {
+        Region { region }
+    }
+}
+
+impl<'r, F: Field> Region<'r, F> {
+    /// Enables a selector at the given offset.
+    pub(crate) fn enable_selector<A, AR>(
+        &mut self,
+        annotation: A,
+        selector: &Selector,
+        offset: usize,
+    ) -> Result<(), Error>
+    where
+        A: Fn() -> AR,
+        AR: Into<String>,
+    {
+        self.region
+            .enable_selector(&|| annotation().into(), selector, offset)
+    }
+
+    /// Assign an advice column value (witness).
+    ///
+    /// Even though `to` has `FnMut` bounds, it is guaranteed to be called at most once.
+    pub fn assign_advice<'v, V, VR, A, AR>(
+        &'v mut self,
+        annotation: A,
+        column: Column<Advice>,
+        offset: usize,
+        mut to: V,
+    ) -> Result<Cell, Error>
+    where
+        V: FnMut() -> Result<VR, Error> + 'v,
+        VR: Into<Assigned<F>>,
+        A: Fn() -> AR,
+        AR: Into<String>,
+    {
+        self.region
+            .assign_advice(&|| annotation().into(), column, offset, &mut || {
+                to().map(|v| v.into())
+            })
+    }
+
+    /// Assign a fixed value.
+    ///
+    /// Even though `to` has `FnMut` bounds, it is guaranteed to be called at most once.
+    pub fn assign_fixed<'v, V, VR, A, AR>(
+        &'v mut self,
+        annotation: A,
+        column: Column<Fixed>,
+        offset: usize,
+        mut to: V,
+    ) -> Result<Cell, Error>
+    where
+        V: FnMut() -> Result<VR, Error> + 'v,
+        VR: Into<Assigned<F>>,
+        A: Fn() -> AR,
+        AR: Into<String>,
+    {
+        self.region
+            .assign_fixed(&|| annotation().into(), column, offset, &mut || {
+                to().map(|v| v.into())
+            })
+    }
+
+    /// Constraint two cells to have the same value.
+    ///
+    /// Returns an error if either of the cells is not within the given permutation.
+    pub fn constrain_equal(
+        &mut self,
+        permutation: &Permutation,
+        left: Cell,
+        right: Cell,
+    ) -> Result<(), Error> {
+        self.region.constrain_equal(permutation, left, right)
+    }
+}
+
+/// A layout strategy within a circuit. The layouter is chip-agnostic and applies its
+/// strategy to the context and config it is given.
+///
+/// This abstracts over the circuit assignments, handling row indices etc.
+///
+pub trait Layouter<F: Field> {
+    /// Represents the type of the "root" of this layouter, so that nested namespaces
+    /// can minimize indirection.
+    type Root: Layouter<F>;
+
+    /// Assign a region of gates to an absolute row number.
+    ///
+    /// Inside the closure, the chip may freely use relative offsets; the `Layouter` will
+    /// treat these assignments as a single "region" within the circuit. Outside this
+    /// closure, the `Layouter` is allowed to optimise as it sees fit.
+    ///
+    /// ```ignore
+    /// fn assign_region(&mut self, || "region name", |region| {
+    ///     let config = chip.config();
+    ///     region.assign_advice(config.a, offset, || { Some(value)});
+    /// });
+    /// ```
+    fn assign_region<A, AR, N, NR>(&mut self, name: N, assignment: A) -> Result<AR, Error>
+    where
+        A: FnMut(Region<'_, F>) -> Result<AR, Error>,
+        N: Fn() -> NR,
+        NR: Into<String>;
+
+    /// Gets the "root" of this assignment, bypassing the namespacing.
+    ///
+    /// Not intended for downstream consumption; use [`Layouter::namespace`] instead.
+    fn get_root(&mut self) -> &mut Self::Root;
+
+    /// Creates a new (sub)namespace and enters into it.
+    ///
+    /// Not intended for downstream consumption; use [`Layouter::namespace`] instead.
+    fn push_namespace<NR, N>(&mut self, name_fn: N)
+    where
+        NR: Into<String>,
+        N: FnOnce() -> NR;
+
+    /// Exits out of the existing namespace.
+    ///
+    /// Not intended for downstream consumption; use [`Layouter::namespace`] instead.
+    fn pop_namespace(&mut self, gadget_name: Option<String>);
+
+    /// Enters into a namespace.
+    fn namespace<NR, N>(&mut self, name_fn: N) -> NamespacedLayouter<'_, F, Self::Root>
+    where
+        NR: Into<String>,
+        N: FnOnce() -> NR,
+    {
+        self.get_root().push_namespace(name_fn);
+
+        NamespacedLayouter(self.get_root(), PhantomData)
+    }
+}
+
+/// This is a "namespaced" layouter which borrows a `Layouter` (pushing a namespace
+/// context) and, when dropped, pops out of the namespace context.
+#[derive(Debug)]
+pub struct NamespacedLayouter<'a, F: Field, L: Layouter<F> + 'a>(&'a mut L, PhantomData<F>);
+
+impl<'a, F: Field, L: Layouter<F> + 'a> Layouter<F> for NamespacedLayouter<'a, F, L> {
+    type Root = L::Root;
+
+    fn assign_region<A, AR, N, NR>(&mut self, name: N, assignment: A) -> Result<AR, Error>
+    where
+        A: FnMut(Region<'_, F>) -> Result<AR, Error>,
+        N: Fn() -> NR,
+        NR: Into<String>,
+    {
+        self.0.assign_region(name, assignment)
+    }
+
+    fn get_root(&mut self) -> &mut Self::Root {
+        self.0.get_root()
+    }
+
+    fn push_namespace<NR, N>(&mut self, _name_fn: N)
+    where
+        NR: Into<String>,
+        N: FnOnce() -> NR,
+    {
+        panic!("Only the root's push_namespace should be called");
+    }
+
+    fn pop_namespace(&mut self, _gadget_name: Option<String>) {
+        panic!("Only the root's pop_namespace should be called");
+    }
+}
+
+impl<'a, F: Field, L: Layouter<F> + 'a> Drop for NamespacedLayouter<'a, F, L> {
+    fn drop(&mut self) {
+        let gadget_name = {
+            #[cfg(feature = "gadget-traces")]
+            {
+                let mut gadget_name = None;
+                let mut is_second_frame = false;
+                backtrace::trace(|frame| {
+                    if is_second_frame {
+                        // Resolve this instruction pointer to a symbol name.
+                        backtrace::resolve_frame(frame, |symbol| {
+                            gadget_name = symbol.name().map(|name| format!("{:#}", name));
+                        });
+
+                        // We are done!
+                        false
+                    } else {
+                        // We want the next frame.
+                        is_second_frame = true;
+                        true
+                    }
+                });
+                gadget_name
+            }
+
+            #[cfg(not(feature = "gadget-traces"))]
+            None
+        };
+
+        self.get_root().pop_namespace(gadget_name);
+    }
+}
+
+
+ + \ No newline at end of file diff --git a/rustdoc/latest/src/halo2/circuit/floor_planner.rs.html b/rustdoc/latest/src/halo2/circuit/floor_planner.rs.html new file mode 100644 index 00000000..7aaa339c --- /dev/null +++ b/rustdoc/latest/src/halo2/circuit/floor_planner.rs.html @@ -0,0 +1,32 @@ +floor_planner.rs - source + + + +
1
+2
+3
+4
+5
+6
+
+//! Implementations of common circuit floor planners.
+
+pub(super) mod single_pass;
+
+mod v1;
+pub use v1::{V1Pass, V1};
+
+
+ + \ No newline at end of file diff --git a/rustdoc/latest/src/halo2/circuit/floor_planner/single_pass.rs.html b/rustdoc/latest/src/halo2/circuit/floor_planner/single_pass.rs.html new file mode 100644 index 00000000..a08d709a --- /dev/null +++ b/rustdoc/latest/src/halo2/circuit/floor_planner/single_pass.rs.html @@ -0,0 +1,476 @@ +single_pass.rs - source + + + +
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+ 32
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+ 41
+ 42
+ 43
+ 44
+ 45
+ 46
+ 47
+ 48
+ 49
+ 50
+ 51
+ 52
+ 53
+ 54
+ 55
+ 56
+ 57
+ 58
+ 59
+ 60
+ 61
+ 62
+ 63
+ 64
+ 65
+ 66
+ 67
+ 68
+ 69
+ 70
+ 71
+ 72
+ 73
+ 74
+ 75
+ 76
+ 77
+ 78
+ 79
+ 80
+ 81
+ 82
+ 83
+ 84
+ 85
+ 86
+ 87
+ 88
+ 89
+ 90
+ 91
+ 92
+ 93
+ 94
+ 95
+ 96
+ 97
+ 98
+ 99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+
+use std::cmp;
+use std::collections::HashMap;
+use std::fmt;
+use std::marker::PhantomData;
+
+use ff::Field;
+
+use crate::{
+    circuit::{
+        layouter::{RegionLayouter, RegionShape},
+        Cell, Layouter, Region, RegionIndex, RegionStart,
+    },
+    plonk::{
+        Advice, Any, Assigned, Assignment, Circuit, Column, Error, Fixed, FloorPlanner,
+        Permutation, Selector,
+    },
+};
+
+/// A simple [`FloorPlanner`] that performs minimal optimizations.
+///
+/// This floor planner is suitable for debugging circuits. It aims to reflect the circuit
+/// "business logic" in the circuit layout as closely as possible. It uses a single-pass
+/// layouter that does not reorder regions for optimal packing.
+#[derive(Debug)]
+pub struct SimpleFloorPlanner;
+
+impl FloorPlanner for SimpleFloorPlanner {
+    fn synthesize<F: Field, CS: Assignment<F>, C: Circuit<F>>(
+        cs: &mut CS,
+        circuit: &C,
+        config: C::Config,
+    ) -> Result<(), Error> {
+        let layouter = SingleChipLayouter::new(cs)?;
+        circuit.synthesize(config, layouter)
+    }
+}
+
+/// A [`Layouter`] for a single-chip circuit.
+pub struct SingleChipLayouter<'a, F: Field, CS: Assignment<F> + 'a> {
+    cs: &'a mut CS,
+    /// Stores the starting row for each region.
+    regions: Vec<RegionStart>,
+    /// Stores the first empty row for each column.
+    columns: HashMap<Column<Any>, usize>,
+    _marker: PhantomData<F>,
+}
+
+impl<'a, F: Field, CS: Assignment<F> + 'a> fmt::Debug for SingleChipLayouter<'a, F, CS> {
+    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+        f.debug_struct("SingleChipLayouter")
+            .field("regions", &self.regions)
+            .field("columns", &self.columns)
+            .finish()
+    }
+}
+
+impl<'a, F: Field, CS: Assignment<F>> SingleChipLayouter<'a, F, CS> {
+    /// Creates a new single-chip layouter.
+    pub fn new(cs: &'a mut CS) -> Result<Self, Error> {
+        let ret = SingleChipLayouter {
+            cs,
+            regions: vec![],
+            columns: HashMap::default(),
+            _marker: PhantomData,
+        };
+        Ok(ret)
+    }
+}
+
+impl<'a, F: Field, CS: Assignment<F> + 'a> Layouter<F> for SingleChipLayouter<'a, F, CS> {
+    type Root = Self;
+
+    fn assign_region<A, AR, N, NR>(&mut self, name: N, mut assignment: A) -> Result<AR, Error>
+    where
+        A: FnMut(Region<'_, F>) -> Result<AR, Error>,
+        N: Fn() -> NR,
+        NR: Into<String>,
+    {
+        let region_index = self.regions.len();
+
+        // Get shape of the region.
+        let mut shape = RegionShape::new(region_index.into());
+        {
+            let region: &mut dyn RegionLayouter<F> = &mut shape;
+            assignment(region.into())?;
+        }
+
+        // Lay out this region. We implement the simplest approach here: position the
+        // region starting at the earliest row for which none of the columns are in use.
+        let mut region_start = 0;
+        for column in &shape.columns {
+            region_start = cmp::max(region_start, self.columns.get(column).cloned().unwrap_or(0));
+        }
+        self.regions.push(region_start.into());
+
+        // Update column usage information.
+        for column in shape.columns {
+            self.columns.insert(column, region_start + shape.row_count);
+        }
+
+        self.cs.enter_region(name);
+        let mut region = SingleChipLayouterRegion::new(self, region_index.into());
+        let result = {
+            let region: &mut dyn RegionLayouter<F> = &mut region;
+            assignment(region.into())
+        }?;
+        self.cs.exit_region();
+
+        Ok(result)
+    }
+
+    fn get_root(&mut self) -> &mut Self::Root {
+        self
+    }
+
+    fn push_namespace<NR, N>(&mut self, name_fn: N)
+    where
+        NR: Into<String>,
+        N: FnOnce() -> NR,
+    {
+        self.cs.push_namespace(name_fn)
+    }
+
+    fn pop_namespace(&mut self, gadget_name: Option<String>) {
+        self.cs.pop_namespace(gadget_name)
+    }
+}
+
+struct SingleChipLayouterRegion<'r, 'a, F: Field, CS: Assignment<F> + 'a> {
+    layouter: &'r mut SingleChipLayouter<'a, F, CS>,
+    region_index: RegionIndex,
+}
+
+impl<'r, 'a, F: Field, CS: Assignment<F> + 'a> fmt::Debug
+    for SingleChipLayouterRegion<'r, 'a, F, CS>
+{
+    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+        f.debug_struct("SingleChipLayouterRegion")
+            .field("layouter", &self.layouter)
+            .field("region_index", &self.region_index)
+            .finish()
+    }
+}
+
+impl<'r, 'a, F: Field, CS: Assignment<F> + 'a> SingleChipLayouterRegion<'r, 'a, F, CS> {
+    fn new(layouter: &'r mut SingleChipLayouter<'a, F, CS>, region_index: RegionIndex) -> Self {
+        SingleChipLayouterRegion {
+            layouter,
+            region_index,
+        }
+    }
+}
+
+impl<'r, 'a, F: Field, CS: Assignment<F> + 'a> RegionLayouter<F>
+    for SingleChipLayouterRegion<'r, 'a, F, CS>
+{
+    fn enable_selector<'v>(
+        &'v mut self,
+        annotation: &'v (dyn Fn() -> String + 'v),
+        selector: &Selector,
+        offset: usize,
+    ) -> Result<(), Error> {
+        self.layouter.cs.enable_selector(
+            annotation,
+            selector,
+            *self.layouter.regions[*self.region_index] + offset,
+        )
+    }
+
+    fn assign_advice<'v>(
+        &'v mut self,
+        annotation: &'v (dyn Fn() -> String + 'v),
+        column: Column<Advice>,
+        offset: usize,
+        to: &'v mut (dyn FnMut() -> Result<Assigned<F>, Error> + 'v),
+    ) -> Result<Cell, Error> {
+        self.layouter.cs.assign_advice(
+            annotation,
+            column,
+            *self.layouter.regions[*self.region_index] + offset,
+            to,
+        )?;
+
+        Ok(Cell {
+            region_index: self.region_index,
+            row_offset: offset,
+            column: column.into(),
+        })
+    }
+
+    fn assign_fixed<'v>(
+        &'v mut self,
+        annotation: &'v (dyn Fn() -> String + 'v),
+        column: Column<Fixed>,
+        offset: usize,
+        to: &'v mut (dyn FnMut() -> Result<Assigned<F>, Error> + 'v),
+    ) -> Result<Cell, Error> {
+        self.layouter.cs.assign_fixed(
+            annotation,
+            column,
+            *self.layouter.regions[*self.region_index] + offset,
+            to,
+        )?;
+
+        Ok(Cell {
+            region_index: self.region_index,
+            row_offset: offset,
+            column: column.into(),
+        })
+    }
+
+    fn constrain_equal(
+        &mut self,
+        permutation: &Permutation,
+        left: Cell,
+        right: Cell,
+    ) -> Result<(), Error> {
+        self.layouter.cs.copy(
+            permutation,
+            left.column,
+            *self.layouter.regions[*left.region_index] + left.row_offset,
+            right.column,
+            *self.layouter.regions[*right.region_index] + right.row_offset,
+        )?;
+
+        Ok(())
+    }
+}
+
+
+ + \ No newline at end of file diff --git a/rustdoc/latest/src/halo2/circuit/floor_planner/v1.rs.html b/rustdoc/latest/src/halo2/circuit/floor_planner/v1.rs.html new file mode 100644 index 00000000..4066d8e4 --- /dev/null +++ b/rustdoc/latest/src/halo2/circuit/floor_planner/v1.rs.html @@ -0,0 +1,620 @@ +v1.rs - source + + + +
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+ 32
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+ 41
+ 42
+ 43
+ 44
+ 45
+ 46
+ 47
+ 48
+ 49
+ 50
+ 51
+ 52
+ 53
+ 54
+ 55
+ 56
+ 57
+ 58
+ 59
+ 60
+ 61
+ 62
+ 63
+ 64
+ 65
+ 66
+ 67
+ 68
+ 69
+ 70
+ 71
+ 72
+ 73
+ 74
+ 75
+ 76
+ 77
+ 78
+ 79
+ 80
+ 81
+ 82
+ 83
+ 84
+ 85
+ 86
+ 87
+ 88
+ 89
+ 90
+ 91
+ 92
+ 93
+ 94
+ 95
+ 96
+ 97
+ 98
+ 99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+
+use std::fmt;
+use std::marker::PhantomData;
+
+use ff::Field;
+
+use crate::{
+    circuit::{
+        layouter::{RegionLayouter, RegionShape},
+        Cell, Layouter, Region, RegionIndex, RegionStart,
+    },
+    plonk::{
+        Advice, Assigned, Assignment, Circuit, Column, Error, Fixed, FloorPlanner, Permutation,
+        Selector,
+    },
+};
+
+mod strategy;
+
+/// The version 1 [`FloorPlanner`] provided by `halo2`.
+///
+/// - No column optimizations are performed. Circuit configuration is left entirely to the
+///   circuit designer.
+/// - A dual-pass layouter is used to measures regions prior to assignment.
+/// - Regions are measured as rectangles, bounded on the cells they assign.
+/// - Regions are layed out using a greedy first-fit strategy, after sorting regions by
+///   their "advice area" (number of advice columns * rows).
+#[derive(Debug)]
+pub struct V1;
+
+struct V1Plan<'a, F: Field, CS: Assignment<F> + 'a> {
+    cs: &'a mut CS,
+    /// Stores the starting row for each region.
+    regions: Vec<RegionStart>,
+    _marker: PhantomData<F>,
+}
+
+impl<'a, F: Field, CS: Assignment<F> + 'a> fmt::Debug for V1Plan<'a, F, CS> {
+    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+        f.debug_struct("floor_planner::V1Plan").finish()
+    }
+}
+
+impl<'a, F: Field, CS: Assignment<F>> V1Plan<'a, F, CS> {
+    /// Creates a new v1 layouter.
+    pub fn new(cs: &'a mut CS) -> Result<Self, Error> {
+        let ret = V1Plan {
+            cs,
+            regions: vec![],
+            _marker: PhantomData,
+        };
+        Ok(ret)
+    }
+}
+
+impl FloorPlanner for V1 {
+    fn synthesize<F: Field, CS: Assignment<F>, C: Circuit<F>>(
+        cs: &mut CS,
+        circuit: &C,
+        config: C::Config,
+    ) -> Result<(), Error> {
+        let mut plan = V1Plan::new(cs)?;
+
+        // First pass: measure the regions within the circuit.
+        let mut measure = MeasurementPass::new();
+        {
+            let pass = &mut measure;
+            circuit
+                .without_witnesses()
+                .synthesize(config.clone(), V1Pass::<_, CS>::measure(pass))?;
+        }
+
+        plan.regions = strategy::slot_in_biggest_advice_first(measure.regions);
+
+        // Second pass: assign the regions.
+        let mut assign = AssignmentPass::new(&mut plan);
+        {
+            let pass = &mut assign;
+            circuit.synthesize(config, V1Pass::assign(pass))?;
+        }
+
+        Ok(())
+    }
+}
+
+#[derive(Debug)]
+enum Pass<'p, 'a, F: Field, CS: Assignment<F> + 'a> {
+    Measurement(&'p mut MeasurementPass),
+    Assignment(&'p mut AssignmentPass<'p, 'a, F, CS>),
+}
+
+/// A single pass of the [`V1`] layouter.
+#[derive(Debug)]
+pub struct V1Pass<'p, 'a, F: Field, CS: Assignment<F> + 'a>(Pass<'p, 'a, F, CS>);
+
+impl<'p, 'a, F: Field, CS: Assignment<F> + 'a> V1Pass<'p, 'a, F, CS> {
+    fn measure(pass: &'p mut MeasurementPass) -> Self {
+        V1Pass(Pass::Measurement(pass))
+    }
+
+    fn assign(pass: &'p mut AssignmentPass<'p, 'a, F, CS>) -> Self {
+        V1Pass(Pass::Assignment(pass))
+    }
+}
+
+impl<'p, 'a, F: Field, CS: Assignment<F> + 'a> Layouter<F> for V1Pass<'p, 'a, F, CS> {
+    type Root = Self;
+
+    fn assign_region<A, AR, N, NR>(&mut self, name: N, assignment: A) -> Result<AR, Error>
+    where
+        A: FnMut(Region<'_, F>) -> Result<AR, Error>,
+        N: Fn() -> NR,
+        NR: Into<String>,
+    {
+        match &mut self.0 {
+            Pass::Measurement(pass) => pass.assign_region(assignment),
+            Pass::Assignment(pass) => pass.assign_region(name, assignment),
+        }
+    }
+
+    fn get_root(&mut self) -> &mut Self::Root {
+        self
+    }
+
+    fn push_namespace<NR, N>(&mut self, name_fn: N)
+    where
+        NR: Into<String>,
+        N: FnOnce() -> NR,
+    {
+        if let Pass::Assignment(pass) = &mut self.0 {
+            pass.plan.cs.push_namespace(name_fn);
+        }
+    }
+
+    fn pop_namespace(&mut self, gadget_name: Option<String>) {
+        if let Pass::Assignment(pass) = &mut self.0 {
+            pass.plan.cs.pop_namespace(gadget_name);
+        }
+    }
+}
+
+/// Measures the circuit.
+#[derive(Debug)]
+pub struct MeasurementPass {
+    regions: Vec<RegionShape>,
+}
+
+impl MeasurementPass {
+    fn new() -> Self {
+        MeasurementPass { regions: vec![] }
+    }
+
+    fn assign_region<F: Field, A, AR>(&mut self, mut assignment: A) -> Result<AR, Error>
+    where
+        A: FnMut(Region<'_, F>) -> Result<AR, Error>,
+    {
+        let region_index = self.regions.len();
+
+        // Get shape of the region.
+        let mut shape = RegionShape::new(region_index.into());
+        let result = {
+            let region: &mut dyn RegionLayouter<F> = &mut shape;
+            assignment(region.into())
+        }?;
+        self.regions.push(shape);
+
+        Ok(result)
+    }
+}
+
+/// Assigns the circuit.
+#[derive(Debug)]
+pub struct AssignmentPass<'p, 'a, F: Field, CS: Assignment<F> + 'a> {
+    plan: &'p mut V1Plan<'a, F, CS>,
+    /// Counter tracking which region we need to assign next.
+    region_index: usize,
+}
+
+impl<'p, 'a, F: Field, CS: Assignment<F> + 'a> AssignmentPass<'p, 'a, F, CS> {
+    fn new(plan: &'p mut V1Plan<'a, F, CS>) -> Self {
+        AssignmentPass {
+            plan,
+            region_index: 0,
+        }
+    }
+
+    fn assign_region<A, AR, N, NR>(&mut self, name: N, mut assignment: A) -> Result<AR, Error>
+    where
+        A: FnMut(Region<'_, F>) -> Result<AR, Error>,
+        N: Fn() -> NR,
+        NR: Into<String>,
+    {
+        // Get the next region we are assigning.
+        let region_index = self.region_index;
+        self.region_index += 1;
+
+        self.plan.cs.enter_region(name);
+        let mut region = V1Region::new(self.plan, region_index.into());
+        let result = {
+            let region: &mut dyn RegionLayouter<F> = &mut region;
+            assignment(region.into())
+        }?;
+        self.plan.cs.exit_region();
+
+        Ok(result)
+    }
+}
+
+struct V1Region<'r, 'a, F: Field, CS: Assignment<F> + 'a> {
+    plan: &'r mut V1Plan<'a, F, CS>,
+    region_index: RegionIndex,
+}
+
+impl<'r, 'a, F: Field, CS: Assignment<F> + 'a> fmt::Debug for V1Region<'r, 'a, F, CS> {
+    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+        f.debug_struct("V1Region")
+            .field("plan", &self.plan)
+            .field("region_index", &self.region_index)
+            .finish()
+    }
+}
+
+impl<'r, 'a, F: Field, CS: Assignment<F> + 'a> V1Region<'r, 'a, F, CS> {
+    fn new(plan: &'r mut V1Plan<'a, F, CS>, region_index: RegionIndex) -> Self {
+        V1Region { plan, region_index }
+    }
+}
+
+impl<'r, 'a, F: Field, CS: Assignment<F> + 'a> RegionLayouter<F> for V1Region<'r, 'a, F, CS> {
+    fn enable_selector<'v>(
+        &'v mut self,
+        annotation: &'v (dyn Fn() -> String + 'v),
+        selector: &Selector,
+        offset: usize,
+    ) -> Result<(), Error> {
+        self.plan.cs.enable_selector(
+            annotation,
+            selector,
+            *self.plan.regions[*self.region_index] + offset,
+        )
+    }
+
+    fn assign_advice<'v>(
+        &'v mut self,
+        annotation: &'v (dyn Fn() -> String + 'v),
+        column: Column<Advice>,
+        offset: usize,
+        to: &'v mut (dyn FnMut() -> Result<Assigned<F>, Error> + 'v),
+    ) -> Result<Cell, Error> {
+        self.plan.cs.assign_advice(
+            annotation,
+            column,
+            *self.plan.regions[*self.region_index] + offset,
+            to,
+        )?;
+
+        Ok(Cell {
+            region_index: self.region_index,
+            row_offset: offset,
+            column: column.into(),
+        })
+    }
+
+    fn assign_fixed<'v>(
+        &'v mut self,
+        annotation: &'v (dyn Fn() -> String + 'v),
+        column: Column<Fixed>,
+        offset: usize,
+        to: &'v mut (dyn FnMut() -> Result<Assigned<F>, Error> + 'v),
+    ) -> Result<Cell, Error> {
+        self.plan.cs.assign_fixed(
+            annotation,
+            column,
+            *self.plan.regions[*self.region_index] + offset,
+            to,
+        )?;
+
+        Ok(Cell {
+            region_index: self.region_index,
+            row_offset: offset,
+            column: column.into(),
+        })
+    }
+
+    fn constrain_equal(
+        &mut self,
+        permutation: &Permutation,
+        left: Cell,
+        right: Cell,
+    ) -> Result<(), Error> {
+        self.plan.cs.copy(
+            permutation,
+            left.column,
+            *self.plan.regions[*left.region_index] + left.row_offset,
+            right.column,
+            *self.plan.regions[*right.region_index] + right.row_offset,
+        )?;
+
+        Ok(())
+    }
+}
+
+
+ + \ No newline at end of file diff --git a/rustdoc/latest/src/halo2/circuit/floor_planner/v1/strategy.rs.html b/rustdoc/latest/src/halo2/circuit/floor_planner/v1/strategy.rs.html new file mode 100644 index 00000000..1056ef07 --- /dev/null +++ b/rustdoc/latest/src/halo2/circuit/floor_planner/v1/strategy.rs.html @@ -0,0 +1,478 @@ +strategy.rs - source + + + +
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+ 32
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+ 41
+ 42
+ 43
+ 44
+ 45
+ 46
+ 47
+ 48
+ 49
+ 50
+ 51
+ 52
+ 53
+ 54
+ 55
+ 56
+ 57
+ 58
+ 59
+ 60
+ 61
+ 62
+ 63
+ 64
+ 65
+ 66
+ 67
+ 68
+ 69
+ 70
+ 71
+ 72
+ 73
+ 74
+ 75
+ 76
+ 77
+ 78
+ 79
+ 80
+ 81
+ 82
+ 83
+ 84
+ 85
+ 86
+ 87
+ 88
+ 89
+ 90
+ 91
+ 92
+ 93
+ 94
+ 95
+ 96
+ 97
+ 98
+ 99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+
+use std::{
+    cmp,
+    collections::{BTreeSet, HashMap},
+};
+
+use super::RegionShape;
+use crate::{
+    circuit::RegionStart,
+    plonk::{Any, Column},
+};
+
+/// A region allocated within a column.
+#[derive(Clone, Default, Debug, PartialEq, Eq)]
+struct AllocatedRegion {
+    // The starting position of the region.
+    start: usize,
+    // The length of the region.
+    length: usize,
+}
+
+impl Ord for AllocatedRegion {
+    fn cmp(&self, other: &Self) -> cmp::Ordering {
+        self.start.cmp(&other.start)
+    }
+}
+
+impl PartialOrd for AllocatedRegion {
+    fn partial_cmp(&self, other: &Self) -> Option<cmp::Ordering> {
+        Some(self.cmp(other))
+    }
+}
+
+/// An area of empty space within a column.
+struct EmptySpace {
+    // The starting position of the empty space.
+    start: usize,
+    // The number of rows of empty space, or `None` if unbounded.
+    end: Option<usize>,
+}
+
+/// Allocated rows within a column.
+///
+/// This is a set of [a_start, a_end) pairs representing disjoint allocated intervals.
+#[derive(Clone, Default, Debug)]
+struct Allocations(BTreeSet<AllocatedRegion>);
+
+impl Allocations {
+    /// Return all the *unallocated* nonempty intervals intersecting [start, end).
+    ///
+    /// `end = None` represents an unbounded end.
+    fn free_intervals(
+        &self,
+        start: usize,
+        end: Option<usize>,
+    ) -> impl Iterator<Item = EmptySpace> + '_ {
+        self.0
+            .iter()
+            .map(Some)
+            .chain(Some(None))
+            .scan(start, move |row, region| {
+                Some(if let Some(region) = region {
+                    if end.map(|end| region.start >= end).unwrap_or(false) {
+                        None
+                    } else {
+                        let ret = if *row < region.start {
+                            Some(EmptySpace {
+                                start: *row,
+                                end: Some(region.start),
+                            })
+                        } else {
+                            None
+                        };
+
+                        *row = cmp::max(*row, region.start + region.length);
+
+                        ret
+                    }
+                } else if end.map(|end| *row < end).unwrap_or(true) {
+                    Some(EmptySpace { start: *row, end })
+                } else {
+                    None
+                })
+            })
+            .flatten()
+    }
+}
+
+/// - `start` is the current start row of the region (not of this column).
+/// - `slack` is the maximum number of rows the start could be moved down, taking into
+///   account prior columns.
+fn first_fit_region(
+    column_allocations: &mut HashMap<Column<Any>, Allocations>,
+    region_columns: &[Column<Any>],
+    region_length: usize,
+    start: usize,
+    slack: Option<usize>,
+) -> Option<usize> {
+    let (c, remaining_columns) = match region_columns.split_first() {
+        Some(cols) => cols,
+        None => return Some(start),
+    };
+    let end = slack.map(|slack| start + region_length + slack);
+
+    // Iterate over the unallocated non-empty intervals in c that intersect [start, end).
+    for space in column_allocations
+        .entry(*c)
+        .or_default()
+        .clone()
+        .free_intervals(start, end)
+    {
+        // Do we have enough room for this column of the region in this interval?
+        let s_slack = space
+            .end
+            .map(|end| (end as isize - space.start as isize) - region_length as isize);
+        if let Some((slack, s_slack)) = slack.zip(s_slack) {
+            assert!(s_slack <= slack as isize);
+        }
+        if s_slack.unwrap_or(0) >= 0 {
+            let row = first_fit_region(
+                column_allocations,
+                remaining_columns,
+                region_length,
+                space.start,
+                s_slack.map(|s| s as usize),
+            );
+            if let Some(row) = row {
+                if let Some(end) = end {
+                    assert!(row + region_length <= end);
+                }
+                column_allocations
+                    .get_mut(c)
+                    .unwrap()
+                    .0
+                    .insert(AllocatedRegion {
+                        start: row,
+                        length: region_length,
+                    });
+                return Some(row);
+            }
+        }
+    }
+
+    // No placement worked; the caller will need to try other possibilities.
+    None
+}
+
+/// Positions the regions starting at the earliest row for which none of the columns are
+/// in use, taking into account gaps between earlier regions.
+fn slot_in(region_shapes: Vec<RegionShape>) -> Vec<(RegionStart, RegionShape)> {
+    // Tracks the empty regions for each column.
+    let mut column_allocations: HashMap<Column<Any>, Allocations> = Default::default();
+
+    region_shapes
+        .into_iter()
+        .map(|region| {
+            // Sort the region's columns to ensure determinism.
+            // - An unstable sort is fine, because region.columns() returns a set.
+            // - The sort order relies on Column's Ord implementation!
+            let mut region_columns: Vec<_> = region.columns().iter().cloned().collect();
+            region_columns.sort_unstable();
+
+            let region_start = first_fit_region(
+                &mut column_allocations,
+                &region_columns,
+                region.row_count(),
+                0,
+                None,
+            )
+            .expect("We can always fit a region somewhere");
+
+            (region_start.into(), region)
+        })
+        .collect()
+}
+
+/// Sorts the regions by advice area and then lays them out with the [`slot_in`] strategy.
+pub fn slot_in_biggest_advice_first(region_shapes: Vec<RegionShape>) -> Vec<RegionStart> {
+    let mut sorted_regions: Vec<_> = region_shapes.into_iter().collect();
+    sorted_regions.sort_unstable_by_key(|shape| {
+        // Count the number of advice columns
+        let advice_cols = shape
+            .columns()
+            .iter()
+            .filter(|c| matches!(c.column_type(), Any::Advice))
+            .count();
+        // Sort by advice area (since this has the most contention).
+        advice_cols * shape.row_count()
+    });
+    sorted_regions.reverse();
+
+    // Lay out the sorted regions.
+    let mut regions = slot_in(sorted_regions);
+
+    // Un-sort the regions so they match the original indexing.
+    regions.sort_unstable_by_key(|(_, region)| region.region_index().0);
+    regions.into_iter().map(|(start, _)| start).collect()
+}
+
+#[test]
+fn test_slot_in() {
+    let regions = vec![
+        RegionShape {
+            region_index: 0.into(),
+            columns: vec![Column::new(0, Any::Advice), Column::new(1, Any::Advice)]
+                .into_iter()
+                .collect(),
+            row_count: 15,
+        },
+        RegionShape {
+            region_index: 1.into(),
+            columns: vec![Column::new(2, Any::Advice)].into_iter().collect(),
+            row_count: 10,
+        },
+        RegionShape {
+            region_index: 2.into(),
+            columns: vec![Column::new(2, Any::Advice), Column::new(0, Any::Advice)]
+                .into_iter()
+                .collect(),
+            row_count: 10,
+        },
+    ];
+    assert_eq!(
+        slot_in(regions)
+            .into_iter()
+            .map(|(i, _)| i)
+            .collect::<Vec<_>>(),
+        vec![0.into(), 0.into(), 15.into()]
+    );
+}
+
+
+ + \ No newline at end of file diff --git a/rustdoc/latest/src/halo2/circuit/layouter.rs.html b/rustdoc/latest/src/halo2/circuit/layouter.rs.html new file mode 100644 index 00000000..01f7a3a3 --- /dev/null +++ b/rustdoc/latest/src/halo2/circuit/layouter.rs.html @@ -0,0 +1,366 @@ +layouter.rs - source + + + +
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+ 32
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+ 41
+ 42
+ 43
+ 44
+ 45
+ 46
+ 47
+ 48
+ 49
+ 50
+ 51
+ 52
+ 53
+ 54
+ 55
+ 56
+ 57
+ 58
+ 59
+ 60
+ 61
+ 62
+ 63
+ 64
+ 65
+ 66
+ 67
+ 68
+ 69
+ 70
+ 71
+ 72
+ 73
+ 74
+ 75
+ 76
+ 77
+ 78
+ 79
+ 80
+ 81
+ 82
+ 83
+ 84
+ 85
+ 86
+ 87
+ 88
+ 89
+ 90
+ 91
+ 92
+ 93
+ 94
+ 95
+ 96
+ 97
+ 98
+ 99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+
+//! Implementations of common circuit layouters.
+
+use std::cmp;
+use std::collections::HashSet;
+use std::fmt;
+
+use ff::Field;
+
+use super::{Cell, RegionIndex};
+use crate::plonk::Assigned;
+use crate::plonk::{Advice, Any, Column, Error, Fixed, Permutation, Selector};
+
+/// Helper trait for implementing a custom [`Layouter`].
+///
+/// This trait is used for implementing region assignments:
+///
+/// ```ignore
+/// impl<'a, F: FieldExt, C: Chip<F>, CS: Assignment<F> + 'a> Layouter<C> for MyLayouter<'a, C, CS> {
+///     fn assign_region(
+///         &mut self,
+///         assignment: impl FnOnce(Region<'_, F, C>) -> Result<(), Error>,
+///     ) -> Result<(), Error> {
+///         let region_index = self.regions.len();
+///         self.regions.push(self.current_gate);
+///
+///         let mut region = MyRegion::new(self, region_index);
+///         {
+///             let region: &mut dyn RegionLayouter<F> = &mut region;
+///             assignment(region.into())?;
+///         }
+///         self.current_gate += region.row_count;
+///
+///         Ok(())
+///     }
+/// }
+/// ```
+///
+/// TODO: It would be great if we could constrain the columns in these types to be
+/// "logical" columns that are guaranteed to correspond to the chip (and have come from
+/// `Chip::Config`).
+///
+/// [`Layouter`]: super::Layouter
+pub trait RegionLayouter<F: Field>: fmt::Debug {
+    /// Enables a selector at the given offset.
+    fn enable_selector<'v>(
+        &'v mut self,
+        annotation: &'v (dyn Fn() -> String + 'v),
+        selector: &Selector,
+        offset: usize,
+    ) -> Result<(), Error>;
+
+    /// Assign an advice column value (witness)
+    fn assign_advice<'v>(
+        &'v mut self,
+        annotation: &'v (dyn Fn() -> String + 'v),
+        column: Column<Advice>,
+        offset: usize,
+        to: &'v mut (dyn FnMut() -> Result<Assigned<F>, Error> + 'v),
+    ) -> Result<Cell, Error>;
+
+    /// Assign a fixed value
+    fn assign_fixed<'v>(
+        &'v mut self,
+        annotation: &'v (dyn Fn() -> String + 'v),
+        column: Column<Fixed>,
+        offset: usize,
+        to: &'v mut (dyn FnMut() -> Result<Assigned<F>, Error> + 'v),
+    ) -> Result<Cell, Error>;
+
+    /// Constraint two cells to have the same value.
+    ///
+    /// Returns an error if either of the cells is not within the given permutation.
+    fn constrain_equal(
+        &mut self,
+        permutation: &Permutation,
+        left: Cell,
+        right: Cell,
+    ) -> Result<(), Error>;
+}
+
+/// The shape of a region. For a region at a certain index, we track
+/// the set of columns it uses as well as the number of rows it uses.
+#[derive(Clone, Debug)]
+pub struct RegionShape {
+    pub(super) region_index: RegionIndex,
+    pub(super) columns: HashSet<Column<Any>>,
+    pub(super) row_count: usize,
+}
+
+impl RegionShape {
+    /// Create a new `RegionShape` for a region at `region_index`.
+    pub fn new(region_index: RegionIndex) -> Self {
+        RegionShape {
+            region_index,
+            columns: HashSet::default(),
+            row_count: 0,
+        }
+    }
+
+    /// Get the `region_index` of a `RegionShape`.
+    pub fn region_index(&self) -> RegionIndex {
+        self.region_index
+    }
+
+    /// Get a reference to the set of `columns` used in a `RegionShape`.
+    pub fn columns(&self) -> &HashSet<Column<Any>> {
+        &self.columns
+    }
+
+    /// Get the `row_count` of a `RegionShape`.
+    pub fn row_count(&self) -> usize {
+        self.row_count
+    }
+}
+
+impl<F: Field> RegionLayouter<F> for RegionShape {
+    fn enable_selector<'v>(
+        &'v mut self,
+        _: &'v (dyn Fn() -> String + 'v),
+        selector: &Selector,
+        offset: usize,
+    ) -> Result<(), Error> {
+        // Track the selector's fixed column as part of the region's shape.
+        // TODO: Avoid exposing selector internals?
+        self.columns.insert(selector.0.into());
+        self.row_count = cmp::max(self.row_count, offset + 1);
+        Ok(())
+    }
+
+    fn assign_advice<'v>(
+        &'v mut self,
+        _: &'v (dyn Fn() -> String + 'v),
+        column: Column<Advice>,
+        offset: usize,
+        _to: &'v mut (dyn FnMut() -> Result<Assigned<F>, Error> + 'v),
+    ) -> Result<Cell, Error> {
+        self.columns.insert(column.into());
+        self.row_count = cmp::max(self.row_count, offset + 1);
+
+        Ok(Cell {
+            region_index: self.region_index,
+            row_offset: offset,
+            column: column.into(),
+        })
+    }
+
+    fn assign_fixed<'v>(
+        &'v mut self,
+        _: &'v (dyn Fn() -> String + 'v),
+        column: Column<Fixed>,
+        offset: usize,
+        _to: &'v mut (dyn FnMut() -> Result<Assigned<F>, Error> + 'v),
+    ) -> Result<Cell, Error> {
+        self.columns.insert(column.into());
+        self.row_count = cmp::max(self.row_count, offset + 1);
+
+        Ok(Cell {
+            region_index: self.region_index,
+            row_offset: offset,
+            column: column.into(),
+        })
+    }
+
+    fn constrain_equal(
+        &mut self,
+        _permutation: &Permutation,
+        _left: Cell,
+        _right: Cell,
+    ) -> Result<(), Error> {
+        // Equality constraints don't affect the region shape.
+        Ok(())
+    }
+}
+
+
+ + \ No newline at end of file diff --git a/rustdoc/latest/src/halo2/dev.rs.html b/rustdoc/latest/src/halo2/dev.rs.html new file mode 100644 index 00000000..a03da83a --- /dev/null +++ b/rustdoc/latest/src/halo2/dev.rs.html @@ -0,0 +1,1524 @@ +dev.rs - source + + + +
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+ 32
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+ 41
+ 42
+ 43
+ 44
+ 45
+ 46
+ 47
+ 48
+ 49
+ 50
+ 51
+ 52
+ 53
+ 54
+ 55
+ 56
+ 57
+ 58
+ 59
+ 60
+ 61
+ 62
+ 63
+ 64
+ 65
+ 66
+ 67
+ 68
+ 69
+ 70
+ 71
+ 72
+ 73
+ 74
+ 75
+ 76
+ 77
+ 78
+ 79
+ 80
+ 81
+ 82
+ 83
+ 84
+ 85
+ 86
+ 87
+ 88
+ 89
+ 90
+ 91
+ 92
+ 93
+ 94
+ 95
+ 96
+ 97
+ 98
+ 99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
+399
+400
+401
+402
+403
+404
+405
+406
+407
+408
+409
+410
+411
+412
+413
+414
+415
+416
+417
+418
+419
+420
+421
+422
+423
+424
+425
+426
+427
+428
+429
+430
+431
+432
+433
+434
+435
+436
+437
+438
+439
+440
+441
+442
+443
+444
+445
+446
+447
+448
+449
+450
+451
+452
+453
+454
+455
+456
+457
+458
+459
+460
+461
+462
+463
+464
+465
+466
+467
+468
+469
+470
+471
+472
+473
+474
+475
+476
+477
+478
+479
+480
+481
+482
+483
+484
+485
+486
+487
+488
+489
+490
+491
+492
+493
+494
+495
+496
+497
+498
+499
+500
+501
+502
+503
+504
+505
+506
+507
+508
+509
+510
+511
+512
+513
+514
+515
+516
+517
+518
+519
+520
+521
+522
+523
+524
+525
+526
+527
+528
+529
+530
+531
+532
+533
+534
+535
+536
+537
+538
+539
+540
+541
+542
+543
+544
+545
+546
+547
+548
+549
+550
+551
+552
+553
+554
+555
+556
+557
+558
+559
+560
+561
+562
+563
+564
+565
+566
+567
+568
+569
+570
+571
+572
+573
+574
+575
+576
+577
+578
+579
+580
+581
+582
+583
+584
+585
+586
+587
+588
+589
+590
+591
+592
+593
+594
+595
+596
+597
+598
+599
+600
+601
+602
+603
+604
+605
+606
+607
+608
+609
+610
+611
+612
+613
+614
+615
+616
+617
+618
+619
+620
+621
+622
+623
+624
+625
+626
+627
+628
+629
+630
+631
+632
+633
+634
+635
+636
+637
+638
+639
+640
+641
+642
+643
+644
+645
+646
+647
+648
+649
+650
+651
+652
+653
+654
+655
+656
+657
+658
+659
+660
+661
+662
+663
+664
+665
+666
+667
+668
+669
+670
+671
+672
+673
+674
+675
+676
+677
+678
+679
+680
+681
+682
+683
+684
+685
+686
+687
+688
+689
+690
+691
+692
+693
+694
+695
+696
+697
+698
+699
+700
+701
+702
+703
+704
+705
+706
+707
+708
+709
+710
+711
+712
+713
+714
+715
+716
+717
+718
+719
+720
+721
+722
+723
+724
+725
+726
+727
+728
+729
+730
+731
+732
+733
+734
+735
+736
+737
+738
+739
+740
+741
+742
+743
+744
+745
+746
+747
+748
+749
+750
+751
+752
+
+//! Tools for developing circuits.
+
+use std::collections::HashMap;
+use std::fmt;
+use std::iter;
+
+use ff::Field;
+
+use crate::plonk::Assigned;
+use crate::{
+    arithmetic::{FieldExt, Group},
+    plonk::{
+        permutation, Advice, Any, Assignment, Circuit, Column, ColumnType, ConstraintSystem, Error,
+        Expression, Fixed, FloorPlanner, Permutation, Selector,
+    },
+    poly::Rotation,
+};
+
+pub mod metadata;
+
+#[cfg(feature = "dev-graph")]
+mod graph;
+
+#[cfg(feature = "dev-graph")]
+#[cfg_attr(docsrs, doc(cfg(feature = "dev-graph")))]
+pub use graph::{circuit_dot_graph, layout::CircuitLayout};
+
+/// Cells that haven't been explicitly assigned to, default to zero.
+fn cell_value<F: Field>(cell: Option<F>) -> F {
+    cell.unwrap_or_else(F::zero)
+}
+
+/// The reasons why a particular circuit is not satisfied.
+#[derive(Debug, PartialEq)]
+pub enum VerifyFailure {
+    /// A cell used in an active gate was not assigned to.
+    Cell {
+        /// The index of the active gate.
+        gate: metadata::Gate,
+        /// The region in which this cell should be assigned.
+        region: metadata::Region,
+        /// The column in which this cell should be assigned.
+        column: Column<Any>,
+        /// The offset (relative to the start of the region) at which this cell should be
+        /// assigned. This may be negative (for example, if a selector enables a gate at
+        /// offset 0, but the gate uses `Rotation::prev()`).
+        offset: isize,
+    },
+    /// A constraint was not satisfied for a particular row.
+    Constraint {
+        /// The polynomial constraint that is not satisfied.
+        constraint: metadata::Constraint,
+        /// The row on which this constraint is not satisfied.
+        row: usize,
+    },
+    /// A lookup input did not exist in its corresponding table.
+    Lookup {
+        /// The index of the lookup that is not satisfied. These indices are assigned in
+        /// the order in which `ConstraintSystem::lookup` is called during
+        /// `Circuit::configure`.
+        lookup_index: usize,
+        /// The row on which this lookup is not satisfied.
+        row: usize,
+    },
+    /// A permutation did not preserve the original value of a cell.
+    Permutation {
+        /// The index of the permutation that is not satisfied. These indices are assigned
+        /// in the order in which `ConstraintSystem::lookup` is called during
+        /// `Circuit::configure`.
+        perm_index: usize,
+        /// The column in which this permutation is not satisfied.
+        column: usize,
+        /// The row on which this permutation is not satisfied.
+        row: usize,
+    },
+}
+
+impl fmt::Display for VerifyFailure {
+    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+        match self {
+            Self::Cell {
+                gate,
+                region,
+                column,
+                offset,
+            } => {
+                write!(
+                    f,
+                    "{} uses {}, which requires cell in column {:?} at offset {} to be assigned.",
+                    region, gate, column, offset
+                )
+            }
+            Self::Constraint { constraint, row } => {
+                write!(f, "{} is not satisfied on row {}", constraint, row)
+            }
+            Self::Lookup { lookup_index, row } => {
+                write!(f, "Lookup {} is not satisfied on row {}", lookup_index, row)
+            }
+            Self::Permutation {
+                perm_index,
+                column,
+                row,
+            } => {
+                write!(
+                    f,
+                    "Permutation {} is not satisfied by cell ({:?}, {})",
+                    perm_index, column, row
+                )
+            }
+        }
+    }
+}
+
+#[derive(Debug)]
+struct Region {
+    /// The name of the region. Not required to be unique.
+    name: String,
+    /// The row that this region starts on, if known.
+    start: Option<usize>,
+    /// The selectors that have been enabled in this region. All other selectors are by
+    /// construction not enabled.
+    enabled_selectors: HashMap<Selector, Vec<usize>>,
+    /// The cells assigned in this region. We store this as a `Vec` so that if any cells
+    /// are double-assigned, they will be visibly darker.
+    cells: Vec<(Column<Any>, usize)>,
+}
+
+impl Region {
+    fn update_start(&mut self, row: usize) {
+        // The region start is the earliest row assigned to.
+        let mut start = self.start.unwrap_or(row);
+        if row < start {
+            // The first row assigned was not at start 0 within the region.
+            start = row;
+        }
+        self.start = Some(start);
+    }
+}
+
+/// A test prover for debugging circuits.
+///
+/// The normal proving process, when applied to a buggy circuit implementation, might
+/// return proofs that do not validate when they should, but it can't indicate anything
+/// other than "something is invalid". `MockProver` can be used to figure out _why_ these
+/// are invalid: it stores all the private inputs along with the circuit internals, and
+/// then checks every constraint manually.
+///
+/// # Examples
+///
+/// ```
+/// use halo2::{
+///     arithmetic::FieldExt,
+///     circuit::{Layouter, SimpleFloorPlanner},
+///     dev::{MockProver, VerifyFailure},
+///     pasta::Fp,
+///     plonk::{Advice, Circuit, Column, ConstraintSystem, Error},
+///     poly::Rotation,
+/// };
+/// const K: u32 = 5;
+///
+/// #[derive(Copy, Clone)]
+/// struct MyConfig {
+///     a: Column<Advice>,
+///     b: Column<Advice>,
+///     c: Column<Advice>,
+/// }
+///
+/// #[derive(Clone, Default)]
+/// struct MyCircuit {
+///     a: Option<u64>,
+///     b: Option<u64>,
+/// }
+///
+/// impl<F: FieldExt> Circuit<F> for MyCircuit {
+///     type Config = MyConfig;
+///     type FloorPlanner = SimpleFloorPlanner;
+///
+///     fn without_witnesses(&self) -> Self {
+///         Self::default()
+///     }
+///
+///     fn configure(meta: &mut ConstraintSystem<F>) -> MyConfig {
+///         let a = meta.advice_column();
+///         let b = meta.advice_column();
+///         let c = meta.advice_column();
+///
+///         meta.create_gate("R1CS constraint", |meta| {
+///             let a = meta.query_advice(a, Rotation::cur());
+///             let b = meta.query_advice(b, Rotation::cur());
+///             let c = meta.query_advice(c, Rotation::cur());
+///
+///             // BUG: Should be a * b - c
+///             Some(("buggy R1CS", a * b + c))
+///         });
+///
+///         MyConfig { a, b, c }
+///     }
+///
+///     fn synthesize(&self, config: MyConfig, mut layouter: impl Layouter<F>) -> Result<(), Error> {
+///         layouter.assign_region(|| "Example region", |mut region| {
+///             region.assign_advice(|| "a", config.a, 0, || {
+///                 self.a.map(|v| F::from_u64(v)).ok_or(Error::SynthesisError)
+///             })?;
+///             region.assign_advice(|| "b", config.b, 0, || {
+///                 self.b.map(|v| F::from_u64(v)).ok_or(Error::SynthesisError)
+///             })?;
+///             region.assign_advice(|| "c", config.c, 0, || {
+///                 self.a
+///                     .and_then(|a| self.b.map(|b| F::from_u64(a * b)))
+///                     .ok_or(Error::SynthesisError)
+///             })?;
+///             Ok(())
+///         })
+///     }
+/// }
+///
+/// // Assemble the private inputs to the circuit.
+/// let circuit = MyCircuit {
+///     a: Some(2),
+///     b: Some(4),
+/// };
+///
+/// // This circuit has no public inputs.
+/// let instance = vec![];
+///
+/// let prover = MockProver::<Fp>::run(K, &circuit, instance).unwrap();
+/// assert_eq!(
+///     prover.verify(),
+///     Err(vec![VerifyFailure::Constraint {
+///         constraint: ((0, "R1CS constraint").into(), 0, "buggy R1CS").into(),
+///         row: 0
+///     }])
+/// );
+/// ```
+#[derive(Debug)]
+pub struct MockProver<F: Group + Field> {
+    n: u32,
+    cs: ConstraintSystem<F>,
+
+    /// The regions in the circuit.
+    regions: Vec<Region>,
+    /// The current region being assigned to. Will be `None` after the circuit has been
+    /// synthesized.
+    current_region: Option<Region>,
+
+    // The fixed cells in the circuit, arranged as [column][row].
+    fixed: Vec<Vec<Option<F>>>,
+    // The advice cells in the circuit, arranged as [column][row].
+    advice: Vec<Vec<Option<F>>>,
+    // The instance cells in the circuit, arranged as [column][row].
+    instance: Vec<Vec<F>>,
+
+    permutations: Vec<permutation::keygen::Assembly>,
+}
+
+impl<F: Field + Group> Assignment<F> for MockProver<F> {
+    fn enter_region<NR, N>(&mut self, name: N)
+    where
+        NR: Into<String>,
+        N: FnOnce() -> NR,
+    {
+        assert!(self.current_region.is_none());
+        self.current_region = Some(Region {
+            name: name().into(),
+            start: None,
+            enabled_selectors: HashMap::default(),
+            cells: vec![],
+        });
+    }
+
+    fn exit_region(&mut self) {
+        self.regions.push(self.current_region.take().unwrap());
+    }
+
+    fn enable_selector<A, AR>(
+        &mut self,
+        annotation: A,
+        selector: &Selector,
+        row: usize,
+    ) -> Result<(), Error>
+    where
+        A: FnOnce() -> AR,
+        AR: Into<String>,
+    {
+        // Track that this selector was enabled. We require that all selectors are enabled
+        // inside some region (i.e. no floating selectors).
+        self.current_region
+            .as_mut()
+            .unwrap()
+            .enabled_selectors
+            .entry(*selector)
+            .or_default()
+            .push(row);
+
+        // Selectors are just fixed columns.
+        self.assign_fixed(annotation, selector.0, row, || Ok(F::one()))
+    }
+
+    fn assign_advice<V, VR, A, AR>(
+        &mut self,
+        _: A,
+        column: Column<Advice>,
+        row: usize,
+        to: V,
+    ) -> Result<(), Error>
+    where
+        V: FnOnce() -> Result<VR, Error>,
+        VR: Into<Assigned<F>>,
+        A: FnOnce() -> AR,
+        AR: Into<String>,
+    {
+        if let Some(region) = self.current_region.as_mut() {
+            region.update_start(row);
+            region.cells.push((column.into(), row));
+        }
+
+        *self
+            .advice
+            .get_mut(column.index())
+            .and_then(|v| v.get_mut(row))
+            .ok_or(Error::BoundsFailure)? = Some(to()?.into().evaluate());
+
+        Ok(())
+    }
+
+    fn assign_fixed<V, VR, A, AR>(
+        &mut self,
+        _: A,
+        column: Column<Fixed>,
+        row: usize,
+        to: V,
+    ) -> Result<(), Error>
+    where
+        V: FnOnce() -> Result<VR, Error>,
+        VR: Into<Assigned<F>>,
+        A: FnOnce() -> AR,
+        AR: Into<String>,
+    {
+        if let Some(region) = self.current_region.as_mut() {
+            region.update_start(row);
+            region.cells.push((column.into(), row));
+        }
+
+        *self
+            .fixed
+            .get_mut(column.index())
+            .and_then(|v| v.get_mut(row))
+            .ok_or(Error::BoundsFailure)? = Some(to()?.into().evaluate());
+
+        Ok(())
+    }
+
+    fn copy(
+        &mut self,
+        permutation: &Permutation,
+        left_column: Column<Any>,
+        left_row: usize,
+        right_column: Column<Any>,
+        right_row: usize,
+    ) -> Result<(), crate::plonk::Error> {
+        // Check bounds first
+        if permutation.index() >= self.permutations.len() {
+            return Err(Error::BoundsFailure);
+        }
+
+        let left_column_index = permutation
+            .mapping()
+            .iter()
+            .position(|c| c == &left_column)
+            .ok_or(Error::SynthesisError)?;
+        let right_column_index = permutation
+            .mapping()
+            .iter()
+            .position(|c| c == &right_column)
+            .ok_or(Error::SynthesisError)?;
+
+        self.permutations[permutation.index()].copy(
+            left_column_index,
+            left_row,
+            right_column_index,
+            right_row,
+        )
+    }
+
+    fn push_namespace<NR, N>(&mut self, _: N)
+    where
+        NR: Into<String>,
+        N: FnOnce() -> NR,
+    {
+        // TODO: Do something with namespaces :)
+    }
+
+    fn pop_namespace(&mut self, _: Option<String>) {
+        // TODO: Do something with namespaces :)
+    }
+}
+
+impl<F: FieldExt> MockProver<F> {
+    /// Runs a synthetic keygen-and-prove operation on the given circuit, collecting data
+    /// about the constraints and their assignments.
+    pub fn run<ConcreteCircuit: Circuit<F>>(
+        k: u32,
+        circuit: &ConcreteCircuit,
+        instance: Vec<Vec<F>>,
+    ) -> Result<Self, Error> {
+        let n = 1 << k;
+
+        let mut cs = ConstraintSystem::default();
+        let config = ConcreteCircuit::configure(&mut cs);
+
+        let fixed = vec![vec![None; n as usize]; cs.num_fixed_columns];
+        let advice = vec![vec![None; n as usize]; cs.num_advice_columns];
+        let permutations = cs
+            .permutations
+            .iter()
+            .map(|p| permutation::keygen::Assembly::new(n as usize, p))
+            .collect();
+
+        let mut prover = MockProver {
+            n,
+            cs,
+            regions: vec![],
+            current_region: None,
+            fixed,
+            advice,
+            instance,
+            permutations,
+        };
+
+        ConcreteCircuit::FloorPlanner::synthesize(&mut prover, circuit, config)?;
+
+        Ok(prover)
+    }
+
+    /// Returns `Ok(())` if this `MockProver` is satisfied, or a list of errors indicating
+    /// the reasons that the circuit is not satisfied.
+    pub fn verify(&self) -> Result<(), Vec<VerifyFailure>> {
+        let n = self.n as i32;
+
+        // Check that within each region, all cells used in instantiated gates have been
+        // assigned to.
+        let selector_errors = self.regions.iter().enumerate().flat_map(|(r_i, r)| {
+            r.enabled_selectors.iter().flat_map(move |(selector, at)| {
+                // Find the gates enabled by this selector
+                self.cs
+                    .gates
+                    .iter()
+                    // Assume that if a queried selector is enabled, the user wants to use the
+                    // corresponding gate in some way.
+                    //
+                    // TODO: This will trip up on the reverse case, where leaving a selector
+                    // un-enabled keeps a gate enabled. We could alternatively require that
+                    // every selector is explicitly enabled or disabled on every row? But that
+                    // seems messy and confusing.
+                    .enumerate()
+                    .filter(move |(_, g)| g.queried_selectors().contains(selector))
+                    .flat_map(move |(gate_index, gate)| {
+                        at.iter().flat_map(move |selector_row| {
+                            // Selectors are queried with no rotation.
+                            let gate_row = *selector_row as i32;
+
+                            gate.queried_cells().iter().filter_map(move |cell| {
+                                // Determine where this cell should have been assigned.
+                                let cell_row = ((gate_row + n + cell.rotation.0) % n) as usize;
+
+                                // Check that it was assigned!
+                                if r.cells.contains(&(cell.column, cell_row)) {
+                                    None
+                                } else {
+                                    Some(VerifyFailure::Cell {
+                                        gate: (gate_index, gate.name()).into(),
+                                        region: (r_i, r.name.clone()).into(),
+                                        column: cell.column,
+                                        offset: cell_row as isize - r.start.unwrap() as isize,
+                                    })
+                                }
+                            })
+                        })
+                    })
+            })
+        });
+
+        // Check that all gates are satisfied for all rows.
+        let gate_errors =
+            self.cs
+                .gates
+                .iter()
+                .enumerate()
+                .flat_map(|(gate_index, gate)| {
+                    // We iterate from n..2n so we can just reduce to handle wrapping.
+                    (n..(2 * n)).flat_map(move |row| {
+                        fn load_opt<'a, F: FieldExt, T: ColumnType>(
+                            n: i32,
+                            row: i32,
+                            queries: &'a [(Column<T>, Rotation)],
+                            cells: &'a [Vec<Option<F>>],
+                        ) -> impl Fn(usize) -> F + 'a {
+                            move |index| {
+                                let (column, at) = &queries[index];
+                                let resolved_row = (row + at.0) % n;
+                                cell_value(cells[column.index()][resolved_row as usize])
+                            }
+                        }
+
+                        fn load<'a, F: FieldExt, T: ColumnType>(
+                            n: i32,
+                            row: i32,
+                            queries: &'a [(Column<T>, Rotation)],
+                            cells: &'a [Vec<F>],
+                        ) -> impl Fn(usize) -> F + 'a {
+                            move |index| {
+                                let (column, at) = &queries[index];
+                                let resolved_row = (row + at.0) % n;
+                                cells[column.index()][resolved_row as usize]
+                            }
+                        }
+
+                        gate.polynomials().iter().enumerate().filter_map(
+                            move |(poly_index, poly)| {
+                                if poly.evaluate(
+                                    &|scalar| scalar,
+                                    &load_opt(n, row, &self.cs.fixed_queries, &self.fixed),
+                                    &load_opt(n, row, &self.cs.advice_queries, &self.advice),
+                                    &load(n, row, &self.cs.instance_queries, &self.instance),
+                                    &|a, b| a + &b,
+                                    &|a, b| a * &b,
+                                    &|a, scalar| a * scalar,
+                                ) == F::zero()
+                                {
+                                    None
+                                } else {
+                                    Some(VerifyFailure::Constraint {
+                                        constraint: (
+                                            (gate_index, gate.name()).into(),
+                                            poly_index,
+                                            gate.constraint_name(poly_index),
+                                        )
+                                            .into(),
+                                        row: (row - n) as usize,
+                                    })
+                                }
+                            },
+                        )
+                    })
+                });
+
+        // Check that all lookups exist in their respective tables.
+        let lookup_errors =
+            self.cs
+                .lookups
+                .iter()
+                .enumerate()
+                .flat_map(|(lookup_index, lookup)| {
+                    (0..n).filter_map(move |input_row| {
+                        let load = |expression: &Expression<F>, row| {
+                            expression.evaluate(
+                                &|scalar| scalar,
+                                &|index| {
+                                    let query = self.cs.fixed_queries[index];
+                                    let column_index = query.0.index();
+                                    let rotation = query.1 .0;
+                                    cell_value(
+                                        self.fixed[column_index]
+                                            [(row as i32 + n + rotation) as usize % n as usize],
+                                    )
+                                },
+                                &|index| {
+                                    let query = self.cs.advice_queries[index];
+                                    let column_index = query.0.index();
+                                    let rotation = query.1 .0;
+                                    cell_value(
+                                        self.advice[column_index]
+                                            [(row as i32 + n + rotation) as usize % n as usize],
+                                    )
+                                },
+                                &|index| {
+                                    let query = self.cs.instance_queries[index];
+                                    let column_index = query.0.index();
+                                    let rotation = query.1 .0;
+                                    self.instance[column_index]
+                                        [(row as i32 + n + rotation) as usize % n as usize]
+                                },
+                                &|a, b| a + b,
+                                &|a, b| a * b,
+                                &|a, scalar| a * scalar,
+                            )
+                        };
+
+                        let inputs: Vec<_> = lookup
+                            .input_expressions
+                            .iter()
+                            .map(|c| load(c, input_row))
+                            .collect();
+                        let lookup_passes = (0..n)
+                            .map(|table_row| {
+                                lookup
+                                    .table_expressions
+                                    .iter()
+                                    .map(move |c| load(c, table_row))
+                            })
+                            .any(|table_row| table_row.eq(inputs.iter().cloned()));
+                        if lookup_passes {
+                            None
+                        } else {
+                            Some(VerifyFailure::Lookup {
+                                lookup_index,
+                                row: input_row as usize,
+                            })
+                        }
+                    })
+                });
+
+        // Check that permutations preserve the original values of the cells.
+        let perm_errors =
+            self.permutations
+                .iter()
+                .enumerate()
+                .flat_map(|(perm_index, assembly)| {
+                    // Original values of columns involved in the permutation
+                    let original = |perm_index: usize, column, row| {
+                        self.cs.permutations[perm_index]
+                            .get_columns()
+                            .get(column)
+                            .map(|c: &Column<Any>| match c.column_type() {
+                                Any::Advice => cell_value(self.advice[c.index()][row]),
+                                Any::Fixed => cell_value(self.fixed[c.index()][row]),
+                                Any::Instance => self.instance[c.index()][row],
+                            })
+                            .unwrap()
+                    };
+
+                    // Iterate over each column of the permutation
+                    assembly
+                        .mapping
+                        .iter()
+                        .enumerate()
+                        .flat_map(move |(column, values)| {
+                            // Iterate over each row of the column to check that the cell's
+                            // value is preserved by the mapping.
+                            values.iter().enumerate().filter_map(move |(row, cell)| {
+                                let original_cell = original(perm_index, column, row);
+                                let permuted_cell = original(perm_index, cell.0, cell.1);
+                                if original_cell == permuted_cell {
+                                    None
+                                } else {
+                                    Some(VerifyFailure::Permutation {
+                                        perm_index,
+                                        column,
+                                        row,
+                                    })
+                                }
+                            })
+                        })
+                });
+
+        let errors: Vec<_> = iter::empty()
+            .chain(selector_errors)
+            .chain(gate_errors)
+            .chain(lookup_errors)
+            .chain(perm_errors)
+            .collect();
+        if errors.is_empty() {
+            Ok(())
+        } else {
+            Err(errors)
+        }
+    }
+}
+
+#[cfg(test)]
+mod tests {
+    use pasta_curves::Fp;
+
+    use super::{MockProver, VerifyFailure};
+    use crate::{
+        circuit::{Layouter, SimpleFloorPlanner},
+        plonk::{Advice, Any, Circuit, Column, ConstraintSystem, Error, Selector},
+        poly::Rotation,
+    };
+
+    #[test]
+    fn unassigned_cell() {
+        const K: u32 = 4;
+
+        #[derive(Clone)]
+        struct FaultyCircuitConfig {
+            a: Column<Advice>,
+            q: Selector,
+        }
+
+        struct FaultyCircuit {}
+
+        impl Circuit<Fp> for FaultyCircuit {
+            type Config = FaultyCircuitConfig;
+            type FloorPlanner = SimpleFloorPlanner;
+
+            fn configure(meta: &mut ConstraintSystem<Fp>) -> Self::Config {
+                let a = meta.advice_column();
+                let b = meta.advice_column();
+                let q = meta.selector();
+
+                meta.create_gate("Equality check", |cells| {
+                    let a = cells.query_advice(a, Rotation::prev());
+                    let b = cells.query_advice(b, Rotation::cur());
+                    let q = cells.query_selector(q);
+
+                    // If q is enabled, a and b must be assigned to.
+                    vec![q * (a - b)]
+                });
+
+                FaultyCircuitConfig { a, q }
+            }
+
+            fn without_witnesses(&self) -> Self {
+                Self {}
+            }
+
+            fn synthesize(
+                &self,
+                config: Self::Config,
+                mut layouter: impl Layouter<Fp>,
+            ) -> Result<(), Error> {
+                layouter.assign_region(
+                    || "Faulty synthesis",
+                    |mut region| {
+                        // Enable the equality gate.
+                        config.q.enable(&mut region, 1)?;
+
+                        // Assign a = 0.
+                        region.assign_advice(|| "a", config.a, 0, || Ok(Fp::zero()))?;
+
+                        // BUG: Forget to assign b = 0! This could go unnoticed during
+                        // development, because cell values default to zero, which in this
+                        // case is fine, but for other assignments would be broken.
+                        Ok(())
+                    },
+                )
+            }
+        }
+
+        let prover = MockProver::run(K, &FaultyCircuit {}, vec![]).unwrap();
+        assert_eq!(
+            prover.verify(),
+            Err(vec![VerifyFailure::Cell {
+                gate: (0, "Equality check").into(),
+                region: (0, "Faulty synthesis".to_owned()).into(),
+                column: Column::new(1, Any::Advice),
+                offset: 1,
+            }])
+        );
+    }
+}
+
+
+ + \ No newline at end of file diff --git a/rustdoc/latest/src/halo2/dev/metadata.rs.html b/rustdoc/latest/src/halo2/dev/metadata.rs.html new file mode 100644 index 00000000..9e1c4280 --- /dev/null +++ b/rustdoc/latest/src/halo2/dev/metadata.rs.html @@ -0,0 +1,192 @@ +metadata.rs - source + + + +
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+
+//! Metadata about circuits.
+
+use std::fmt;
+
+/// Metadata about a configured gate within a circuit.
+#[derive(Debug, PartialEq)]
+pub struct Gate {
+    /// The index of the active gate. These indices are assigned in the order in which
+    /// `ConstraintSystem::create_gate` is called during `Circuit::configure`.
+    index: usize,
+    /// The name of the active gate. These are specified by the gate creator (such as
+    /// a chip implementation), and is not enforced to be unique.
+    name: &'static str,
+}
+
+impl fmt::Display for Gate {
+    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+        write!(f, "Gate {} ('{}')", self.index, self.name)
+    }
+}
+
+impl From<(usize, &'static str)> for Gate {
+    fn from((index, name): (usize, &'static str)) -> Self {
+        Gate { index, name }
+    }
+}
+
+/// Metadata about a configured constraint within a circuit.
+#[derive(Debug, PartialEq)]
+pub struct Constraint {
+    /// The gate containing the constraint.
+    gate: Gate,
+    /// The index of the polynomial constraint within the gate. These indices correspond
+    /// to the order in which the constraints are returned from the closure passed to
+    /// `ConstraintSystem::create_gate` during `Circuit::configure`.
+    index: usize,
+    /// The name of the constraint. This is specified by the gate creator (such as a chip
+    /// implementation), and is not enforced to be unique.
+    name: &'static str,
+}
+
+impl fmt::Display for Constraint {
+    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+        write!(
+            f,
+            "Constraint {}{} in gate {} ('{}')",
+            self.index,
+            if self.name.is_empty() {
+                String::new()
+            } else {
+                format!(" ('{}')", self.name)
+            },
+            self.gate.index,
+            self.gate.name,
+        )
+    }
+}
+
+impl From<(Gate, usize, &'static str)> for Constraint {
+    fn from((gate, index, name): (Gate, usize, &'static str)) -> Self {
+        Constraint { gate, index, name }
+    }
+}
+
+/// Metadata about an assigned region within a circuit.
+#[derive(Debug, PartialEq)]
+pub struct Region {
+    /// The index of the region. These indices are assigned in the order in which
+    /// `Layouter::assign_region` is called during `Circuit::synthesize`.
+    index: usize,
+    /// The name of the region. This is specified by the region creator (such as a chip
+    /// implementation), and is not enforced to be unique.
+    name: String,
+}
+
+impl fmt::Display for Region {
+    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+        write!(f, "Region {} ('{}')", self.index, self.name)
+    }
+}
+
+impl From<(usize, String)> for Region {
+    fn from((index, name): (usize, String)) -> Self {
+        Region { index, name }
+    }
+}
+
+
+ + \ No newline at end of file diff --git a/rustdoc/latest/src/halo2/lib.rs.html b/rustdoc/latest/src/halo2/lib.rs.html new file mode 100644 index 00000000..895949af --- /dev/null +++ b/rustdoc/latest/src/halo2/lib.rs.html @@ -0,0 +1,86 @@ +lib.rs - source + + + +
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+
+//! # halo2
+
+#![cfg_attr(docsrs, feature(doc_cfg))]
+// Build without warnings on stable 1.51 and later.
+#![allow(unknown_lints)]
+// Disable old lint warnings until our MSRV is at least 1.51.
+#![allow(renamed_and_removed_lints)]
+// Use the old lint name to build without warnings until our MSRV is at least 1.51.
+#![allow(clippy::unknown_clippy_lints)]
+// The actual lints we want to disable.
+#![allow(
+    clippy::op_ref,
+    clippy::assign_op_pattern,
+    clippy::too_many_arguments,
+    clippy::suspicious_arithmetic_impl,
+    clippy::many_single_char_names,
+    clippy::same_item_push,
+    clippy::upper_case_acronyms
+)]
+#![deny(broken_intra_doc_links)]
+#![deny(missing_debug_implementations)]
+#![deny(missing_docs)]
+#![deny(unsafe_code)]
+
+pub mod arithmetic;
+pub mod circuit;
+pub use pasta_curves as pasta;
+mod multicore;
+pub mod plonk;
+pub mod poly;
+pub mod transcript;
+
+pub mod dev;
+
+
+ + \ No newline at end of file diff --git a/rustdoc/latest/src/halo2/multicore.rs.html b/rustdoc/latest/src/halo2/multicore.rs.html new file mode 100644 index 00000000..4f1d0242 --- /dev/null +++ b/rustdoc/latest/src/halo2/multicore.rs.html @@ -0,0 +1,30 @@ +multicore.rs - source + + + +
1
+2
+3
+4
+5
+
+//! An interface for dealing with the kinds of parallel computations involved in
+//! `halo2`. It's currently just a (very!) thin wrapper around [`rayon`] but may
+//! be extended in the future to allow for various parallelism strategies.
+
+pub use rayon::{current_num_threads, scope, Scope};
+
+
+ + \ No newline at end of file diff --git a/rustdoc/latest/src/halo2/plonk.rs.html b/rustdoc/latest/src/halo2/plonk.rs.html new file mode 100644 index 00000000..c34a257c --- /dev/null +++ b/rustdoc/latest/src/halo2/plonk.rs.html @@ -0,0 +1,404 @@ +plonk.rs - source + + + +
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+ 32
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+ 41
+ 42
+ 43
+ 44
+ 45
+ 46
+ 47
+ 48
+ 49
+ 50
+ 51
+ 52
+ 53
+ 54
+ 55
+ 56
+ 57
+ 58
+ 59
+ 60
+ 61
+ 62
+ 63
+ 64
+ 65
+ 66
+ 67
+ 68
+ 69
+ 70
+ 71
+ 72
+ 73
+ 74
+ 75
+ 76
+ 77
+ 78
+ 79
+ 80
+ 81
+ 82
+ 83
+ 84
+ 85
+ 86
+ 87
+ 88
+ 89
+ 90
+ 91
+ 92
+ 93
+ 94
+ 95
+ 96
+ 97
+ 98
+ 99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+
+//! This module provides an implementation of a variant of (Turbo)[PLONK][plonk]
+//! that is designed specifically for the polynomial commitment scheme described
+//! in the [Halo][halo] paper.
+//!
+//! [halo]: https://eprint.iacr.org/2019/1021
+//! [plonk]: https://eprint.iacr.org/2019/953
+
+use blake2b_simd::Params as Blake2bParams;
+
+use crate::arithmetic::{CurveAffine, FieldExt};
+use crate::poly::{
+    commitment::Params, Coeff, EvaluationDomain, ExtendedLagrangeCoeff, LagrangeCoeff,
+    PinnedEvaluationDomain, Polynomial,
+};
+use crate::transcript::{ChallengeScalar, EncodedChallenge, Transcript};
+
+mod circuit;
+mod keygen;
+mod lookup;
+pub(crate) mod permutation;
+mod vanishing;
+
+mod prover;
+mod verifier;
+
+pub use circuit::*;
+pub use keygen::*;
+pub use prover::*;
+pub use verifier::*;
+
+use std::io;
+
+/// This is a verifying key which allows for the verification of proofs for a
+/// particular circuit.
+#[derive(Debug)]
+pub struct VerifyingKey<C: CurveAffine> {
+    domain: EvaluationDomain<C::Scalar>,
+    fixed_commitments: Vec<C>,
+    permutations: Vec<permutation::VerifyingKey<C>>,
+    cs: ConstraintSystem<C::Scalar>,
+}
+
+impl<C: CurveAffine> VerifyingKey<C> {
+    /// Writes a verifying key to a buffer.
+    pub fn write<W: io::Write>(&self, writer: &mut W) -> io::Result<()> {
+        for commitment in &self.fixed_commitments {
+            writer.write_all(commitment.to_bytes().as_ref())?;
+        }
+        for permutation in &self.permutations {
+            permutation.write(writer)?;
+        }
+
+        Ok(())
+    }
+
+    /// Reads a verification key from a buffer.
+    pub fn read<R: io::Read, ConcreteCircuit: Circuit<C::Scalar>>(
+        reader: &mut R,
+        params: &Params<C>,
+    ) -> io::Result<Self> {
+        let (domain, cs, _) = keygen::create_domain::<C, ConcreteCircuit>(params);
+
+        let fixed_commitments: Vec<_> = (0..cs.num_fixed_columns)
+            .map(|_| C::read(reader))
+            .collect::<Result<_, _>>()?;
+
+        let permutations: Vec<_> = cs
+            .permutations
+            .iter()
+            .map(|argument| permutation::VerifyingKey::read(reader, argument))
+            .collect::<Result<_, _>>()?;
+
+        Ok(VerifyingKey {
+            domain,
+            fixed_commitments,
+            permutations,
+            cs,
+        })
+    }
+
+    /// Hashes a verification key into a transcript.
+    pub fn hash_into<E: EncodedChallenge<C>, T: Transcript<C, E>>(
+        &self,
+        transcript: &mut T,
+    ) -> io::Result<()> {
+        let mut hasher = Blake2bParams::new()
+            .hash_length(64)
+            .personal(b"Halo2-Verify-Key")
+            .to_state();
+
+        let s = format!("{:?}", self.pinned());
+
+        hasher.update(&(s.len() as u64).to_le_bytes());
+        hasher.update(s.as_bytes());
+
+        // Hash in final Blake2bState
+        transcript.common_scalar(C::Scalar::from_bytes_wide(hasher.finalize().as_array()))?;
+
+        Ok(())
+    }
+
+    /// Obtains a pinned representation of this verification key that contains
+    /// the minimal information necessary to reconstruct the verification key.
+    pub fn pinned(&self) -> PinnedVerificationKey<'_, C> {
+        PinnedVerificationKey {
+            base_modulus: C::Base::MODULUS,
+            scalar_modulus: C::Scalar::MODULUS,
+            domain: self.domain.pinned(),
+            fixed_commitments: &self.fixed_commitments,
+            permutations: &self.permutations,
+            cs: self.cs.pinned(),
+        }
+    }
+}
+
+/// Minimal representation of a verification key that can be used to identify
+/// its active contents.
+#[derive(Debug)]
+pub struct PinnedVerificationKey<'a, C: CurveAffine> {
+    base_modulus: &'static str,
+    scalar_modulus: &'static str,
+    domain: PinnedEvaluationDomain<'a, C::Scalar>,
+    cs: PinnedConstraintSystem<'a, C::Scalar>,
+    fixed_commitments: &'a Vec<C>,
+    permutations: &'a Vec<permutation::VerifyingKey<C>>,
+}
+/// This is a proving key which allows for the creation of proofs for a
+/// particular circuit.
+#[derive(Debug)]
+pub struct ProvingKey<C: CurveAffine> {
+    vk: VerifyingKey<C>,
+    // TODO: get rid of this?
+    l0: Polynomial<C::Scalar, ExtendedLagrangeCoeff>,
+    fixed_values: Vec<Polynomial<C::Scalar, LagrangeCoeff>>,
+    fixed_polys: Vec<Polynomial<C::Scalar, Coeff>>,
+    fixed_cosets: Vec<Polynomial<C::Scalar, ExtendedLagrangeCoeff>>,
+    permutations: Vec<permutation::ProvingKey<C>>,
+}
+
+/// This is an error that could occur during proving or circuit synthesis.
+// TODO: these errors need to be cleaned up
+#[derive(Debug)]
+pub enum Error {
+    /// This is an error that can occur during synthesis of the circuit, for
+    /// example, when the witness is not present.
+    SynthesisError,
+    /// The structured reference string or the parameters are not compatible
+    /// with the circuit being synthesized.
+    IncompatibleParams,
+    /// The constraint system is not satisfied.
+    ConstraintSystemFailure,
+    /// Out of bounds index passed to a backend
+    BoundsFailure,
+    /// Opening error
+    OpeningError,
+    /// Transcript error
+    TranscriptError,
+}
+
+impl<C: CurveAffine> ProvingKey<C> {
+    /// Get the underlying [`VerifyingKey`].
+    pub fn get_vk(&self) -> &VerifyingKey<C> {
+        &self.vk
+    }
+}
+
+impl<C: CurveAffine> VerifyingKey<C> {
+    /// Get the underlying [`EvaluationDomain`].
+    pub fn get_domain(&self) -> &EvaluationDomain<C::Scalar> {
+        &self.domain
+    }
+}
+
+#[derive(Clone, Copy, Debug)]
+struct Theta;
+type ChallengeTheta<F> = ChallengeScalar<F, Theta>;
+
+#[derive(Clone, Copy, Debug)]
+struct Beta;
+type ChallengeBeta<F> = ChallengeScalar<F, Beta>;
+
+#[derive(Clone, Copy, Debug)]
+struct Gamma;
+type ChallengeGamma<F> = ChallengeScalar<F, Gamma>;
+
+#[derive(Clone, Copy, Debug)]
+struct Y;
+type ChallengeY<F> = ChallengeScalar<F, Y>;
+
+#[derive(Clone, Copy, Debug)]
+struct X;
+type ChallengeX<F> = ChallengeScalar<F, X>;
+
+
+ + \ No newline at end of file diff --git a/rustdoc/latest/src/halo2/plonk/circuit.rs.html b/rustdoc/latest/src/halo2/plonk/circuit.rs.html new file mode 100644 index 00000000..6b628343 --- /dev/null +++ b/rustdoc/latest/src/halo2/plonk/circuit.rs.html @@ -0,0 +1,2360 @@ +circuit.rs - source + + + +
   1
+   2
+   3
+   4
+   5
+   6
+   7
+   8
+   9
+  10
+  11
+  12
+  13
+  14
+  15
+  16
+  17
+  18
+  19
+  20
+  21
+  22
+  23
+  24
+  25
+  26
+  27
+  28
+  29
+  30
+  31
+  32
+  33
+  34
+  35
+  36
+  37
+  38
+  39
+  40
+  41
+  42
+  43
+  44
+  45
+  46
+  47
+  48
+  49
+  50
+  51
+  52
+  53
+  54
+  55
+  56
+  57
+  58
+  59
+  60
+  61
+  62
+  63
+  64
+  65
+  66
+  67
+  68
+  69
+  70
+  71
+  72
+  73
+  74
+  75
+  76
+  77
+  78
+  79
+  80
+  81
+  82
+  83
+  84
+  85
+  86
+  87
+  88
+  89
+  90
+  91
+  92
+  93
+  94
+  95
+  96
+  97
+  98
+  99
+ 100
+ 101
+ 102
+ 103
+ 104
+ 105
+ 106
+ 107
+ 108
+ 109
+ 110
+ 111
+ 112
+ 113
+ 114
+ 115
+ 116
+ 117
+ 118
+ 119
+ 120
+ 121
+ 122
+ 123
+ 124
+ 125
+ 126
+ 127
+ 128
+ 129
+ 130
+ 131
+ 132
+ 133
+ 134
+ 135
+ 136
+ 137
+ 138
+ 139
+ 140
+ 141
+ 142
+ 143
+ 144
+ 145
+ 146
+ 147
+ 148
+ 149
+ 150
+ 151
+ 152
+ 153
+ 154
+ 155
+ 156
+ 157
+ 158
+ 159
+ 160
+ 161
+ 162
+ 163
+ 164
+ 165
+ 166
+ 167
+ 168
+ 169
+ 170
+ 171
+ 172
+ 173
+ 174
+ 175
+ 176
+ 177
+ 178
+ 179
+ 180
+ 181
+ 182
+ 183
+ 184
+ 185
+ 186
+ 187
+ 188
+ 189
+ 190
+ 191
+ 192
+ 193
+ 194
+ 195
+ 196
+ 197
+ 198
+ 199
+ 200
+ 201
+ 202
+ 203
+ 204
+ 205
+ 206
+ 207
+ 208
+ 209
+ 210
+ 211
+ 212
+ 213
+ 214
+ 215
+ 216
+ 217
+ 218
+ 219
+ 220
+ 221
+ 222
+ 223
+ 224
+ 225
+ 226
+ 227
+ 228
+ 229
+ 230
+ 231
+ 232
+ 233
+ 234
+ 235
+ 236
+ 237
+ 238
+ 239
+ 240
+ 241
+ 242
+ 243
+ 244
+ 245
+ 246
+ 247
+ 248
+ 249
+ 250
+ 251
+ 252
+ 253
+ 254
+ 255
+ 256
+ 257
+ 258
+ 259
+ 260
+ 261
+ 262
+ 263
+ 264
+ 265
+ 266
+ 267
+ 268
+ 269
+ 270
+ 271
+ 272
+ 273
+ 274
+ 275
+ 276
+ 277
+ 278
+ 279
+ 280
+ 281
+ 282
+ 283
+ 284
+ 285
+ 286
+ 287
+ 288
+ 289
+ 290
+ 291
+ 292
+ 293
+ 294
+ 295
+ 296
+ 297
+ 298
+ 299
+ 300
+ 301
+ 302
+ 303
+ 304
+ 305
+ 306
+ 307
+ 308
+ 309
+ 310
+ 311
+ 312
+ 313
+ 314
+ 315
+ 316
+ 317
+ 318
+ 319
+ 320
+ 321
+ 322
+ 323
+ 324
+ 325
+ 326
+ 327
+ 328
+ 329
+ 330
+ 331
+ 332
+ 333
+ 334
+ 335
+ 336
+ 337
+ 338
+ 339
+ 340
+ 341
+ 342
+ 343
+ 344
+ 345
+ 346
+ 347
+ 348
+ 349
+ 350
+ 351
+ 352
+ 353
+ 354
+ 355
+ 356
+ 357
+ 358
+ 359
+ 360
+ 361
+ 362
+ 363
+ 364
+ 365
+ 366
+ 367
+ 368
+ 369
+ 370
+ 371
+ 372
+ 373
+ 374
+ 375
+ 376
+ 377
+ 378
+ 379
+ 380
+ 381
+ 382
+ 383
+ 384
+ 385
+ 386
+ 387
+ 388
+ 389
+ 390
+ 391
+ 392
+ 393
+ 394
+ 395
+ 396
+ 397
+ 398
+ 399
+ 400
+ 401
+ 402
+ 403
+ 404
+ 405
+ 406
+ 407
+ 408
+ 409
+ 410
+ 411
+ 412
+ 413
+ 414
+ 415
+ 416
+ 417
+ 418
+ 419
+ 420
+ 421
+ 422
+ 423
+ 424
+ 425
+ 426
+ 427
+ 428
+ 429
+ 430
+ 431
+ 432
+ 433
+ 434
+ 435
+ 436
+ 437
+ 438
+ 439
+ 440
+ 441
+ 442
+ 443
+ 444
+ 445
+ 446
+ 447
+ 448
+ 449
+ 450
+ 451
+ 452
+ 453
+ 454
+ 455
+ 456
+ 457
+ 458
+ 459
+ 460
+ 461
+ 462
+ 463
+ 464
+ 465
+ 466
+ 467
+ 468
+ 469
+ 470
+ 471
+ 472
+ 473
+ 474
+ 475
+ 476
+ 477
+ 478
+ 479
+ 480
+ 481
+ 482
+ 483
+ 484
+ 485
+ 486
+ 487
+ 488
+ 489
+ 490
+ 491
+ 492
+ 493
+ 494
+ 495
+ 496
+ 497
+ 498
+ 499
+ 500
+ 501
+ 502
+ 503
+ 504
+ 505
+ 506
+ 507
+ 508
+ 509
+ 510
+ 511
+ 512
+ 513
+ 514
+ 515
+ 516
+ 517
+ 518
+ 519
+ 520
+ 521
+ 522
+ 523
+ 524
+ 525
+ 526
+ 527
+ 528
+ 529
+ 530
+ 531
+ 532
+ 533
+ 534
+ 535
+ 536
+ 537
+ 538
+ 539
+ 540
+ 541
+ 542
+ 543
+ 544
+ 545
+ 546
+ 547
+ 548
+ 549
+ 550
+ 551
+ 552
+ 553
+ 554
+ 555
+ 556
+ 557
+ 558
+ 559
+ 560
+ 561
+ 562
+ 563
+ 564
+ 565
+ 566
+ 567
+ 568
+ 569
+ 570
+ 571
+ 572
+ 573
+ 574
+ 575
+ 576
+ 577
+ 578
+ 579
+ 580
+ 581
+ 582
+ 583
+ 584
+ 585
+ 586
+ 587
+ 588
+ 589
+ 590
+ 591
+ 592
+ 593
+ 594
+ 595
+ 596
+ 597
+ 598
+ 599
+ 600
+ 601
+ 602
+ 603
+ 604
+ 605
+ 606
+ 607
+ 608
+ 609
+ 610
+ 611
+ 612
+ 613
+ 614
+ 615
+ 616
+ 617
+ 618
+ 619
+ 620
+ 621
+ 622
+ 623
+ 624
+ 625
+ 626
+ 627
+ 628
+ 629
+ 630
+ 631
+ 632
+ 633
+ 634
+ 635
+ 636
+ 637
+ 638
+ 639
+ 640
+ 641
+ 642
+ 643
+ 644
+ 645
+ 646
+ 647
+ 648
+ 649
+ 650
+ 651
+ 652
+ 653
+ 654
+ 655
+ 656
+ 657
+ 658
+ 659
+ 660
+ 661
+ 662
+ 663
+ 664
+ 665
+ 666
+ 667
+ 668
+ 669
+ 670
+ 671
+ 672
+ 673
+ 674
+ 675
+ 676
+ 677
+ 678
+ 679
+ 680
+ 681
+ 682
+ 683
+ 684
+ 685
+ 686
+ 687
+ 688
+ 689
+ 690
+ 691
+ 692
+ 693
+ 694
+ 695
+ 696
+ 697
+ 698
+ 699
+ 700
+ 701
+ 702
+ 703
+ 704
+ 705
+ 706
+ 707
+ 708
+ 709
+ 710
+ 711
+ 712
+ 713
+ 714
+ 715
+ 716
+ 717
+ 718
+ 719
+ 720
+ 721
+ 722
+ 723
+ 724
+ 725
+ 726
+ 727
+ 728
+ 729
+ 730
+ 731
+ 732
+ 733
+ 734
+ 735
+ 736
+ 737
+ 738
+ 739
+ 740
+ 741
+ 742
+ 743
+ 744
+ 745
+ 746
+ 747
+ 748
+ 749
+ 750
+ 751
+ 752
+ 753
+ 754
+ 755
+ 756
+ 757
+ 758
+ 759
+ 760
+ 761
+ 762
+ 763
+ 764
+ 765
+ 766
+ 767
+ 768
+ 769
+ 770
+ 771
+ 772
+ 773
+ 774
+ 775
+ 776
+ 777
+ 778
+ 779
+ 780
+ 781
+ 782
+ 783
+ 784
+ 785
+ 786
+ 787
+ 788
+ 789
+ 790
+ 791
+ 792
+ 793
+ 794
+ 795
+ 796
+ 797
+ 798
+ 799
+ 800
+ 801
+ 802
+ 803
+ 804
+ 805
+ 806
+ 807
+ 808
+ 809
+ 810
+ 811
+ 812
+ 813
+ 814
+ 815
+ 816
+ 817
+ 818
+ 819
+ 820
+ 821
+ 822
+ 823
+ 824
+ 825
+ 826
+ 827
+ 828
+ 829
+ 830
+ 831
+ 832
+ 833
+ 834
+ 835
+ 836
+ 837
+ 838
+ 839
+ 840
+ 841
+ 842
+ 843
+ 844
+ 845
+ 846
+ 847
+ 848
+ 849
+ 850
+ 851
+ 852
+ 853
+ 854
+ 855
+ 856
+ 857
+ 858
+ 859
+ 860
+ 861
+ 862
+ 863
+ 864
+ 865
+ 866
+ 867
+ 868
+ 869
+ 870
+ 871
+ 872
+ 873
+ 874
+ 875
+ 876
+ 877
+ 878
+ 879
+ 880
+ 881
+ 882
+ 883
+ 884
+ 885
+ 886
+ 887
+ 888
+ 889
+ 890
+ 891
+ 892
+ 893
+ 894
+ 895
+ 896
+ 897
+ 898
+ 899
+ 900
+ 901
+ 902
+ 903
+ 904
+ 905
+ 906
+ 907
+ 908
+ 909
+ 910
+ 911
+ 912
+ 913
+ 914
+ 915
+ 916
+ 917
+ 918
+ 919
+ 920
+ 921
+ 922
+ 923
+ 924
+ 925
+ 926
+ 927
+ 928
+ 929
+ 930
+ 931
+ 932
+ 933
+ 934
+ 935
+ 936
+ 937
+ 938
+ 939
+ 940
+ 941
+ 942
+ 943
+ 944
+ 945
+ 946
+ 947
+ 948
+ 949
+ 950
+ 951
+ 952
+ 953
+ 954
+ 955
+ 956
+ 957
+ 958
+ 959
+ 960
+ 961
+ 962
+ 963
+ 964
+ 965
+ 966
+ 967
+ 968
+ 969
+ 970
+ 971
+ 972
+ 973
+ 974
+ 975
+ 976
+ 977
+ 978
+ 979
+ 980
+ 981
+ 982
+ 983
+ 984
+ 985
+ 986
+ 987
+ 988
+ 989
+ 990
+ 991
+ 992
+ 993
+ 994
+ 995
+ 996
+ 997
+ 998
+ 999
+1000
+1001
+1002
+1003
+1004
+1005
+1006
+1007
+1008
+1009
+1010
+1011
+1012
+1013
+1014
+1015
+1016
+1017
+1018
+1019
+1020
+1021
+1022
+1023
+1024
+1025
+1026
+1027
+1028
+1029
+1030
+1031
+1032
+1033
+1034
+1035
+1036
+1037
+1038
+1039
+1040
+1041
+1042
+1043
+1044
+1045
+1046
+1047
+1048
+1049
+1050
+1051
+1052
+1053
+1054
+1055
+1056
+1057
+1058
+1059
+1060
+1061
+1062
+1063
+1064
+1065
+1066
+1067
+1068
+1069
+1070
+1071
+1072
+1073
+1074
+1075
+1076
+1077
+1078
+1079
+1080
+1081
+1082
+1083
+1084
+1085
+1086
+1087
+1088
+1089
+1090
+1091
+1092
+1093
+1094
+1095
+1096
+1097
+1098
+1099
+1100
+1101
+1102
+1103
+1104
+1105
+1106
+1107
+1108
+1109
+1110
+1111
+1112
+1113
+1114
+1115
+1116
+1117
+1118
+1119
+1120
+1121
+1122
+1123
+1124
+1125
+1126
+1127
+1128
+1129
+1130
+1131
+1132
+1133
+1134
+1135
+1136
+1137
+1138
+1139
+1140
+1141
+1142
+1143
+1144
+1145
+1146
+1147
+1148
+1149
+1150
+1151
+1152
+1153
+1154
+1155
+1156
+1157
+1158
+1159
+1160
+1161
+1162
+1163
+1164
+1165
+1166
+1167
+1168
+1169
+1170
+
+use core::cmp::max;
+use core::ops::{Add, Mul};
+use ff::Field;
+use std::{
+    convert::TryFrom,
+    ops::{Neg, Sub},
+};
+
+use super::{lookup, permutation, Error};
+use crate::circuit::Layouter;
+use crate::{arithmetic::FieldExt, circuit::Region, poly::Rotation};
+
+/// A column type
+pub trait ColumnType:
+    'static + Sized + Copy + std::fmt::Debug + PartialEq + Eq + Into<Any>
+{
+}
+
+/// A column with an index and type
+#[derive(Clone, Copy, Debug, Eq, PartialEq, Hash)]
+pub struct Column<C: ColumnType> {
+    index: usize,
+    column_type: C,
+}
+
+impl<C: ColumnType> Column<C> {
+    #[cfg(test)]
+    pub(crate) fn new(index: usize, column_type: C) -> Self {
+        Column { index, column_type }
+    }
+
+    pub(crate) fn index(&self) -> usize {
+        self.index
+    }
+
+    pub(crate) fn column_type(&self) -> &C {
+        &self.column_type
+    }
+}
+
+impl<C: ColumnType> Ord for Column<C> {
+    fn cmp(&self, other: &Self) -> std::cmp::Ordering {
+        // This ordering is consensus-critical! The layouters rely on deterministic column
+        // orderings.
+        match (self.column_type.into(), other.column_type.into()) {
+            // Indices are assigned within column types.
+            (Any::Advice, Any::Advice)
+            | (Any::Instance, Any::Instance)
+            | (Any::Fixed, Any::Fixed) => self.index.cmp(&other.index),
+            // Across column types, sort Advice < Instance < Fixed.
+            (Any::Advice, Any::Instance)
+            | (Any::Advice, Any::Fixed)
+            | (Any::Instance, Any::Fixed) => std::cmp::Ordering::Less,
+            (Any::Fixed, Any::Instance)
+            | (Any::Fixed, Any::Advice)
+            | (Any::Instance, Any::Advice) => std::cmp::Ordering::Greater,
+        }
+    }
+}
+
+impl<C: ColumnType> PartialOrd for Column<C> {
+    fn partial_cmp(&self, other: &Self) -> Option<std::cmp::Ordering> {
+        Some(self.cmp(other))
+    }
+}
+
+/// An advice column
+#[derive(Clone, Copy, Debug, Eq, PartialEq, Hash)]
+pub struct Advice;
+
+/// A fixed column
+#[derive(Clone, Copy, Debug, Eq, PartialEq, Hash)]
+pub struct Fixed;
+
+/// An instance column
+#[derive(Clone, Copy, Debug, Eq, PartialEq, Hash)]
+pub struct Instance;
+
+/// An enum over the Advice, Fixed, Instance structs
+#[derive(Clone, Copy, Debug, Eq, PartialEq, Hash)]
+pub enum Any {
+    /// An Advice variant
+    Advice,
+    /// A Fixed variant
+    Fixed,
+    /// An Instance variant
+    Instance,
+}
+
+impl ColumnType for Advice {}
+impl ColumnType for Fixed {}
+impl ColumnType for Instance {}
+impl ColumnType for Any {}
+
+impl From<Advice> for Any {
+    fn from(_: Advice) -> Any {
+        Any::Advice
+    }
+}
+
+impl From<Fixed> for Any {
+    fn from(_: Fixed) -> Any {
+        Any::Fixed
+    }
+}
+
+impl From<Instance> for Any {
+    fn from(_: Instance) -> Any {
+        Any::Instance
+    }
+}
+
+impl From<Column<Advice>> for Column<Any> {
+    fn from(advice: Column<Advice>) -> Column<Any> {
+        Column {
+            index: advice.index(),
+            column_type: Any::Advice,
+        }
+    }
+}
+
+impl From<Column<Fixed>> for Column<Any> {
+    fn from(advice: Column<Fixed>) -> Column<Any> {
+        Column {
+            index: advice.index(),
+            column_type: Any::Fixed,
+        }
+    }
+}
+
+impl From<Column<Instance>> for Column<Any> {
+    fn from(advice: Column<Instance>) -> Column<Any> {
+        Column {
+            index: advice.index(),
+            column_type: Any::Instance,
+        }
+    }
+}
+
+impl TryFrom<Column<Any>> for Column<Advice> {
+    type Error = &'static str;
+
+    fn try_from(any: Column<Any>) -> Result<Self, Self::Error> {
+        match any.column_type() {
+            Any::Advice => Ok(Column {
+                index: any.index(),
+                column_type: Advice,
+            }),
+            _ => Err("Cannot convert into Column<Advice>"),
+        }
+    }
+}
+
+impl TryFrom<Column<Any>> for Column<Fixed> {
+    type Error = &'static str;
+
+    fn try_from(any: Column<Any>) -> Result<Self, Self::Error> {
+        match any.column_type() {
+            Any::Fixed => Ok(Column {
+                index: any.index(),
+                column_type: Fixed,
+            }),
+            _ => Err("Cannot convert into Column<Fixed>"),
+        }
+    }
+}
+
+impl TryFrom<Column<Any>> for Column<Instance> {
+    type Error = &'static str;
+
+    fn try_from(any: Column<Any>) -> Result<Self, Self::Error> {
+        match any.column_type() {
+            Any::Instance => Ok(Column {
+                index: any.index(),
+                column_type: Instance,
+            }),
+            _ => Err("Cannot convert into Column<Instance>"),
+        }
+    }
+}
+
+/// A selector, representing a fixed boolean value per row of the circuit.
+///
+/// Selectors can be used to conditionally enable (portions of) gates:
+/// ```
+/// use halo2::poly::Rotation;
+/// # use halo2::pasta::Fp;
+/// # use halo2::plonk::ConstraintSystem;
+///
+/// # let mut meta = ConstraintSystem::<Fp>::default();
+/// let a = meta.advice_column();
+/// let b = meta.advice_column();
+/// let s = meta.selector();
+///
+/// meta.create_gate("foo", |meta| {
+///     let a = meta.query_advice(a, Rotation::prev());
+///     let b = meta.query_advice(b, Rotation::cur());
+///     let s = meta.query_selector(s);
+///
+///     // On rows where the selector is enabled, a is constrained to equal b.
+///     // On rows where the selector is disabled, a and b can take any value.
+///     vec![s * (a - b)]
+/// });
+/// ```
+///
+/// Selectors are disabled on all rows by default, and must be explicitly enabled on each
+/// row when required:
+/// ```
+/// use halo2::{arithmetic::FieldExt, circuit::{Chip, Layouter}, plonk::{Advice, Column, Error, Selector}};
+/// # use ff::Field;
+/// # use halo2::plonk::Fixed;
+///
+/// struct Config {
+///     a: Column<Advice>,
+///     b: Column<Advice>,
+///     s: Selector,
+/// }
+///
+/// fn circuit_logic<F: FieldExt, C: Chip<F>>(chip: C, mut layouter: impl Layouter<F>) -> Result<(), Error> {
+///     let config = chip.config();
+///     # let config: Config = todo!();
+///     layouter.assign_region(|| "bar", |mut region| {
+///         region.assign_advice(|| "a", config.a, 0, || Ok(F::one()))?;
+///         region.assign_advice(|| "a", config.b, 1, || Ok(F::one()))?;
+///         config.s.enable(&mut region, 1)
+///     })?;
+///     Ok(())
+/// }
+/// ```
+#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
+pub struct Selector(pub(crate) Column<Fixed>);
+
+impl Selector {
+    /// Enable this selector at the given offset within the given region.
+    pub fn enable<F: FieldExt>(&self, region: &mut Region<F>, offset: usize) -> Result<(), Error> {
+        region.enable_selector(|| "", self, offset)
+    }
+}
+
+/// A permutation.
+#[derive(Clone, Debug, PartialEq, Eq)]
+pub struct Permutation {
+    /// The index of this permutation.
+    index: usize,
+    /// The mapping between columns involved in this permutation.
+    mapping: Vec<Column<Any>>,
+}
+
+impl Permutation {
+    /// Configures a new permutation for the given columns.
+    pub fn new<F: FieldExt>(meta: &mut ConstraintSystem<F>, columns: &[Column<Any>]) -> Self {
+        meta.permutation(columns)
+    }
+
+    /// Returns index of permutation
+    pub fn index(&self) -> usize {
+        self.index
+    }
+
+    /// Returns mapping of permutation
+    pub fn mapping(&self) -> &[Column<Any>] {
+        &self.mapping
+    }
+}
+
+/// A value assigned to a cell within a circuit.
+///
+/// Stored as a fraction, so the backend can use batch inversion.
+///
+/// A denominator of zero maps to an assigned value of zero.
+#[derive(Clone, Copy, Debug)]
+pub enum Assigned<F> {
+    /// The field element zero.
+    Zero,
+    /// A value that does not require inversion to evaluate.
+    Trivial(F),
+    /// A value stored as a fraction to enable batch inversion.
+    Rational(F, F),
+}
+
+impl<F: Field> From<F> for Assigned<F> {
+    fn from(numerator: F) -> Self {
+        Assigned::Trivial(numerator)
+    }
+}
+
+impl<F: Field> From<(F, F)> for Assigned<F> {
+    fn from((numerator, denominator): (F, F)) -> Self {
+        Assigned::Rational(numerator, denominator)
+    }
+}
+
+impl<F: Field> Neg for Assigned<F> {
+    type Output = Assigned<F>;
+    fn neg(self) -> Self::Output {
+        match self {
+            Self::Zero => Self::Zero,
+            Self::Trivial(numerator) => Self::Trivial(-numerator),
+            Self::Rational(numerator, denominator) => Self::Rational(-numerator, denominator),
+        }
+    }
+}
+
+impl<F: Field> Add for Assigned<F> {
+    type Output = Assigned<F>;
+    fn add(self, rhs: Assigned<F>) -> Assigned<F> {
+        match (self, rhs) {
+            (Self::Zero, _) => rhs,
+            (_, Self::Zero) => self,
+            (Self::Trivial(lhs), Self::Trivial(rhs)) => Self::Trivial(lhs + rhs),
+            (Self::Rational(numerator, denominator), Self::Trivial(other))
+            | (Self::Trivial(other), Self::Rational(numerator, denominator)) => {
+                Self::Rational(numerator + denominator * other, denominator)
+            }
+            (
+                Self::Rational(lhs_numerator, lhs_denominator),
+                Self::Rational(rhs_numerator, rhs_denominator),
+            ) => Self::Rational(
+                lhs_numerator * rhs_denominator + lhs_denominator * rhs_numerator,
+                lhs_denominator * rhs_denominator,
+            ),
+        }
+    }
+}
+
+impl<F: Field> Add<F> for Assigned<F> {
+    type Output = Assigned<F>;
+    fn add(self, rhs: F) -> Assigned<F> {
+        self + Self::Trivial(rhs)
+    }
+}
+
+impl<F: Field> Sub for Assigned<F> {
+    type Output = Assigned<F>;
+    fn sub(self, rhs: Assigned<F>) -> Assigned<F> {
+        self + (-rhs)
+    }
+}
+
+impl<F: Field> Sub<F> for Assigned<F> {
+    type Output = Assigned<F>;
+    fn sub(self, rhs: F) -> Assigned<F> {
+        self + (-rhs)
+    }
+}
+
+impl<F: Field> Mul for Assigned<F> {
+    type Output = Assigned<F>;
+    fn mul(self, rhs: Assigned<F>) -> Assigned<F> {
+        match (self, rhs) {
+            (Self::Zero, _) | (_, Self::Zero) => Self::Zero,
+            (Self::Trivial(lhs), Self::Trivial(rhs)) => Self::Trivial(lhs * rhs),
+            (Self::Rational(numerator, denominator), Self::Trivial(other))
+            | (Self::Trivial(other), Self::Rational(numerator, denominator)) => {
+                Self::Rational(numerator * other, denominator)
+            }
+            (
+                Self::Rational(lhs_numerator, lhs_denominator),
+                Self::Rational(rhs_numerator, rhs_denominator),
+            ) => Self::Rational(
+                lhs_numerator * rhs_numerator,
+                lhs_denominator * rhs_denominator,
+            ),
+        }
+    }
+}
+
+impl<F: Field> Mul<F> for Assigned<F> {
+    type Output = Assigned<F>;
+    fn mul(self, rhs: F) -> Assigned<F> {
+        self * Self::Trivial(rhs)
+    }
+}
+
+impl<F: Field> Assigned<F> {
+    /// Returns the numerator.
+    pub fn numerator(&self) -> F {
+        match self {
+            Self::Zero => F::zero(),
+            Self::Trivial(x) => *x,
+            Self::Rational(numerator, _) => *numerator,
+        }
+    }
+
+    /// Returns the denominator, if non-trivial.
+    pub fn denominator(&self) -> Option<F> {
+        match self {
+            Self::Zero => None,
+            Self::Trivial(_) => None,
+            Self::Rational(_, denominator) => Some(*denominator),
+        }
+    }
+
+    /// Inverts this assigned value.
+    pub fn invert(&self) -> Self {
+        match self {
+            Self::Zero => Self::Zero,
+            Self::Trivial(x) => Self::Rational(F::one(), *x),
+            Self::Rational(numerator, denominator) => Self::Rational(*denominator, *numerator),
+        }
+    }
+
+    /// Evaluates this assigned value directly, performing an unbatched inversion if
+    /// necessary.
+    ///
+    /// If the denominator is zero, this returns zero.
+    pub fn evaluate(self) -> F {
+        match self {
+            Self::Zero => F::zero(),
+            Self::Trivial(x) => x,
+            Self::Rational(numerator, denominator) => {
+                if denominator == F::one() {
+                    numerator
+                } else {
+                    numerator * denominator.invert().unwrap_or(F::zero())
+                }
+            }
+        }
+    }
+}
+
+/// This trait allows a [`Circuit`] to direct some backend to assign a witness
+/// for a constraint system.
+pub trait Assignment<F: Field> {
+    /// Creates a new region and enters into it.
+    ///
+    /// Panics if we are currently in a region (if `exit_region` was not called).
+    ///
+    /// Not intended for downstream consumption; use [`Layouter::assign_region`] instead.
+    ///
+    /// [`Layouter::assign_region`]: crate::circuit::Layouter#method.assign_region
+    fn enter_region<NR, N>(&mut self, name_fn: N)
+    where
+        NR: Into<String>,
+        N: FnOnce() -> NR;
+
+    /// Exits the current region.
+    ///
+    /// Panics if we are not currently in a region (if `enter_region` was not called).
+    ///
+    /// Not intended for downstream consumption; use [`Layouter::assign_region`] instead.
+    ///
+    /// [`Layouter::assign_region`]: crate::circuit::Layouter#method.assign_region
+    fn exit_region(&mut self);
+
+    /// Enables a selector at the given row.
+    fn enable_selector<A, AR>(
+        &mut self,
+        annotation: A,
+        selector: &Selector,
+        row: usize,
+    ) -> Result<(), Error>
+    where
+        A: FnOnce() -> AR,
+        AR: Into<String>;
+
+    /// Assign an advice column value (witness)
+    fn assign_advice<V, VR, A, AR>(
+        &mut self,
+        annotation: A,
+        column: Column<Advice>,
+        row: usize,
+        to: V,
+    ) -> Result<(), Error>
+    where
+        V: FnOnce() -> Result<VR, Error>,
+        VR: Into<Assigned<F>>,
+        A: FnOnce() -> AR,
+        AR: Into<String>;
+
+    /// Assign a fixed value
+    fn assign_fixed<V, VR, A, AR>(
+        &mut self,
+        annotation: A,
+        column: Column<Fixed>,
+        row: usize,
+        to: V,
+    ) -> Result<(), Error>
+    where
+        V: FnOnce() -> Result<VR, Error>,
+        VR: Into<Assigned<F>>,
+        A: FnOnce() -> AR,
+        AR: Into<String>;
+
+    /// Assign two cells to have the same value
+    fn copy(
+        &mut self,
+        permutation: &Permutation,
+        left_column: Column<Any>,
+        left_row: usize,
+        right_column: Column<Any>,
+        right_row: usize,
+    ) -> Result<(), Error>;
+
+    /// Creates a new (sub)namespace and enters into it.
+    ///
+    /// Not intended for downstream consumption; use [`Layouter::namespace`] instead.
+    ///
+    /// [`Layouter::namespace`]: crate::circuit::Layouter#method.namespace
+    fn push_namespace<NR, N>(&mut self, name_fn: N)
+    where
+        NR: Into<String>,
+        N: FnOnce() -> NR;
+
+    /// Exits out of the existing namespace.
+    ///
+    /// Not intended for downstream consumption; use [`Layouter::namespace`] instead.
+    ///
+    /// [`Layouter::namespace`]: crate::circuit::Layouter#method.namespace
+    fn pop_namespace(&mut self, gadget_name: Option<String>);
+}
+
+/// A floor planning strategy for a circuit.
+///
+/// The floor planner is chip-agnostic and applies its strategy to the circuit it is used
+/// within.
+pub trait FloorPlanner {
+    /// Given the provided `cs`, synthesize the given circuit.
+    ///
+    /// Internally, a floor planner will perform the following operations:
+    /// - Instantiate a [`Layouter`] for this floor planner.
+    /// - Perform any necessary setup or measurement tasks, which may involve one or more
+    ///   calls to `Circuit::default().synthesize(config, &mut layouter)`.
+    /// - Call `circuit.synthesize(config, &mut layouter)` exactly once.
+    fn synthesize<F: Field, CS: Assignment<F>, C: Circuit<F>>(
+        cs: &mut CS,
+        circuit: &C,
+        config: C::Config,
+    ) -> Result<(), Error>;
+}
+
+/// This is a trait that circuits provide implementations for so that the
+/// backend prover can ask the circuit to synthesize using some given
+/// [`ConstraintSystem`] implementation.
+pub trait Circuit<F: Field> {
+    /// This is a configuration object that stores things like columns.
+    type Config: Clone;
+    /// The floor planner used for this circuit. This is an associated type of the
+    /// `Circuit` trait because its behaviour is circuit-critical.
+    type FloorPlanner: FloorPlanner;
+
+    /// Returns a copy of this circuit with no witness values (i.e. all witnesses set to
+    /// `None`). For most circuits, this will be equal to `Self::default()`.
+    fn without_witnesses(&self) -> Self;
+
+    /// The circuit is given an opportunity to describe the exact gate
+    /// arrangement, column arrangement, etc.
+    fn configure(meta: &mut ConstraintSystem<F>) -> Self::Config;
+
+    /// Given the provided `cs`, synthesize the circuit. The concrete type of
+    /// the caller will be different depending on the context, and they may or
+    /// may not expect to have a witness present.
+    fn synthesize(&self, config: Self::Config, layouter: impl Layouter<F>) -> Result<(), Error>;
+}
+
+/// Low-degree expression representing an identity that must hold over the committed columns.
+#[derive(Clone, Debug)]
+pub enum Expression<F> {
+    /// This is a constant polynomial
+    Constant(F),
+    /// This is a fixed column queried at a certain relative location
+    Fixed(usize),
+    /// This is an advice (witness) column queried at a certain relative location
+    Advice(usize),
+    /// This is an instance (external) column queried at a certain relative location
+    Instance(usize),
+    /// This is the sum of two polynomials
+    Sum(Box<Expression<F>>, Box<Expression<F>>),
+    /// This is the product of two polynomials
+    Product(Box<Expression<F>>, Box<Expression<F>>),
+    /// This is a scaled polynomial
+    Scaled(Box<Expression<F>>, F),
+}
+
+impl<F: Field> Expression<F> {
+    /// Evaluate the polynomial using the provided closures to perform the
+    /// operations.
+    pub fn evaluate<T>(
+        &self,
+        constant: &impl Fn(F) -> T,
+        fixed_column: &impl Fn(usize) -> T,
+        advice_column: &impl Fn(usize) -> T,
+        instance_column: &impl Fn(usize) -> T,
+        sum: &impl Fn(T, T) -> T,
+        product: &impl Fn(T, T) -> T,
+        scaled: &impl Fn(T, F) -> T,
+    ) -> T {
+        match self {
+            Expression::Constant(scalar) => constant(*scalar),
+            Expression::Fixed(index) => fixed_column(*index),
+            Expression::Advice(index) => advice_column(*index),
+            Expression::Instance(index) => instance_column(*index),
+            Expression::Sum(a, b) => {
+                let a = a.evaluate(
+                    constant,
+                    fixed_column,
+                    advice_column,
+                    instance_column,
+                    sum,
+                    product,
+                    scaled,
+                );
+                let b = b.evaluate(
+                    constant,
+                    fixed_column,
+                    advice_column,
+                    instance_column,
+                    sum,
+                    product,
+                    scaled,
+                );
+                sum(a, b)
+            }
+            Expression::Product(a, b) => {
+                let a = a.evaluate(
+                    constant,
+                    fixed_column,
+                    advice_column,
+                    instance_column,
+                    sum,
+                    product,
+                    scaled,
+                );
+                let b = b.evaluate(
+                    constant,
+                    fixed_column,
+                    advice_column,
+                    instance_column,
+                    sum,
+                    product,
+                    scaled,
+                );
+                product(a, b)
+            }
+            Expression::Scaled(a, f) => {
+                let a = a.evaluate(
+                    constant,
+                    fixed_column,
+                    advice_column,
+                    instance_column,
+                    sum,
+                    product,
+                    scaled,
+                );
+                scaled(a, *f)
+            }
+        }
+    }
+
+    /// Compute the degree of this polynomial
+    pub fn degree(&self) -> usize {
+        match self {
+            Expression::Constant(_) => 0,
+            Expression::Fixed(_) => 1,
+            Expression::Advice(_) => 1,
+            Expression::Instance(_) => 1,
+            Expression::Sum(a, b) => max(a.degree(), b.degree()),
+            Expression::Product(a, b) => a.degree() + b.degree(),
+            Expression::Scaled(poly, _) => poly.degree(),
+        }
+    }
+
+    /// Square this expression.
+    pub fn square(self) -> Self {
+        self.clone() * self
+    }
+}
+
+impl<F: Field> Neg for Expression<F> {
+    type Output = Expression<F>;
+    fn neg(self) -> Self::Output {
+        Expression::Scaled(Box::new(self), -F::one())
+    }
+}
+
+impl<F> Add for Expression<F> {
+    type Output = Expression<F>;
+    fn add(self, rhs: Expression<F>) -> Expression<F> {
+        Expression::Sum(Box::new(self), Box::new(rhs))
+    }
+}
+
+impl<F: Field> Sub for Expression<F> {
+    type Output = Expression<F>;
+    fn sub(self, rhs: Expression<F>) -> Expression<F> {
+        Expression::Sum(Box::new(self), Box::new(-rhs))
+    }
+}
+
+impl<F> Mul for Expression<F> {
+    type Output = Expression<F>;
+    fn mul(self, rhs: Expression<F>) -> Expression<F> {
+        Expression::Product(Box::new(self), Box::new(rhs))
+    }
+}
+
+impl<F> Mul<F> for Expression<F> {
+    type Output = Expression<F>;
+    fn mul(self, rhs: F) -> Expression<F> {
+        Expression::Scaled(Box::new(self), rhs)
+    }
+}
+
+/// Represents an index into a vector where each entry corresponds to a distinct
+/// point that polynomials are queried at.
+#[derive(Copy, Clone, Debug)]
+pub(crate) struct PointIndex(pub usize);
+
+/// A "virtual cell" is a PLONK cell that has been queried at a particular relative offset
+/// within a custom gate.
+#[derive(Clone, Debug)]
+pub(crate) struct VirtualCell {
+    pub(crate) column: Column<Any>,
+    pub(crate) rotation: Rotation,
+}
+
+impl<Col: Into<Column<Any>>> From<(Col, Rotation)> for VirtualCell {
+    fn from((column, rotation): (Col, Rotation)) -> Self {
+        VirtualCell {
+            column: column.into(),
+            rotation,
+        }
+    }
+}
+
+/// An individual polynomial constraint.
+///
+/// These are returned by the closures passed to `ConstraintSystem::create_gate`.
+#[derive(Debug)]
+pub struct Constraint<F: Field> {
+    name: &'static str,
+    poly: Expression<F>,
+}
+
+impl<F: Field> From<Expression<F>> for Constraint<F> {
+    fn from(poly: Expression<F>) -> Self {
+        Constraint { name: "", poly }
+    }
+}
+
+impl<F: Field> From<(&'static str, Expression<F>)> for Constraint<F> {
+    fn from((name, poly): (&'static str, Expression<F>)) -> Self {
+        Constraint { name, poly }
+    }
+}
+
+impl<F: Field> From<Expression<F>> for Vec<Constraint<F>> {
+    fn from(poly: Expression<F>) -> Self {
+        vec![Constraint { name: "", poly }]
+    }
+}
+
+#[derive(Clone, Debug)]
+pub(crate) struct Gate<F: Field> {
+    name: &'static str,
+    constraint_names: Vec<&'static str>,
+    polys: Vec<Expression<F>>,
+    /// We track queried selectors separately from other cells, so that we can use them to
+    /// trigger debug checks on gates.
+    queried_selectors: Vec<Selector>,
+    queried_cells: Vec<VirtualCell>,
+}
+
+impl<F: Field> Gate<F> {
+    pub(crate) fn name(&self) -> &'static str {
+        self.name
+    }
+
+    pub(crate) fn constraint_name(&self, constraint_index: usize) -> &'static str {
+        self.constraint_names[constraint_index]
+    }
+
+    pub(crate) fn polynomials(&self) -> &[Expression<F>] {
+        &self.polys
+    }
+
+    pub(crate) fn queried_selectors(&self) -> &[Selector] {
+        &self.queried_selectors
+    }
+
+    pub(crate) fn queried_cells(&self) -> &[VirtualCell] {
+        &self.queried_cells
+    }
+}
+
+/// This is a description of the circuit environment, such as the gate, column and
+/// permutation arrangements.
+#[derive(Debug, Clone)]
+pub struct ConstraintSystem<F: Field> {
+    pub(crate) num_fixed_columns: usize,
+    pub(crate) num_advice_columns: usize,
+    pub(crate) num_instance_columns: usize,
+    pub(crate) gates: Vec<Gate<F>>,
+    pub(crate) advice_queries: Vec<(Column<Advice>, Rotation)>,
+    pub(crate) instance_queries: Vec<(Column<Instance>, Rotation)>,
+    pub(crate) fixed_queries: Vec<(Column<Fixed>, Rotation)>,
+
+    // Vector of permutation arguments, where each corresponds to a sequence of columns
+    // that are involved in a permutation argument.
+    pub(crate) permutations: Vec<permutation::Argument>,
+
+    // Vector of lookup arguments, where each corresponds to a sequence of
+    // input expressions and a sequence of table expressions involved in the lookup.
+    pub(crate) lookups: Vec<lookup::Argument<F>>,
+}
+
+/// Represents the minimal parameters that determine a `ConstraintSystem`.
+#[derive(Debug)]
+pub struct PinnedConstraintSystem<'a, F: Field> {
+    num_fixed_columns: &'a usize,
+    num_advice_columns: &'a usize,
+    num_instance_columns: &'a usize,
+    gates: PinnedGates<'a, F>,
+    advice_queries: &'a Vec<(Column<Advice>, Rotation)>,
+    instance_queries: &'a Vec<(Column<Instance>, Rotation)>,
+    fixed_queries: &'a Vec<(Column<Fixed>, Rotation)>,
+    permutations: &'a Vec<permutation::Argument>,
+    lookups: &'a Vec<lookup::Argument<F>>,
+}
+
+struct PinnedGates<'a, F: Field>(&'a Vec<Gate<F>>);
+
+impl<'a, F: Field> std::fmt::Debug for PinnedGates<'a, F> {
+    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> Result<(), std::fmt::Error> {
+        f.debug_list()
+            .entries(self.0.iter().flat_map(|gate| gate.polynomials().iter()))
+            .finish()
+    }
+}
+
+impl<F: Field> Default for ConstraintSystem<F> {
+    fn default() -> ConstraintSystem<F> {
+        ConstraintSystem {
+            num_fixed_columns: 0,
+            num_advice_columns: 0,
+            num_instance_columns: 0,
+            gates: vec![],
+            fixed_queries: Vec::new(),
+            advice_queries: Vec::new(),
+            instance_queries: Vec::new(),
+            permutations: Vec::new(),
+            lookups: Vec::new(),
+        }
+    }
+}
+
+impl<F: Field> ConstraintSystem<F> {
+    /// Obtain a pinned version of this constraint system; a structure with the
+    /// minimal parameters needed to determine the rest of the constraint
+    /// system.
+    pub fn pinned(&self) -> PinnedConstraintSystem<'_, F> {
+        PinnedConstraintSystem {
+            num_fixed_columns: &self.num_fixed_columns,
+            num_advice_columns: &self.num_advice_columns,
+            num_instance_columns: &self.num_instance_columns,
+            gates: PinnedGates(&self.gates),
+            fixed_queries: &self.fixed_queries,
+            advice_queries: &self.advice_queries,
+            instance_queries: &self.instance_queries,
+            permutations: &self.permutations,
+            lookups: &self.lookups,
+        }
+    }
+
+    /// Add a permutation argument for some columns
+    pub fn permutation(&mut self, columns: &[Column<Any>]) -> Permutation {
+        let index = self.permutations.len();
+
+        for column in columns {
+            self.query_any_index(*column, Rotation::cur());
+        }
+        self.permutations
+            .push(permutation::Argument::new(columns.to_vec()));
+
+        Permutation {
+            index,
+            mapping: columns.to_vec(),
+        }
+    }
+
+    /// Add a lookup argument for some input expressions and table expressions.
+    ///
+    /// `table_map` returns a map between input expressions and the table expressions
+    /// they need to match.
+    pub fn lookup(
+        &mut self,
+        table_map: impl FnOnce(&mut VirtualCells<'_, F>) -> Vec<(Expression<F>, Expression<F>)>,
+    ) -> usize {
+        let mut cells = VirtualCells::new(self);
+        let table_map = table_map(&mut cells);
+
+        let index = self.lookups.len();
+
+        self.lookups.push(lookup::Argument::new(table_map));
+
+        index
+    }
+
+    fn query_fixed_index(&mut self, column: Column<Fixed>, at: Rotation) -> usize {
+        // Return existing query, if it exists
+        for (index, fixed_query) in self.fixed_queries.iter().enumerate() {
+            if fixed_query == &(column, at) {
+                return index;
+            }
+        }
+
+        // Make a new query
+        let index = self.fixed_queries.len();
+        self.fixed_queries.push((column, at));
+
+        index
+    }
+
+    pub(crate) fn query_advice_index(&mut self, column: Column<Advice>, at: Rotation) -> usize {
+        // Return existing query, if it exists
+        for (index, advice_query) in self.advice_queries.iter().enumerate() {
+            if advice_query == &(column, at) {
+                return index;
+            }
+        }
+
+        // Make a new query
+        let index = self.advice_queries.len();
+        self.advice_queries.push((column, at));
+
+        index
+    }
+
+    fn query_instance_index(&mut self, column: Column<Instance>, at: Rotation) -> usize {
+        // Return existing query, if it exists
+        for (index, instance_query) in self.instance_queries.iter().enumerate() {
+            if instance_query == &(column, at) {
+                return index;
+            }
+        }
+
+        // Make a new query
+        let index = self.instance_queries.len();
+        self.instance_queries.push((column, at));
+
+        index
+    }
+
+    fn query_any_index(&mut self, column: Column<Any>, at: Rotation) -> usize {
+        match column.column_type() {
+            Any::Advice => self.query_advice_index(Column::<Advice>::try_from(column).unwrap(), at),
+            Any::Fixed => self.query_fixed_index(Column::<Fixed>::try_from(column).unwrap(), at),
+            Any::Instance => {
+                self.query_instance_index(Column::<Instance>::try_from(column).unwrap(), at)
+            }
+        }
+    }
+
+    pub(crate) fn get_advice_query_index(&self, column: Column<Advice>, at: Rotation) -> usize {
+        for (index, advice_query) in self.advice_queries.iter().enumerate() {
+            if advice_query == &(column, at) {
+                return index;
+            }
+        }
+
+        panic!("get_advice_query_index called for non-existent query");
+    }
+
+    pub(crate) fn get_fixed_query_index(&self, column: Column<Fixed>, at: Rotation) -> usize {
+        for (index, fixed_query) in self.fixed_queries.iter().enumerate() {
+            if fixed_query == &(column, at) {
+                return index;
+            }
+        }
+
+        panic!("get_fixed_query_index called for non-existent query");
+    }
+
+    pub(crate) fn get_instance_query_index(&self, column: Column<Instance>, at: Rotation) -> usize {
+        for (index, instance_query) in self.instance_queries.iter().enumerate() {
+            if instance_query == &(column, at) {
+                return index;
+            }
+        }
+
+        panic!("get_instance_query_index called for non-existent query");
+    }
+
+    pub(crate) fn get_any_query_index(&self, column: Column<Any>, at: Rotation) -> usize {
+        match column.column_type() {
+            Any::Advice => {
+                self.get_advice_query_index(Column::<Advice>::try_from(column).unwrap(), at)
+            }
+            Any::Fixed => {
+                self.get_fixed_query_index(Column::<Fixed>::try_from(column).unwrap(), at)
+            }
+            Any::Instance => {
+                self.get_instance_query_index(Column::<Instance>::try_from(column).unwrap(), at)
+            }
+        }
+    }
+
+    /// Creates a new gate.
+    ///
+    /// # Panics
+    ///
+    /// A gate is required to contain polynomial constraints. This method will panic if
+    /// `constraints` returns an empty iterator.
+    pub fn create_gate<C: Into<Constraint<F>>, Iter: IntoIterator<Item = C>>(
+        &mut self,
+        name: &'static str,
+        constraints: impl FnOnce(&mut VirtualCells<'_, F>) -> Iter,
+    ) {
+        let mut cells = VirtualCells::new(self);
+        let constraints = constraints(&mut cells);
+        let queried_selectors = cells.queried_selectors;
+        let queried_cells = cells.queried_cells;
+
+        let (constraint_names, polys): (_, Vec<_>) = constraints
+            .into_iter()
+            .map(|c| c.into())
+            .map(|c| (c.name, c.poly))
+            .unzip();
+
+        assert!(
+            !polys.is_empty(),
+            "Gates must contain at least one constraint."
+        );
+
+        self.gates.push(Gate {
+            name,
+            constraint_names,
+            polys,
+            queried_selectors,
+            queried_cells,
+        });
+    }
+
+    /// Allocate a new selector.
+    pub fn selector(&mut self) -> Selector {
+        // TODO: Track selectors separately, and combine selectors where possible.
+        // https://github.com/zcash/halo2/issues/116
+        Selector(self.fixed_column())
+    }
+
+    /// Allocate a new fixed column
+    pub fn fixed_column(&mut self) -> Column<Fixed> {
+        let tmp = Column {
+            index: self.num_fixed_columns,
+            column_type: Fixed,
+        };
+        self.num_fixed_columns += 1;
+        tmp
+    }
+
+    /// Allocate a new advice column
+    pub fn advice_column(&mut self) -> Column<Advice> {
+        let tmp = Column {
+            index: self.num_advice_columns,
+            column_type: Advice,
+        };
+        self.num_advice_columns += 1;
+        tmp
+    }
+
+    /// Allocate a new instance column
+    pub fn instance_column(&mut self) -> Column<Instance> {
+        let tmp = Column {
+            index: self.num_instance_columns,
+            column_type: Instance,
+        };
+        self.num_instance_columns += 1;
+        tmp
+    }
+
+    /// Compute the degree of the constraint system (the maximum degree of all
+    /// constraints).
+    pub fn degree(&self) -> usize {
+        // The permutation argument will serve alongside the gates, so must be
+        // accounted for.
+        let mut degree = self
+            .permutations
+            .iter()
+            .map(|p| p.required_degree())
+            .max()
+            .unwrap_or(1);
+
+        // The lookup argument also serves alongside the gates and must be accounted
+        // for.
+        degree = std::cmp::max(
+            degree,
+            self.lookups
+                .iter()
+                .map(|l| l.required_degree())
+                .max()
+                .unwrap_or(1),
+        );
+
+        // Account for each gate to ensure our quotient polynomial is the
+        // correct degree and that our extended domain is the right size.
+        degree = std::cmp::max(
+            degree,
+            self.gates
+                .iter()
+                .flat_map(|gate| gate.polynomials().iter().map(|poly| poly.degree()))
+                .max()
+                .unwrap_or(0),
+        );
+
+        degree
+    }
+}
+
+/// Exposes the "virtual cells" that can be queried while creating a custom gate or lookup
+/// table.
+#[derive(Debug)]
+pub struct VirtualCells<'a, F: Field> {
+    meta: &'a mut ConstraintSystem<F>,
+    queried_selectors: Vec<Selector>,
+    queried_cells: Vec<VirtualCell>,
+}
+
+impl<'a, F: Field> VirtualCells<'a, F> {
+    fn new(meta: &'a mut ConstraintSystem<F>) -> Self {
+        VirtualCells {
+            meta,
+            queried_selectors: vec![],
+            queried_cells: vec![],
+        }
+    }
+
+    /// Query a selector at the current position.
+    pub fn query_selector(&mut self, selector: Selector) -> Expression<F> {
+        // Selectors are always queried at the current row.
+        self.queried_selectors.push(selector);
+        Expression::Fixed(self.meta.query_fixed_index(selector.0, Rotation::cur()))
+    }
+
+    /// Query a fixed column at a relative position
+    pub fn query_fixed(&mut self, column: Column<Fixed>, at: Rotation) -> Expression<F> {
+        self.queried_cells.push((column, at).into());
+        Expression::Fixed(self.meta.query_fixed_index(column, at))
+    }
+
+    /// Query an advice column at a relative position
+    pub fn query_advice(&mut self, column: Column<Advice>, at: Rotation) -> Expression<F> {
+        self.queried_cells.push((column, at).into());
+        Expression::Advice(self.meta.query_advice_index(column, at))
+    }
+
+    /// Query an instance column at a relative position
+    pub fn query_instance(&mut self, column: Column<Instance>, at: Rotation) -> Expression<F> {
+        self.queried_cells.push((column, at).into());
+        Expression::Instance(self.meta.query_instance_index(column, at))
+    }
+
+    /// Query an Any column at a relative position
+    pub fn query_any(&mut self, column: Column<Any>, at: Rotation) -> Expression<F> {
+        self.queried_cells.push((column, at).into());
+        match column.column_type() {
+            Any::Advice => Expression::Advice(
+                self.meta
+                    .query_advice_index(Column::<Advice>::try_from(column).unwrap(), at),
+            ),
+            Any::Fixed => Expression::Fixed(
+                self.meta
+                    .query_fixed_index(Column::<Fixed>::try_from(column).unwrap(), at),
+            ),
+            Any::Instance => Expression::Instance(
+                self.meta
+                    .query_instance_index(Column::<Instance>::try_from(column).unwrap(), at),
+            ),
+        }
+    }
+}
+
+
+ + \ No newline at end of file diff --git a/rustdoc/latest/src/halo2/plonk/keygen.rs.html b/rustdoc/latest/src/halo2/plonk/keygen.rs.html new file mode 100644 index 00000000..f88aa90c --- /dev/null +++ b/rustdoc/latest/src/halo2/plonk/keygen.rs.html @@ -0,0 +1,576 @@ +keygen.rs - source + + + +
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+ 32
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+ 41
+ 42
+ 43
+ 44
+ 45
+ 46
+ 47
+ 48
+ 49
+ 50
+ 51
+ 52
+ 53
+ 54
+ 55
+ 56
+ 57
+ 58
+ 59
+ 60
+ 61
+ 62
+ 63
+ 64
+ 65
+ 66
+ 67
+ 68
+ 69
+ 70
+ 71
+ 72
+ 73
+ 74
+ 75
+ 76
+ 77
+ 78
+ 79
+ 80
+ 81
+ 82
+ 83
+ 84
+ 85
+ 86
+ 87
+ 88
+ 89
+ 90
+ 91
+ 92
+ 93
+ 94
+ 95
+ 96
+ 97
+ 98
+ 99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+
+use ff::Field;
+use group::Curve;
+
+use super::{
+    circuit::{
+        Advice, Any, Assignment, Circuit, Column, ConstraintSystem, Fixed, FloorPlanner, Selector,
+    },
+    permutation, Assigned, Error, LagrangeCoeff, Permutation, Polynomial, ProvingKey, VerifyingKey,
+};
+use crate::poly::{
+    commitment::{Blind, Params},
+    EvaluationDomain, Rotation,
+};
+use crate::{arithmetic::CurveAffine, poly::batch_invert_assigned};
+
+pub(crate) fn create_domain<C, ConcreteCircuit>(
+    params: &Params<C>,
+) -> (
+    EvaluationDomain<C::Scalar>,
+    ConstraintSystem<C::Scalar>,
+    ConcreteCircuit::Config,
+)
+where
+    C: CurveAffine,
+    ConcreteCircuit: Circuit<C::Scalar>,
+{
+    let mut cs = ConstraintSystem::default();
+    let config = ConcreteCircuit::configure(&mut cs);
+
+    let degree = cs.degree();
+
+    let domain = EvaluationDomain::new(degree as u32, params.k);
+
+    (domain, cs, config)
+}
+
+/// Assembly to be used in circuit synthesis.
+#[derive(Debug)]
+struct Assembly<F: Field> {
+    fixed: Vec<Polynomial<Assigned<F>, LagrangeCoeff>>,
+    permutations: Vec<permutation::keygen::Assembly>,
+    _marker: std::marker::PhantomData<F>,
+}
+
+impl<F: Field> Assignment<F> for Assembly<F> {
+    fn enter_region<NR, N>(&mut self, _: N)
+    where
+        NR: Into<String>,
+        N: FnOnce() -> NR,
+    {
+        // Do nothing; we don't care about regions in this context.
+    }
+
+    fn exit_region(&mut self) {
+        // Do nothing; we don't care about regions in this context.
+    }
+
+    fn enable_selector<A, AR>(
+        &mut self,
+        annotation: A,
+        selector: &Selector,
+        row: usize,
+    ) -> Result<(), Error>
+    where
+        A: FnOnce() -> AR,
+        AR: Into<String>,
+    {
+        // Selectors are just fixed columns.
+        // TODO: Ensure that the default for a selector's cells is always zero, if we
+        // alter the proving system to change the global default.
+        // TODO: Implement selector combining optimization
+        // https://github.com/zcash/halo2/issues/116
+        self.assign_fixed(annotation, selector.0, row, || Ok(F::one()))
+    }
+
+    fn assign_advice<V, VR, A, AR>(
+        &mut self,
+        _: A,
+        _: Column<Advice>,
+        _: usize,
+        _: V,
+    ) -> Result<(), Error>
+    where
+        V: FnOnce() -> Result<VR, Error>,
+        VR: Into<Assigned<F>>,
+        A: FnOnce() -> AR,
+        AR: Into<String>,
+    {
+        // We only care about fixed columns here
+        Ok(())
+    }
+
+    fn assign_fixed<V, VR, A, AR>(
+        &mut self,
+        _: A,
+        column: Column<Fixed>,
+        row: usize,
+        to: V,
+    ) -> Result<(), Error>
+    where
+        V: FnOnce() -> Result<VR, Error>,
+        VR: Into<Assigned<F>>,
+        A: FnOnce() -> AR,
+        AR: Into<String>,
+    {
+        *self
+            .fixed
+            .get_mut(column.index())
+            .and_then(|v| v.get_mut(row))
+            .ok_or(Error::BoundsFailure)? = to()?.into();
+
+        Ok(())
+    }
+
+    fn copy(
+        &mut self,
+        permutation: &Permutation,
+        left_column: Column<Any>,
+        left_row: usize,
+        right_column: Column<Any>,
+        right_row: usize,
+    ) -> Result<(), Error> {
+        // Check bounds first
+        if permutation.index() >= self.permutations.len() {
+            return Err(Error::BoundsFailure);
+        }
+
+        let left_column_index = permutation
+            .mapping()
+            .iter()
+            .position(|c| c == &left_column)
+            .ok_or(Error::SynthesisError)?;
+        let right_column_index = permutation
+            .mapping()
+            .iter()
+            .position(|c| c == &right_column)
+            .ok_or(Error::SynthesisError)?;
+
+        self.permutations[permutation.index()].copy(
+            left_column_index,
+            left_row,
+            right_column_index,
+            right_row,
+        )
+    }
+
+    fn push_namespace<NR, N>(&mut self, _: N)
+    where
+        NR: Into<String>,
+        N: FnOnce() -> NR,
+    {
+        // Do nothing; we don't care about namespaces in this context.
+    }
+
+    fn pop_namespace(&mut self, _: Option<String>) {
+        // Do nothing; we don't care about namespaces in this context.
+    }
+}
+
+/// Generate a `VerifyingKey` from an instance of `Circuit`.
+pub fn keygen_vk<C, ConcreteCircuit>(
+    params: &Params<C>,
+    circuit: &ConcreteCircuit,
+) -> Result<VerifyingKey<C>, Error>
+where
+    C: CurveAffine,
+    ConcreteCircuit: Circuit<C::Scalar>,
+{
+    let (domain, cs, config) = create_domain::<C, ConcreteCircuit>(params);
+
+    let mut assembly: Assembly<C::Scalar> = Assembly {
+        fixed: vec![domain.empty_lagrange_assigned(); cs.num_fixed_columns],
+        permutations: cs
+            .permutations
+            .iter()
+            .map(|p| permutation::keygen::Assembly::new(params.n as usize, p))
+            .collect(),
+        _marker: std::marker::PhantomData,
+    };
+
+    // Synthesize the circuit to obtain URS
+    ConcreteCircuit::FloorPlanner::synthesize(&mut assembly, circuit, config)?;
+
+    let fixed = batch_invert_assigned(&assembly.fixed);
+
+    let permutation_helper = permutation::keygen::Assembly::build_helper(params, &cs, &domain);
+
+    let permutation_vks = cs
+        .permutations
+        .iter()
+        .zip(assembly.permutations.into_iter())
+        .map(|(p, assembly)| assembly.build_vk(params, &domain, &permutation_helper, p))
+        .collect();
+
+    let fixed_commitments = fixed
+        .iter()
+        .map(|poly| params.commit_lagrange(poly, Blind::default()).to_affine())
+        .collect();
+
+    Ok(VerifyingKey {
+        domain,
+        fixed_commitments,
+        permutations: permutation_vks,
+        cs,
+    })
+}
+
+/// Generate a `ProvingKey` from a `VerifyingKey` and an instance of `Circuit`.
+pub fn keygen_pk<C, ConcreteCircuit>(
+    params: &Params<C>,
+    vk: VerifyingKey<C>,
+    circuit: &ConcreteCircuit,
+) -> Result<ProvingKey<C>, Error>
+where
+    C: CurveAffine,
+    ConcreteCircuit: Circuit<C::Scalar>,
+{
+    let mut cs = ConstraintSystem::default();
+    let config = ConcreteCircuit::configure(&mut cs);
+
+    let mut assembly: Assembly<C::Scalar> = Assembly {
+        fixed: vec![vk.domain.empty_lagrange_assigned(); vk.cs.num_fixed_columns],
+        permutations: vk
+            .cs
+            .permutations
+            .iter()
+            .map(|p| permutation::keygen::Assembly::new(params.n as usize, p))
+            .collect(),
+        _marker: std::marker::PhantomData,
+    };
+
+    // Synthesize the circuit to obtain URS
+    ConcreteCircuit::FloorPlanner::synthesize(&mut assembly, circuit, config)?;
+
+    let fixed = batch_invert_assigned(&assembly.fixed);
+
+    let fixed_polys: Vec<_> = fixed
+        .iter()
+        .map(|poly| vk.domain.lagrange_to_coeff(poly.clone()))
+        .collect();
+
+    let fixed_cosets = vk
+        .cs
+        .fixed_queries
+        .iter()
+        .map(|&(column, at)| {
+            let poly = fixed_polys[column.index()].clone();
+            vk.domain.coeff_to_extended(poly, at)
+        })
+        .collect();
+
+    let permutation_helper =
+        permutation::keygen::Assembly::build_helper(params, &vk.cs, &vk.domain);
+
+    let permutation_pks = vk
+        .cs
+        .permutations
+        .iter()
+        .zip(assembly.permutations.into_iter())
+        .map(|(p, assembly)| assembly.build_pk(&vk.domain, &permutation_helper, p))
+        .collect();
+
+    // Compute l_0(X)
+    // TODO: this can be done more efficiently
+    let mut l0 = vk.domain.empty_lagrange();
+    l0[0] = C::Scalar::one();
+    let l0 = vk.domain.lagrange_to_coeff(l0);
+    let l0 = vk.domain.coeff_to_extended(l0, Rotation::cur());
+
+    Ok(ProvingKey {
+        vk,
+        l0,
+        fixed_values: fixed,
+        fixed_polys,
+        fixed_cosets,
+        permutations: permutation_pks,
+    })
+}
+
+
+ + \ No newline at end of file diff --git a/rustdoc/latest/src/halo2/plonk/lookup.rs.html b/rustdoc/latest/src/halo2/plonk/lookup.rs.html new file mode 100644 index 00000000..f14958a4 --- /dev/null +++ b/rustdoc/latest/src/halo2/plonk/lookup.rs.html @@ -0,0 +1,122 @@ +lookup.rs - source + + + +
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+
+use super::circuit::Expression;
+use ff::Field;
+
+pub(crate) mod prover;
+pub(crate) mod verifier;
+
+#[derive(Clone, Debug)]
+pub(crate) struct Argument<F: Field> {
+    pub input_expressions: Vec<Expression<F>>,
+    pub table_expressions: Vec<Expression<F>>,
+}
+
+impl<F: Field> Argument<F> {
+    /// Constructs a new lookup argument.
+    ///
+    /// `table_map` is a sequence of `(input, table)` tuples.
+    pub fn new(table_map: Vec<(Expression<F>, Expression<F>)>) -> Self {
+        let (input_expressions, table_expressions) = table_map.into_iter().unzip();
+        Argument {
+            input_expressions,
+            table_expressions,
+        }
+    }
+
+    pub(crate) fn required_degree(&self) -> usize {
+        assert_eq!(self.input_expressions.len(), self.table_expressions.len());
+
+        // degree 2:
+        // l_0(X) * (1 - z'(X)) = 0
+        //
+        // degree (1 + input_degree + table_degree):
+        // z'(X) (a'(X) + \beta) (s'(X) + \gamma)
+        // - z'(\omega^{-1} X) (\theta^{m-1} a_0(X) + ... + a_{m-1}(X) + \beta) (\theta^{m-1} s_0(X) + ... + s_{m-1}(X) + \gamma)
+        //
+        // degree 2:
+        // l_0(X) * (a'(X) - s'(X)) = 0
+        //
+        // degree 2:
+        // (a′(X)−s′(X))⋅(a′(X)−a′(\omega{-1} X)) = 0
+        let mut input_degree = 1;
+        for expr in self.input_expressions.iter() {
+            input_degree = std::cmp::max(input_degree, expr.degree());
+        }
+        let mut table_degree = 1;
+        for expr in self.table_expressions.iter() {
+            table_degree = std::cmp::max(table_degree, expr.degree());
+        }
+
+        1 + input_degree + table_degree
+    }
+}
+
+
+ + \ No newline at end of file diff --git a/rustdoc/latest/src/halo2/plonk/lookup/prover.rs.html b/rustdoc/latest/src/halo2/plonk/lookup/prover.rs.html new file mode 100644 index 00000000..722334a4 --- /dev/null +++ b/rustdoc/latest/src/halo2/plonk/lookup/prover.rs.html @@ -0,0 +1,1308 @@ +prover.rs - source + + + +
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+ 32
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+ 41
+ 42
+ 43
+ 44
+ 45
+ 46
+ 47
+ 48
+ 49
+ 50
+ 51
+ 52
+ 53
+ 54
+ 55
+ 56
+ 57
+ 58
+ 59
+ 60
+ 61
+ 62
+ 63
+ 64
+ 65
+ 66
+ 67
+ 68
+ 69
+ 70
+ 71
+ 72
+ 73
+ 74
+ 75
+ 76
+ 77
+ 78
+ 79
+ 80
+ 81
+ 82
+ 83
+ 84
+ 85
+ 86
+ 87
+ 88
+ 89
+ 90
+ 91
+ 92
+ 93
+ 94
+ 95
+ 96
+ 97
+ 98
+ 99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
+399
+400
+401
+402
+403
+404
+405
+406
+407
+408
+409
+410
+411
+412
+413
+414
+415
+416
+417
+418
+419
+420
+421
+422
+423
+424
+425
+426
+427
+428
+429
+430
+431
+432
+433
+434
+435
+436
+437
+438
+439
+440
+441
+442
+443
+444
+445
+446
+447
+448
+449
+450
+451
+452
+453
+454
+455
+456
+457
+458
+459
+460
+461
+462
+463
+464
+465
+466
+467
+468
+469
+470
+471
+472
+473
+474
+475
+476
+477
+478
+479
+480
+481
+482
+483
+484
+485
+486
+487
+488
+489
+490
+491
+492
+493
+494
+495
+496
+497
+498
+499
+500
+501
+502
+503
+504
+505
+506
+507
+508
+509
+510
+511
+512
+513
+514
+515
+516
+517
+518
+519
+520
+521
+522
+523
+524
+525
+526
+527
+528
+529
+530
+531
+532
+533
+534
+535
+536
+537
+538
+539
+540
+541
+542
+543
+544
+545
+546
+547
+548
+549
+550
+551
+552
+553
+554
+555
+556
+557
+558
+559
+560
+561
+562
+563
+564
+565
+566
+567
+568
+569
+570
+571
+572
+573
+574
+575
+576
+577
+578
+579
+580
+581
+582
+583
+584
+585
+586
+587
+588
+589
+590
+591
+592
+593
+594
+595
+596
+597
+598
+599
+600
+601
+602
+603
+604
+605
+606
+607
+608
+609
+610
+611
+612
+613
+614
+615
+616
+617
+618
+619
+620
+621
+622
+623
+624
+625
+626
+627
+628
+629
+630
+631
+632
+633
+634
+635
+636
+637
+638
+639
+640
+641
+642
+643
+644
+
+use super::super::{
+    circuit::Expression, ChallengeBeta, ChallengeGamma, ChallengeTheta, ChallengeX, Error,
+    ProvingKey,
+};
+use super::Argument;
+use crate::{
+    arithmetic::{eval_polynomial, parallelize, BatchInvert, CurveAffine, FieldExt},
+    poly::{
+        commitment::{Blind, Params},
+        multiopen::ProverQuery,
+        Coeff, EvaluationDomain, ExtendedLagrangeCoeff, LagrangeCoeff, Polynomial, Rotation,
+    },
+    transcript::{EncodedChallenge, TranscriptWrite},
+};
+use ff::Field;
+use group::Curve;
+use std::{
+    collections::BTreeMap,
+    iter,
+    ops::{Mul, MulAssign},
+};
+
+#[derive(Debug)]
+pub(in crate::plonk) struct Permuted<C: CurveAffine> {
+    unpermuted_input_expressions: Vec<Polynomial<C::Scalar, LagrangeCoeff>>,
+    unpermuted_input_cosets: Vec<Polynomial<C::Scalar, ExtendedLagrangeCoeff>>,
+    permuted_input_expression: Polynomial<C::Scalar, LagrangeCoeff>,
+    permuted_input_poly: Polynomial<C::Scalar, Coeff>,
+    permuted_input_coset: Polynomial<C::Scalar, ExtendedLagrangeCoeff>,
+    permuted_input_inv_coset: Polynomial<C::Scalar, ExtendedLagrangeCoeff>,
+    permuted_input_blind: Blind<C::Scalar>,
+    permuted_input_commitment: C,
+    unpermuted_table_expressions: Vec<Polynomial<C::Scalar, LagrangeCoeff>>,
+    unpermuted_table_cosets: Vec<Polynomial<C::Scalar, ExtendedLagrangeCoeff>>,
+    permuted_table_expression: Polynomial<C::Scalar, LagrangeCoeff>,
+    permuted_table_poly: Polynomial<C::Scalar, Coeff>,
+    permuted_table_coset: Polynomial<C::Scalar, ExtendedLagrangeCoeff>,
+    permuted_table_blind: Blind<C::Scalar>,
+    permuted_table_commitment: C,
+}
+
+#[derive(Debug)]
+pub(in crate::plonk) struct Committed<C: CurveAffine> {
+    permuted: Permuted<C>,
+    product_poly: Polynomial<C::Scalar, Coeff>,
+    product_coset: Polynomial<C::Scalar, ExtendedLagrangeCoeff>,
+    product_inv_coset: Polynomial<C::Scalar, ExtendedLagrangeCoeff>,
+    product_blind: Blind<C::Scalar>,
+    product_commitment: C,
+}
+
+pub(in crate::plonk) struct Constructed<C: CurveAffine> {
+    permuted_input_poly: Polynomial<C::Scalar, Coeff>,
+    permuted_input_blind: Blind<C::Scalar>,
+    permuted_table_poly: Polynomial<C::Scalar, Coeff>,
+    permuted_table_blind: Blind<C::Scalar>,
+    product_poly: Polynomial<C::Scalar, Coeff>,
+    product_blind: Blind<C::Scalar>,
+}
+
+pub(in crate::plonk) struct Evaluated<C: CurveAffine> {
+    constructed: Constructed<C>,
+}
+
+impl<F: FieldExt> Argument<F> {
+    /// Given a Lookup with input expressions [A_0, A_1, ..., A_{m-1}] and table expressions
+    /// [S_0, S_1, ..., S_{m-1}], this method
+    /// - constructs A_compressed = \theta^{m-1} A_0 + theta^{m-2} A_1 + ... + \theta A_{m-2} + A_{m-1}
+    ///   and S_compressed = \theta^{m-1} S_0 + theta^{m-2} S_1 + ... + \theta S_{m-2} + S_{m-1},
+    /// - permutes A_compressed and S_compressed using permute_expression_pair() helper,
+    ///   obtaining A' and S', and
+    /// - constructs Permuted<C> struct using permuted_input_value = A', and
+    ///   permuted_table_expression = S'.
+    /// The Permuted<C> struct is used to update the Lookup, and is then returned.
+    pub(in crate::plonk) fn commit_permuted<
+        'a,
+        C,
+        E: EncodedChallenge<C>,
+        T: TranscriptWrite<C, E>,
+    >(
+        &self,
+        pk: &ProvingKey<C>,
+        params: &Params<C>,
+        domain: &EvaluationDomain<C::Scalar>,
+        theta: ChallengeTheta<C>,
+        advice_values: &'a [Polynomial<C::Scalar, LagrangeCoeff>],
+        fixed_values: &'a [Polynomial<C::Scalar, LagrangeCoeff>],
+        instance_values: &'a [Polynomial<C::Scalar, LagrangeCoeff>],
+        advice_cosets: &'a [Polynomial<C::Scalar, ExtendedLagrangeCoeff>],
+        fixed_cosets: &'a [Polynomial<C::Scalar, ExtendedLagrangeCoeff>],
+        instance_cosets: &'a [Polynomial<C::Scalar, ExtendedLagrangeCoeff>],
+        transcript: &mut T,
+    ) -> Result<Permuted<C>, Error>
+    where
+        C: CurveAffine<ScalarExt = F>,
+        C::Curve: Mul<F, Output = C::Curve> + MulAssign<F>,
+    {
+        // Closure to get values of expressions and compress them
+        let compress_expressions = |expressions: &[Expression<C::Scalar>]| {
+            // Values of input expressions involved in the lookup
+            let unpermuted_expressions: Vec<_> = expressions
+                .iter()
+                .map(|expression| {
+                    expression.evaluate(
+                        &|scalar| pk.vk.domain.constant_lagrange(scalar),
+                        &|index| {
+                            let query = pk.vk.cs.fixed_queries[index];
+                            let column_index = query.0.index();
+                            let rotation = query.1;
+                            fixed_values[column_index].clone().rotate(rotation)
+                        },
+                        &|index| {
+                            let query = pk.vk.cs.advice_queries[index];
+                            let column_index = query.0.index();
+                            let rotation = query.1;
+                            advice_values[column_index].clone().rotate(rotation)
+                        },
+                        &|index| {
+                            let query = pk.vk.cs.instance_queries[index];
+                            let column_index = query.0.index();
+                            let rotation = query.1;
+                            instance_values[column_index].clone().rotate(rotation)
+                        },
+                        &|a, b| a + &b,
+                        &|a, b| {
+                            let mut modified_a = vec![C::Scalar::one(); params.n as usize];
+                            parallelize(&mut modified_a, |modified_a, start| {
+                                for ((modified_a, a), b) in modified_a
+                                    .iter_mut()
+                                    .zip(a[start..].iter())
+                                    .zip(b[start..].iter())
+                                {
+                                    *modified_a *= *a * b;
+                                }
+                            });
+                            pk.vk.domain.lagrange_from_vec(modified_a)
+                        },
+                        &|a, scalar| a * scalar,
+                    )
+                })
+                .collect();
+
+            let unpermuted_cosets: Vec<_> = expressions
+                .iter()
+                .map(|expression| {
+                    expression.evaluate(
+                        &|scalar| pk.vk.domain.constant_extended(scalar),
+                        &|index| fixed_cosets[index].clone(),
+                        &|index| advice_cosets[index].clone(),
+                        &|index| instance_cosets[index].clone(),
+                        &|a, b| a + &b,
+                        &|a, b| a * &b,
+                        &|a, scalar| a * scalar,
+                    )
+                })
+                .collect();
+
+            // Compressed version of expressions
+            let compressed_expression = unpermuted_expressions
+                .iter()
+                .fold(domain.empty_lagrange(), |acc, expression| {
+                    acc * *theta + expression
+                });
+
+            (
+                unpermuted_expressions,
+                unpermuted_cosets,
+                compressed_expression,
+            )
+        };
+
+        // Closure to construct commitment to vector of values
+        let commit_values = |values: &Polynomial<C::Scalar, LagrangeCoeff>| {
+            let poly = pk.vk.domain.lagrange_to_coeff(values.clone());
+            let blind = Blind(C::Scalar::rand());
+            let commitment = params.commit_lagrange(values, blind).to_affine();
+            (poly, blind, commitment)
+        };
+
+        // Get values of input expressions involved in the lookup and compress them
+        let (unpermuted_input_expressions, unpermuted_input_cosets, compressed_input_expression) =
+            compress_expressions(&self.input_expressions);
+
+        // Get values of table expressions involved in the lookup and compress them
+        let (unpermuted_table_expressions, unpermuted_table_cosets, compressed_table_expression) =
+            compress_expressions(&self.table_expressions);
+
+        // Permute compressed (InputExpression, TableExpression) pair
+        let (permuted_input_expression, permuted_table_expression) = permute_expression_pair::<C>(
+            domain,
+            &compressed_input_expression,
+            &compressed_table_expression,
+        )?;
+
+        // Commit to permuted input expression
+        let (permuted_input_poly, permuted_input_blind, permuted_input_commitment) =
+            commit_values(&permuted_input_expression);
+
+        // Commit to permuted table expression
+        let (permuted_table_poly, permuted_table_blind, permuted_table_commitment) =
+            commit_values(&permuted_table_expression);
+
+        // Hash permuted input commitment
+        transcript
+            .write_point(permuted_input_commitment)
+            .map_err(|_| Error::TranscriptError)?;
+
+        // Hash permuted table commitment
+        transcript
+            .write_point(permuted_table_commitment)
+            .map_err(|_| Error::TranscriptError)?;
+
+        let permuted_input_coset = pk
+            .vk
+            .domain
+            .coeff_to_extended(permuted_input_poly.clone(), Rotation::cur());
+        let permuted_input_inv_coset = pk
+            .vk
+            .domain
+            .coeff_to_extended(permuted_input_poly.clone(), Rotation(-1));
+        let permuted_table_coset = pk
+            .vk
+            .domain
+            .coeff_to_extended(permuted_table_poly.clone(), Rotation::cur());
+
+        Ok(Permuted {
+            unpermuted_input_expressions,
+            unpermuted_input_cosets,
+            permuted_input_expression,
+            permuted_input_poly,
+            permuted_input_coset,
+            permuted_input_inv_coset,
+            permuted_input_blind,
+            permuted_input_commitment,
+            unpermuted_table_expressions,
+            unpermuted_table_cosets,
+            permuted_table_expression,
+            permuted_table_poly,
+            permuted_table_coset,
+            permuted_table_blind,
+            permuted_table_commitment,
+        })
+    }
+}
+
+impl<C: CurveAffine> Permuted<C> {
+    /// Given a Lookup with input expressions, table expressions, and the permuted
+    /// input expression and permuted table expression, this method constructs the
+    /// grand product polynomial over the lookup. The grand product polynomial
+    /// is used to populate the Product<C> struct. The Product<C> struct is
+    /// added to the Lookup and finally returned by the method.
+    pub(in crate::plonk) fn commit_product<E: EncodedChallenge<C>, T: TranscriptWrite<C, E>>(
+        self,
+        pk: &ProvingKey<C>,
+        params: &Params<C>,
+        theta: ChallengeTheta<C>,
+        beta: ChallengeBeta<C>,
+        gamma: ChallengeGamma<C>,
+        transcript: &mut T,
+    ) -> Result<Committed<C>, Error> {
+        // Goal is to compute the products of fractions
+        //
+        // Numerator: (\theta^{m-1} a_0(\omega^i) + \theta^{m-2} a_1(\omega^i) + ... + \theta a_{m-2}(\omega^i) + a_{m-1}(\omega^i) + \beta)
+        //            * (\theta^{m-1} s_0(\omega^i) + \theta^{m-2} s_1(\omega^i) + ... + \theta s_{m-2}(\omega^i) + s_{m-1}(\omega^i) + \gamma)
+        // Denominator: (a'(\omega^i) + \beta) (s'(\omega^i) + \gamma)
+        //
+        // where a_j(X) is the jth input expression in this lookup,
+        // where a'(X) is the compression of the permuted input expressions,
+        // s_j(X) is the jth table expression in this lookup,
+        // s'(X) is the compression of the permuted table expressions,
+        // and i is the ith row of the expression.
+        let mut lookup_product = vec![C::Scalar::zero(); params.n as usize];
+        // Denominator uses the permuted input expression and permuted table expression
+        parallelize(&mut lookup_product, |lookup_product, start| {
+            for ((lookup_product, permuted_input_value), permuted_table_value) in lookup_product
+                .iter_mut()
+                .zip(self.permuted_input_expression[start..].iter())
+                .zip(self.permuted_table_expression[start..].iter())
+            {
+                *lookup_product = (*beta + permuted_input_value) * &(*gamma + permuted_table_value);
+            }
+        });
+
+        // Batch invert to obtain the denominators for the lookup product
+        // polynomials
+        lookup_product.iter_mut().batch_invert();
+
+        // Finish the computation of the entire fraction by computing the numerators
+        // (\theta^{m-1} a_0(\omega^i) + \theta^{m-2} a_1(\omega^i) + ... + \theta a_{m-2}(\omega^i) + a_{m-1}(\omega^i) + \beta)
+        // * (\theta^{m-1} s_0(\omega^i) + \theta^{m-2} s_1(\omega^i) + ... + \theta s_{m-2}(\omega^i) + s_{m-1}(\omega^i) + \gamma)
+        parallelize(&mut lookup_product, |product, start| {
+            for (i, product) in product.iter_mut().enumerate() {
+                let i = i + start;
+
+                // Compress unpermuted input expressions
+                let mut input_term = C::Scalar::zero();
+                for unpermuted_input_expression in self.unpermuted_input_expressions.iter() {
+                    input_term *= &*theta;
+                    input_term += &unpermuted_input_expression[i];
+                }
+
+                // Compress unpermuted table expressions
+                let mut table_term = C::Scalar::zero();
+                for unpermuted_table_expression in self.unpermuted_table_expressions.iter() {
+                    table_term *= &*theta;
+                    table_term += &unpermuted_table_expression[i];
+                }
+
+                *product *= &(input_term + &*beta);
+                *product *= &(table_term + &*gamma);
+            }
+        });
+
+        // The product vector is a vector of products of fractions of the form
+        //
+        // Numerator: (\theta^{m-1} a_0(\omega^i) + \theta^{m-2} a_1(\omega^i) + ... + \theta a_{m-2}(\omega^i) + a_{m-1}(\omega^i) + \beta)
+        //            * (\theta^{m-1} s_0(\omega^i) + \theta^{m-2} s_1(\omega^i) + ... + \theta s_{m-2}(\omega^i) + s_{m-1}(\omega^i) + \gamma)
+        // Denominator: (a'(\omega^i) + \beta) (s'(\omega^i) + \gamma)
+        //
+        // where there are m input expressions and m table expressions,
+        // a_j(\omega^i) is the jth input expression in this lookup,
+        // a'j(\omega^i) is the permuted input expression,
+        // s_j(\omega^i) is the jth table expression in this lookup,
+        // s'(\omega^i) is the permuted table expression,
+        // and i is the ith row of the expression.
+
+        // Compute the evaluations of the lookup product polynomial
+        // over our domain, starting with z[0] = 1
+        let z = iter::once(C::Scalar::one())
+            .chain(lookup_product.into_iter().skip(1))
+            .scan(C::Scalar::one(), |state, cur| {
+                *state *= &cur;
+                Some(*state)
+            })
+            .collect::<Vec<_>>();
+        let z = pk.vk.domain.lagrange_from_vec(z);
+
+        #[cfg(feature = "sanity-checks")]
+        // This test works only with intermediate representations in this method.
+        // It can be used for debugging purposes.
+        {
+            // While in Lagrange basis, check that product is correctly constructed
+            let n = params.n as usize;
+
+            // z'(X) (a'(X) + \beta) (s'(X) + \gamma)
+            // - z'(\omega^{-1} X) (\theta^{m-1} a_0(X) + ... + a_{m-1}(X) + \beta) (\theta^{m-1} s_0(X) + ... + s_{m-1}(X) + \gamma)
+            for i in 0..n {
+                let prev_idx = (n + i - 1) % n;
+
+                let mut left = z[i];
+                let permuted_input_value = &self.permuted_input_expression[i];
+
+                let permuted_table_value = &self.permuted_table_expression[i];
+
+                left *= &(*beta + permuted_input_value);
+                left *= &(*gamma + permuted_table_value);
+
+                let mut right = z[prev_idx];
+                let mut input_term = self
+                    .unpermuted_input_expressions
+                    .iter()
+                    .fold(C::Scalar::zero(), |acc, input| acc * &*theta + &input[i]);
+
+                let mut table_term = self
+                    .unpermuted_table_expressions
+                    .iter()
+                    .fold(C::Scalar::zero(), |acc, table| acc * &*theta + &table[i]);
+
+                input_term += &(*beta);
+                table_term += &(*gamma);
+                right *= &(input_term * &table_term);
+
+                assert_eq!(left, right);
+            }
+        }
+
+        let product_blind = Blind(C::Scalar::rand());
+        let product_commitment = params.commit_lagrange(&z, product_blind).to_affine();
+        let z = pk.vk.domain.lagrange_to_coeff(z);
+        let product_coset = pk.vk.domain.coeff_to_extended(z.clone(), Rotation::cur());
+        let product_inv_coset = pk.vk.domain.coeff_to_extended(z.clone(), Rotation::prev());
+
+        // Hash product commitment
+        transcript
+            .write_point(product_commitment)
+            .map_err(|_| Error::TranscriptError)?;
+
+        Ok(Committed::<C> {
+            permuted: self,
+            product_poly: z,
+            product_coset,
+            product_inv_coset,
+            product_commitment,
+            product_blind,
+        })
+    }
+}
+
+impl<'a, C: CurveAffine> Committed<C> {
+    /// Given a Lookup with input expressions, table expressions, permuted input
+    /// expression, permuted table expression, and grand product polynomial, this
+    /// method constructs constraints that must hold between these values.
+    /// This method returns the constraints as a vector of polynomials in
+    /// the extended evaluation domain.
+    pub(in crate::plonk) fn construct(
+        self,
+        pk: &'a ProvingKey<C>,
+        theta: ChallengeTheta<C>,
+        beta: ChallengeBeta<C>,
+        gamma: ChallengeGamma<C>,
+    ) -> (
+        Constructed<C>,
+        impl Iterator<Item = Polynomial<C::Scalar, ExtendedLagrangeCoeff>> + 'a,
+    ) {
+        let permuted = self.permuted;
+
+        let expressions = iter::empty()
+            // l_0(X) * (1 - z'(X)) = 0
+            .chain(Some(
+                Polynomial::one_minus(self.product_coset.clone()) * &pk.l0,
+            ))
+            // z'(X) (a'(X) + \beta) (s'(X) + \gamma)
+            // - z'(\omega^{-1} X) (\theta^{m-1} a_0(X) + ... + a_{m-1}(X) + \beta) (\theta^{m-1} s_0(X) + ... + s_{m-1}(X) + \gamma)
+            .chain({
+                // z'(X) (a'(X) + \beta) (s'(X) + \gamma)
+                let mut left = self.product_coset.clone();
+                parallelize(&mut left, |left, start| {
+                    for ((left, permuted_input), permuted_table) in left
+                        .iter_mut()
+                        .zip(permuted.permuted_input_coset[start..].iter())
+                        .zip(permuted.permuted_table_coset[start..].iter())
+                    {
+                        *left *= &(*permuted_input + &(*beta));
+                        *left *= &(*permuted_table + &(*gamma));
+                    }
+                });
+
+                //  z'(\omega^{-1} X) (\theta^{m-1} a_0(X) + ... + a_{m-1}(X) + \beta) (\theta^{m-1} s_0(X) + ... + s_{m-1}(X) + \gamma)
+                let mut right = self.product_inv_coset;
+                parallelize(&mut right, |right, start| {
+                    for (i, right) in right.iter_mut().enumerate() {
+                        let i = i + start;
+
+                        // Compress the unpermuted input expressions
+                        let mut input_term = C::Scalar::zero();
+                        for input in permuted.unpermuted_input_cosets.iter() {
+                            input_term *= &*theta;
+                            input_term += &input[i];
+                        }
+
+                        // Compress the unpermuted table expressions
+                        let mut table_term = C::Scalar::zero();
+                        for table in permuted.unpermuted_table_cosets.iter() {
+                            table_term *= &*theta;
+                            table_term += &table[i];
+                        }
+
+                        // Add \beta and \gamma offsets
+                        *right *= &(input_term + &*beta);
+                        *right *= &(table_term + &*gamma);
+                    }
+                });
+
+                Some(left - &right)
+            })
+            // Check that the first values in the permuted input expression and permuted
+            // fixed expression are the same.
+            // l_0(X) * (a'(X) - s'(X)) = 0
+            .chain(Some(
+                (permuted.permuted_input_coset.clone() - &permuted.permuted_table_coset) * &pk.l0,
+            ))
+            // Check that each value in the permuted lookup input expression is either
+            // equal to the value above it, or the value at the same index in the
+            // permuted table expression.
+            // (a′(X)−s′(X))⋅(a′(X)−a′(\omega{-1} X)) = 0
+            .chain(Some(
+                (permuted.permuted_input_coset.clone() - &permuted.permuted_table_coset)
+                    * &(permuted.permuted_input_coset.clone() - &permuted.permuted_input_inv_coset),
+            ));
+
+        (
+            Constructed {
+                permuted_input_poly: permuted.permuted_input_poly,
+                permuted_input_blind: permuted.permuted_input_blind,
+                permuted_table_poly: permuted.permuted_table_poly,
+                permuted_table_blind: permuted.permuted_table_blind,
+                product_poly: self.product_poly,
+                product_blind: self.product_blind,
+            },
+            expressions,
+        )
+    }
+}
+
+impl<C: CurveAffine> Constructed<C> {
+    pub(in crate::plonk) fn evaluate<E: EncodedChallenge<C>, T: TranscriptWrite<C, E>>(
+        self,
+        pk: &ProvingKey<C>,
+        x: ChallengeX<C>,
+        transcript: &mut T,
+    ) -> Result<Evaluated<C>, Error> {
+        let domain = &pk.vk.domain;
+        let x_inv = domain.rotate_omega(*x, Rotation(-1));
+
+        let product_eval = eval_polynomial(&self.product_poly, *x);
+        let product_inv_eval = eval_polynomial(&self.product_poly, x_inv);
+        let permuted_input_eval = eval_polynomial(&self.permuted_input_poly, *x);
+        let permuted_input_inv_eval = eval_polynomial(&self.permuted_input_poly, x_inv);
+        let permuted_table_eval = eval_polynomial(&self.permuted_table_poly, *x);
+
+        // Hash each advice evaluation
+        for eval in iter::empty()
+            .chain(Some(product_eval))
+            .chain(Some(product_inv_eval))
+            .chain(Some(permuted_input_eval))
+            .chain(Some(permuted_input_inv_eval))
+            .chain(Some(permuted_table_eval))
+        {
+            transcript
+                .write_scalar(eval)
+                .map_err(|_| Error::TranscriptError)?;
+        }
+
+        Ok(Evaluated { constructed: self })
+    }
+}
+
+impl<C: CurveAffine> Evaluated<C> {
+    pub(in crate::plonk) fn open<'a>(
+        &'a self,
+        pk: &'a ProvingKey<C>,
+        x: ChallengeX<C>,
+    ) -> impl Iterator<Item = ProverQuery<'a, C>> + Clone {
+        let x_inv = pk.vk.domain.rotate_omega(*x, Rotation(-1));
+
+        iter::empty()
+            // Open lookup product commitments at x
+            .chain(Some(ProverQuery {
+                point: *x,
+                poly: &self.constructed.product_poly,
+                blind: self.constructed.product_blind,
+            }))
+            // Open lookup input commitments at x
+            .chain(Some(ProverQuery {
+                point: *x,
+                poly: &self.constructed.permuted_input_poly,
+                blind: self.constructed.permuted_input_blind,
+            }))
+            // Open lookup table commitments at x
+            .chain(Some(ProverQuery {
+                point: *x,
+                poly: &self.constructed.permuted_table_poly,
+                blind: self.constructed.permuted_table_blind,
+            }))
+            // Open lookup input commitments at x_inv
+            .chain(Some(ProverQuery {
+                point: x_inv,
+                poly: &self.constructed.permuted_input_poly,
+                blind: self.constructed.permuted_input_blind,
+            }))
+            // Open lookup product commitments at x_inv
+            .chain(Some(ProverQuery {
+                point: x_inv,
+                poly: &self.constructed.product_poly,
+                blind: self.constructed.product_blind,
+            }))
+    }
+}
+
+type ExpressionPair<F> = (Polynomial<F, LagrangeCoeff>, Polynomial<F, LagrangeCoeff>);
+
+/// Given a vector of input values A and a vector of table values S,
+/// this method permutes A and S to produce A' and S', such that:
+/// - like values in A' are vertically adjacent to each other; and
+/// - the first row in a sequence of like values in A' is the row
+///   that has the corresponding value in S'.
+/// This method returns (A', S') if no errors are encountered.
+fn permute_expression_pair<C: CurveAffine>(
+    domain: &EvaluationDomain<C::Scalar>,
+    input_expression: &Polynomial<C::Scalar, LagrangeCoeff>,
+    table_expression: &Polynomial<C::Scalar, LagrangeCoeff>,
+) -> Result<ExpressionPair<C::Scalar>, Error> {
+    let mut permuted_input_expression = input_expression.clone();
+
+    // Sort input lookup expression values
+    permuted_input_expression.sort();
+
+    // A BTreeMap of each unique element in the table expression and its count
+    let mut leftover_table_map: BTreeMap<C::Scalar, u32> =
+        table_expression
+            .iter()
+            .fold(BTreeMap::new(), |mut acc, coeff| {
+                *acc.entry(*coeff).or_insert(0) += 1;
+                acc
+            });
+    let mut permuted_table_coeffs = vec![C::Scalar::zero(); table_expression.len()];
+
+    let mut repeated_input_rows = permuted_input_expression
+        .iter()
+        .zip(permuted_table_coeffs.iter_mut())
+        .enumerate()
+        .filter_map(|(row, (input_value, table_value))| {
+            // If this is the first occurence of `input_value` in the input expression
+            if row == 0 || *input_value != permuted_input_expression[row - 1] {
+                *table_value = *input_value;
+                // Remove one instance of input_value from leftover_table_map
+                if let Some(count) = leftover_table_map.get_mut(input_value) {
+                    assert!(*count > 0);
+                    *count -= 1;
+                    None
+                } else {
+                    // Return error if input_value not found
+                    Some(Err(Error::ConstraintSystemFailure))
+                }
+            // If input value is repeated
+            } else {
+                Some(Ok(row))
+            }
+        })
+        .collect::<Result<Vec<_>, _>>()?;
+
+    // Populate permuted table at unfilled rows with leftover table elements
+    for (coeff, count) in leftover_table_map.iter() {
+        for _ in 0..*count {
+            permuted_table_coeffs[repeated_input_rows.pop().unwrap() as usize] = *coeff;
+        }
+    }
+    assert!(repeated_input_rows.is_empty());
+
+    let mut permuted_table_expression = domain.empty_lagrange();
+    parallelize(
+        &mut permuted_table_expression,
+        |permuted_table_expression, start| {
+            for (permuted_table_value, permuted_table_coeff) in permuted_table_expression
+                .iter_mut()
+                .zip(permuted_table_coeffs[start..].iter())
+            {
+                *permuted_table_value += permuted_table_coeff;
+            }
+        },
+    );
+
+    Ok((permuted_input_expression, permuted_table_expression))
+}
+
+
+ + \ No newline at end of file diff --git a/rustdoc/latest/src/halo2/plonk/lookup/verifier.rs.html b/rustdoc/latest/src/halo2/plonk/lookup/verifier.rs.html new file mode 100644 index 00000000..e900cc7c --- /dev/null +++ b/rustdoc/latest/src/halo2/plonk/lookup/verifier.rs.html @@ -0,0 +1,440 @@ +verifier.rs - source + + + +
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+ 32
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+ 41
+ 42
+ 43
+ 44
+ 45
+ 46
+ 47
+ 48
+ 49
+ 50
+ 51
+ 52
+ 53
+ 54
+ 55
+ 56
+ 57
+ 58
+ 59
+ 60
+ 61
+ 62
+ 63
+ 64
+ 65
+ 66
+ 67
+ 68
+ 69
+ 70
+ 71
+ 72
+ 73
+ 74
+ 75
+ 76
+ 77
+ 78
+ 79
+ 80
+ 81
+ 82
+ 83
+ 84
+ 85
+ 86
+ 87
+ 88
+ 89
+ 90
+ 91
+ 92
+ 93
+ 94
+ 95
+ 96
+ 97
+ 98
+ 99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+
+use std::iter;
+
+use super::super::{
+    circuit::Expression, ChallengeBeta, ChallengeGamma, ChallengeTheta, ChallengeX,
+};
+use super::Argument;
+use crate::{
+    arithmetic::{CurveAffine, FieldExt},
+    plonk::{Error, VerifyingKey},
+    poly::{multiopen::VerifierQuery, Rotation},
+    transcript::{EncodedChallenge, TranscriptRead},
+};
+use ff::Field;
+
+pub struct PermutationCommitments<C: CurveAffine> {
+    permuted_input_commitment: C,
+    permuted_table_commitment: C,
+}
+
+pub struct Committed<C: CurveAffine> {
+    permuted: PermutationCommitments<C>,
+    product_commitment: C,
+}
+
+pub struct Evaluated<C: CurveAffine> {
+    committed: Committed<C>,
+    product_eval: C::Scalar,
+    product_inv_eval: C::Scalar,
+    permuted_input_eval: C::Scalar,
+    permuted_input_inv_eval: C::Scalar,
+    permuted_table_eval: C::Scalar,
+}
+
+impl<F: FieldExt> Argument<F> {
+    pub(in crate::plonk) fn read_permuted_commitments<
+        C: CurveAffine,
+        E: EncodedChallenge<C>,
+        T: TranscriptRead<C, E>,
+    >(
+        &self,
+        transcript: &mut T,
+    ) -> Result<PermutationCommitments<C>, Error> {
+        let permuted_input_commitment = transcript
+            .read_point()
+            .map_err(|_| Error::TranscriptError)?;
+        let permuted_table_commitment = transcript
+            .read_point()
+            .map_err(|_| Error::TranscriptError)?;
+
+        Ok(PermutationCommitments {
+            permuted_input_commitment,
+            permuted_table_commitment,
+        })
+    }
+}
+
+impl<C: CurveAffine> PermutationCommitments<C> {
+    pub(in crate::plonk) fn read_product_commitment<
+        E: EncodedChallenge<C>,
+        T: TranscriptRead<C, E>,
+    >(
+        self,
+        transcript: &mut T,
+    ) -> Result<Committed<C>, Error> {
+        let product_commitment = transcript
+            .read_point()
+            .map_err(|_| Error::TranscriptError)?;
+
+        Ok(Committed {
+            permuted: self,
+            product_commitment,
+        })
+    }
+}
+
+impl<C: CurveAffine> Committed<C> {
+    pub(crate) fn evaluate<E: EncodedChallenge<C>, T: TranscriptRead<C, E>>(
+        self,
+        transcript: &mut T,
+    ) -> Result<Evaluated<C>, Error> {
+        let product_eval = transcript
+            .read_scalar()
+            .map_err(|_| Error::TranscriptError)?;
+        let product_inv_eval = transcript
+            .read_scalar()
+            .map_err(|_| Error::TranscriptError)?;
+        let permuted_input_eval = transcript
+            .read_scalar()
+            .map_err(|_| Error::TranscriptError)?;
+        let permuted_input_inv_eval = transcript
+            .read_scalar()
+            .map_err(|_| Error::TranscriptError)?;
+        let permuted_table_eval = transcript
+            .read_scalar()
+            .map_err(|_| Error::TranscriptError)?;
+
+        Ok(Evaluated {
+            committed: self,
+            product_eval,
+            product_inv_eval,
+            permuted_input_eval,
+            permuted_input_inv_eval,
+            permuted_table_eval,
+        })
+    }
+}
+
+impl<C: CurveAffine> Evaluated<C> {
+    pub(in crate::plonk) fn expressions<'a>(
+        &'a self,
+        l_0: C::Scalar,
+        argument: &'a Argument<C::Scalar>,
+        theta: ChallengeTheta<C>,
+        beta: ChallengeBeta<C>,
+        gamma: ChallengeGamma<C>,
+        advice_evals: &[C::Scalar],
+        fixed_evals: &[C::Scalar],
+        instance_evals: &[C::Scalar],
+    ) -> impl Iterator<Item = C::Scalar> + 'a {
+        let product_expression = || {
+            // z'(X) (a'(X) + \beta) (s'(X) + \gamma)
+            // - z'(\omega^{-1} X) (\theta^{m-1} a_0(X) + ... + a_{m-1}(X) + \beta) (\theta^{m-1} s_0(X) + ... + s_{m-1}(X) + \gamma)
+            let left = self.product_eval
+                * &(self.permuted_input_eval + &*beta)
+                * &(self.permuted_table_eval + &*gamma);
+
+            let compress_expressions = |expressions: &[Expression<C::Scalar>]| {
+                expressions
+                    .iter()
+                    .map(|expression| {
+                        expression.evaluate(
+                            &|scalar| scalar,
+                            &|index| fixed_evals[index],
+                            &|index| advice_evals[index],
+                            &|index| instance_evals[index],
+                            &|a, b| a + &b,
+                            &|a, b| a * &b,
+                            &|a, scalar| a * &scalar,
+                        )
+                    })
+                    .fold(C::Scalar::zero(), |acc, eval| acc * &*theta + &eval)
+            };
+            let right = self.product_inv_eval
+                * &(compress_expressions(&argument.input_expressions) + &*beta)
+                * &(compress_expressions(&argument.table_expressions) + &*gamma);
+
+            left - &right
+        };
+
+        std::iter::empty()
+            .chain(
+                // l_0(X) * (1 - z'(X)) = 0
+                Some(l_0 * &(C::Scalar::one() - &self.product_eval)),
+            )
+            .chain(
+                // z'(X) (a'(X) + \beta) (s'(X) + \gamma)
+                // - z'(\omega^{-1} X) (\theta^{m-1} a_0(X) + ... + a_{m-1}(X) + \beta) (\theta^{m-1} s_0(X) + ... + s_{m-1}(X) + \gamma)
+                Some(product_expression()),
+            )
+            .chain(Some(
+                // l_0(X) * (a'(X) - s'(X)) = 0
+                l_0 * &(self.permuted_input_eval - &self.permuted_table_eval),
+            ))
+            .chain(Some(
+                // (a′(X)−s′(X))⋅(a′(X)−a′(\omega{-1} X)) = 0
+                (self.permuted_input_eval - &self.permuted_table_eval)
+                    * &(self.permuted_input_eval - &self.permuted_input_inv_eval),
+            ))
+    }
+
+    pub(in crate::plonk) fn queries<'a>(
+        &'a self,
+        vk: &'a VerifyingKey<C>,
+        x: ChallengeX<C>,
+    ) -> impl Iterator<Item = VerifierQuery<'a, C>> + Clone {
+        let x_inv = vk.domain.rotate_omega(*x, Rotation(-1));
+
+        iter::empty()
+            // Open lookup product commitments at x
+            .chain(Some(VerifierQuery {
+                point: *x,
+                commitment: &self.committed.product_commitment,
+                eval: self.product_eval,
+            }))
+            // Open lookup input commitments at x
+            .chain(Some(VerifierQuery {
+                point: *x,
+                commitment: &self.committed.permuted.permuted_input_commitment,
+                eval: self.permuted_input_eval,
+            }))
+            // Open lookup table commitments at x
+            .chain(Some(VerifierQuery {
+                point: *x,
+                commitment: &self.committed.permuted.permuted_table_commitment,
+                eval: self.permuted_table_eval,
+            }))
+            // Open lookup input commitments at \omega^{-1} x
+            .chain(Some(VerifierQuery {
+                point: x_inv,
+                commitment: &self.committed.permuted.permuted_input_commitment,
+                eval: self.permuted_input_inv_eval,
+            }))
+            // Open lookup product commitments at \omega^{-1} x
+            .chain(Some(VerifierQuery {
+                point: x_inv,
+                commitment: &self.committed.product_commitment,
+                eval: self.product_inv_eval,
+            }))
+    }
+}
+
+
+ + \ No newline at end of file diff --git a/rustdoc/latest/src/halo2/plonk/permutation.rs.html b/rustdoc/latest/src/halo2/plonk/permutation.rs.html new file mode 100644 index 00000000..c150c2a2 --- /dev/null +++ b/rustdoc/latest/src/halo2/plonk/permutation.rs.html @@ -0,0 +1,174 @@ +permutation.rs - source + + + +
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+
+//! Implementation of a PLONK permutation argument.
+
+use super::circuit::{Any, Column};
+use crate::{
+    arithmetic::CurveAffine,
+    poly::{Coeff, ExtendedLagrangeCoeff, LagrangeCoeff, Polynomial},
+};
+
+pub(crate) mod keygen;
+pub(crate) mod prover;
+pub(crate) mod verifier;
+
+use std::io;
+
+/// A permutation argument.
+#[derive(Debug, Clone)]
+pub(crate) struct Argument {
+    /// A sequence of columns involved in the argument.
+    columns: Vec<Column<Any>>,
+}
+
+impl Argument {
+    pub(crate) fn new(columns: Vec<Column<Any>>) -> Self {
+        Argument { columns }
+    }
+
+    pub(crate) fn required_degree(&self) -> usize {
+        // The permutation argument will serve alongside the gates, so must be
+        // accounted for. There are constraints of degree 2 regardless of the
+        // number of columns involved. (It doesn't make sense to make a
+        // permutation argument with zero columns but to be rigorous we account
+        // for it here.)
+
+        // degree 2:
+        // l_0(X) * (1 - z(X)) = 0
+        //
+        // degree columns + 1
+        // z(X) \prod (p(X) + \beta s_i(X) + \gamma)
+        // - z(omega^{-1} X) \prod (p(X) + \delta^i \beta X + \gamma)
+        std::cmp::max(self.columns.len() + 1, 2)
+    }
+
+    pub(crate) fn get_columns(&self) -> Vec<Column<Any>> {
+        self.columns.clone()
+    }
+}
+
+/// The verifying key for a single permutation argument.
+#[derive(Debug)]
+pub(crate) struct VerifyingKey<C: CurveAffine> {
+    commitments: Vec<C>,
+}
+
+impl<C: CurveAffine> VerifyingKey<C> {
+    pub(crate) fn write<W: io::Write>(&self, writer: &mut W) -> io::Result<()> {
+        for commitment in &self.commitments {
+            commitment.write(writer)?;
+        }
+
+        Ok(())
+    }
+
+    pub(crate) fn read<R: io::Read>(reader: &mut R, argument: &Argument) -> io::Result<Self> {
+        let commitments = (0..argument.columns.len())
+            .map(|_| C::read(reader))
+            .collect::<Result<Vec<_>, _>>()?;
+        Ok(VerifyingKey { commitments })
+    }
+}
+
+/// The proving key for a single permutation argument.
+#[derive(Debug)]
+pub(crate) struct ProvingKey<C: CurveAffine> {
+    permutations: Vec<Polynomial<C::Scalar, LagrangeCoeff>>,
+    polys: Vec<Polynomial<C::Scalar, Coeff>>,
+    cosets: Vec<Polynomial<C::Scalar, ExtendedLagrangeCoeff>>,
+}
+
+
+ + \ No newline at end of file diff --git a/rustdoc/latest/src/halo2/plonk/permutation/keygen.rs.html b/rustdoc/latest/src/halo2/plonk/permutation/keygen.rs.html new file mode 100644 index 00000000..dd2653b6 --- /dev/null +++ b/rustdoc/latest/src/halo2/plonk/permutation/keygen.rs.html @@ -0,0 +1,410 @@ +keygen.rs - source + + + +
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+ 32
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+ 41
+ 42
+ 43
+ 44
+ 45
+ 46
+ 47
+ 48
+ 49
+ 50
+ 51
+ 52
+ 53
+ 54
+ 55
+ 56
+ 57
+ 58
+ 59
+ 60
+ 61
+ 62
+ 63
+ 64
+ 65
+ 66
+ 67
+ 68
+ 69
+ 70
+ 71
+ 72
+ 73
+ 74
+ 75
+ 76
+ 77
+ 78
+ 79
+ 80
+ 81
+ 82
+ 83
+ 84
+ 85
+ 86
+ 87
+ 88
+ 89
+ 90
+ 91
+ 92
+ 93
+ 94
+ 95
+ 96
+ 97
+ 98
+ 99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+
+use ff::Field;
+use group::Curve;
+
+use super::{Argument, ProvingKey, VerifyingKey};
+use crate::{
+    arithmetic::{CurveAffine, FieldExt},
+    plonk::{circuit::ConstraintSystem, Error},
+    poly::{
+        commitment::{Blind, Params},
+        EvaluationDomain, Rotation,
+    },
+};
+
+pub(crate) struct AssemblyHelper<C: CurveAffine> {
+    deltaomega: Vec<Vec<C::Scalar>>,
+}
+
+#[derive(Debug)]
+pub(crate) struct Assembly {
+    pub(crate) mapping: Vec<Vec<(usize, usize)>>,
+    aux: Vec<Vec<(usize, usize)>>,
+    sizes: Vec<Vec<usize>>,
+}
+
+impl Assembly {
+    pub(crate) fn new(n: usize, p: &Argument) -> Self {
+        // Initialize the copy vector to keep track of copy constraints in all
+        // the permutation arguments.
+        let mut columns = vec![];
+        for i in 0..p.columns.len() {
+            // Computes [(i, 0), (i, 1), ..., (i, n - 1)]
+            columns.push((0..n).map(|j| (i, j)).collect());
+        }
+
+        // Before any equality constraints are applied, every cell in the permutation is
+        // in a 1-cycle; therefore mapping and aux are identical, because every cell is
+        // its own distinguished element.
+        Assembly {
+            mapping: columns.clone(),
+            aux: columns,
+            sizes: vec![vec![1usize; n]; p.columns.len()],
+        }
+    }
+
+    pub(crate) fn copy(
+        &mut self,
+        left_column: usize,
+        left_row: usize,
+        right_column: usize,
+        right_row: usize,
+    ) -> Result<(), Error> {
+        // Check bounds first
+        if left_column >= self.mapping.len()
+            || left_row >= self.mapping[left_column].len()
+            || right_column >= self.mapping.len()
+            || right_row >= self.mapping[right_column].len()
+        {
+            return Err(Error::BoundsFailure);
+        }
+
+        // See book/src/design/permutation.md for a description of this algorithm.
+
+        let mut left_cycle = self.aux[left_column][left_row];
+        let mut right_cycle = self.aux[right_column][right_row];
+
+        // If left and right are in the same cycle, do nothing.
+        if left_cycle == right_cycle {
+            return Ok(());
+        }
+
+        if self.sizes[left_cycle.0][left_cycle.1] < self.sizes[right_cycle.0][right_cycle.1] {
+            std::mem::swap(&mut left_cycle, &mut right_cycle);
+        }
+
+        // Merge the right cycle into the left one.
+        self.sizes[left_cycle.0][left_cycle.1] += self.sizes[right_cycle.0][right_cycle.1];
+        let mut i = right_cycle;
+        loop {
+            self.aux[i.0][i.1] = left_cycle;
+            i = self.mapping[i.0][i.1];
+            if i == right_cycle {
+                break;
+            }
+        }
+
+        let tmp = self.mapping[left_column][left_row];
+        self.mapping[left_column][left_row] = self.mapping[right_column][right_row];
+        self.mapping[right_column][right_row] = tmp;
+
+        Ok(())
+    }
+
+    pub(crate) fn build_helper<C: CurveAffine>(
+        params: &Params<C>,
+        cs: &ConstraintSystem<C::Scalar>,
+        domain: &EvaluationDomain<C::Scalar>,
+    ) -> AssemblyHelper<C> {
+        // Get the largest permutation argument length in terms of the number of
+        // advice columns involved.
+        let largest_permutation_length = cs
+            .permutations
+            .iter()
+            .map(|p| p.columns.len())
+            .max()
+            .unwrap_or_default();
+
+        // Compute [omega^0, omega^1, ..., omega^{params.n - 1}]
+        let mut omega_powers = Vec::with_capacity(params.n as usize);
+        {
+            let mut cur = C::Scalar::one();
+            for _ in 0..params.n {
+                omega_powers.push(cur);
+                cur *= &domain.get_omega();
+            }
+        }
+
+        // Compute [omega_powers * \delta^0, omega_powers * \delta^1, ..., omega_powers * \delta^m]
+        let mut deltaomega = Vec::with_capacity(largest_permutation_length);
+        {
+            let mut cur = C::Scalar::one();
+            for _ in 0..largest_permutation_length {
+                let mut omega_powers = omega_powers.clone();
+                for o in &mut omega_powers {
+                    *o *= &cur;
+                }
+
+                deltaomega.push(omega_powers);
+
+                cur *= &C::Scalar::DELTA;
+            }
+        }
+
+        AssemblyHelper { deltaomega }
+    }
+
+    pub(crate) fn build_vk<C: CurveAffine>(
+        self,
+        params: &Params<C>,
+        domain: &EvaluationDomain<C::Scalar>,
+        helper: &AssemblyHelper<C>,
+        p: &Argument,
+    ) -> VerifyingKey<C> {
+        // Pre-compute commitments for the URS.
+        let mut commitments = vec![];
+        for i in 0..p.columns.len() {
+            // Computes the permutation polynomial based on the permutation
+            // description in the assembly.
+            let mut permutation_poly = domain.empty_lagrange();
+            for (j, p) in permutation_poly.iter_mut().enumerate() {
+                let (permuted_i, permuted_j) = self.mapping[i][j];
+                *p = helper.deltaomega[permuted_i][permuted_j];
+            }
+
+            // Compute commitment to permutation polynomial
+            commitments.push(
+                params
+                    .commit_lagrange(&permutation_poly, Blind::default())
+                    .to_affine(),
+            );
+        }
+        VerifyingKey { commitments }
+    }
+
+    pub(crate) fn build_pk<C: CurveAffine>(
+        self,
+        domain: &EvaluationDomain<C::Scalar>,
+        helper: &AssemblyHelper<C>,
+        p: &Argument,
+    ) -> ProvingKey<C> {
+        // Compute permutation polynomials, convert to coset form.
+        let mut permutations = vec![];
+        let mut polys = vec![];
+        let mut cosets = vec![];
+        for i in 0..p.columns.len() {
+            // Computes the permutation polynomial based on the permutation
+            // description in the assembly.
+            let mut permutation_poly = domain.empty_lagrange();
+            for (j, p) in permutation_poly.iter_mut().enumerate() {
+                let (permuted_i, permuted_j) = self.mapping[i][j];
+                *p = helper.deltaomega[permuted_i][permuted_j];
+            }
+
+            // Store permutation polynomial and precompute its coset evaluation
+            permutations.push(permutation_poly.clone());
+            let poly = domain.lagrange_to_coeff(permutation_poly);
+            polys.push(poly.clone());
+            cosets.push(domain.coeff_to_extended(poly, Rotation::cur()));
+        }
+        ProvingKey {
+            permutations,
+            polys,
+            cosets,
+        }
+    }
+}
+
+
+ + \ No newline at end of file diff --git a/rustdoc/latest/src/halo2/plonk/permutation/prover.rs.html b/rustdoc/latest/src/halo2/plonk/permutation/prover.rs.html new file mode 100644 index 00000000..3423ff67 --- /dev/null +++ b/rustdoc/latest/src/halo2/plonk/permutation/prover.rs.html @@ -0,0 +1,654 @@ +prover.rs - source + + + +
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+ 32
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+ 41
+ 42
+ 43
+ 44
+ 45
+ 46
+ 47
+ 48
+ 49
+ 50
+ 51
+ 52
+ 53
+ 54
+ 55
+ 56
+ 57
+ 58
+ 59
+ 60
+ 61
+ 62
+ 63
+ 64
+ 65
+ 66
+ 67
+ 68
+ 69
+ 70
+ 71
+ 72
+ 73
+ 74
+ 75
+ 76
+ 77
+ 78
+ 79
+ 80
+ 81
+ 82
+ 83
+ 84
+ 85
+ 86
+ 87
+ 88
+ 89
+ 90
+ 91
+ 92
+ 93
+ 94
+ 95
+ 96
+ 97
+ 98
+ 99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+
+use ff::Field;
+use group::Curve;
+use std::iter;
+
+use super::super::{circuit::Any, ChallengeBeta, ChallengeGamma, ChallengeX};
+use super::{Argument, ProvingKey};
+use crate::{
+    arithmetic::{eval_polynomial, parallelize, BatchInvert, CurveAffine, FieldExt},
+    plonk::{self, Error},
+    poly::{
+        commitment::{Blind, Params},
+        multiopen::ProverQuery,
+        Coeff, ExtendedLagrangeCoeff, LagrangeCoeff, Polynomial, Rotation,
+    },
+    transcript::{EncodedChallenge, TranscriptWrite},
+};
+
+pub(crate) struct Committed<C: CurveAffine> {
+    permutation_product_poly: Polynomial<C::Scalar, Coeff>,
+    permutation_product_coset: Polynomial<C::Scalar, ExtendedLagrangeCoeff>,
+    permutation_product_coset_inv: Polynomial<C::Scalar, ExtendedLagrangeCoeff>,
+    permutation_product_blind: Blind<C::Scalar>,
+}
+
+pub(crate) struct Constructed<C: CurveAffine> {
+    permutation_product_poly: Polynomial<C::Scalar, Coeff>,
+    permutation_product_blind: Blind<C::Scalar>,
+}
+
+pub(crate) struct Evaluated<C: CurveAffine> {
+    constructed: Constructed<C>,
+}
+
+impl Argument {
+    pub(in crate::plonk) fn commit<
+        C: CurveAffine,
+        E: EncodedChallenge<C>,
+        T: TranscriptWrite<C, E>,
+    >(
+        &self,
+        params: &Params<C>,
+        pk: &plonk::ProvingKey<C>,
+        pkey: &ProvingKey<C>,
+        advice: &[Polynomial<C::Scalar, LagrangeCoeff>],
+        fixed: &[Polynomial<C::Scalar, LagrangeCoeff>],
+        instance: &[Polynomial<C::Scalar, LagrangeCoeff>],
+        beta: ChallengeBeta<C>,
+        gamma: ChallengeGamma<C>,
+        transcript: &mut T,
+    ) -> Result<Committed<C>, Error> {
+        let domain = &pk.vk.domain;
+
+        // Goal is to compute the products of fractions
+        //
+        // (p_j(\omega^i) + \delta^j \omega^i \beta + \gamma) /
+        // (p_j(\omega^i) + \beta s_j(\omega^i) + \gamma)
+        //
+        // where p_j(X) is the jth column in this permutation,
+        // and i is the ith row of the column.
+
+        let mut modified_values = vec![C::Scalar::one(); params.n as usize];
+
+        // Iterate over each column of the permutation
+        for (&column, permuted_column_values) in self.columns.iter().zip(pkey.permutations.iter()) {
+            let values = match column.column_type() {
+                Any::Advice => advice,
+                Any::Fixed => fixed,
+                Any::Instance => instance,
+            };
+            parallelize(&mut modified_values, |modified_values, start| {
+                for ((modified_values, value), permuted_value) in modified_values
+                    .iter_mut()
+                    .zip(values[column.index()][start..].iter())
+                    .zip(permuted_column_values[start..].iter())
+                {
+                    *modified_values *= &(*beta * permuted_value + &*gamma + value);
+                }
+            });
+        }
+
+        // Invert to obtain the denominator for the permutation product polynomial
+        modified_values.batch_invert();
+
+        // Iterate over each column again, this time finishing the computation
+        // of the entire fraction by computing the numerators
+        let mut deltaomega = C::Scalar::one();
+        for &column in self.columns.iter() {
+            let omega = domain.get_omega();
+            let values = match column.column_type() {
+                Any::Advice => advice,
+                Any::Fixed => fixed,
+                Any::Instance => instance,
+            };
+            parallelize(&mut modified_values, |modified_values, start| {
+                let mut deltaomega = deltaomega * &omega.pow_vartime(&[start as u64, 0, 0, 0]);
+                for (modified_values, value) in modified_values
+                    .iter_mut()
+                    .zip(values[column.index()][start..].iter())
+                {
+                    // Multiply by p_j(\omega^i) + \delta^j \omega^i \beta
+                    *modified_values *= &(deltaomega * &*beta + &*gamma + value);
+                    deltaomega *= &omega;
+                }
+            });
+            deltaomega *= &C::Scalar::DELTA;
+        }
+
+        // The modified_values vector is a vector of products of fractions
+        // of the form
+        //
+        // (p_j(\omega^i) + \delta^j \omega^i \beta + \gamma) /
+        // (p_j(\omega^i) + \beta s_j(\omega^i) + \gamma)
+        //
+        // where i is the index into modified_values, for the jth column in
+        // the permutation
+
+        // Compute the evaluations of the permutation product polynomial
+        // over our domain, starting with z[0] = 1
+        let mut z = vec![C::Scalar::one()];
+        for row in 1..(params.n as usize) {
+            let mut tmp = z[row - 1];
+
+            tmp *= &modified_values[row];
+            z.push(tmp);
+        }
+        let z = domain.lagrange_from_vec(z);
+
+        let blind = Blind(C::Scalar::rand());
+
+        let permutation_product_commitment_projective = params.commit_lagrange(&z, blind);
+        let permutation_product_blind = blind;
+        let z = domain.lagrange_to_coeff(z);
+        let permutation_product_poly = z.clone();
+        let permutation_product_coset = domain.coeff_to_extended(z.clone(), Rotation::cur());
+        let permutation_product_coset_inv = domain.coeff_to_extended(z, Rotation::prev());
+
+        let permutation_product_commitment = permutation_product_commitment_projective.to_affine();
+
+        // Hash the permutation product commitment
+        transcript
+            .write_point(permutation_product_commitment)
+            .map_err(|_| Error::TranscriptError)?;
+
+        Ok(Committed {
+            permutation_product_poly,
+            permutation_product_coset,
+            permutation_product_coset_inv,
+            permutation_product_blind,
+        })
+    }
+}
+
+impl<C: CurveAffine> Committed<C> {
+    pub(in crate::plonk) fn construct<'a>(
+        self,
+        pk: &'a plonk::ProvingKey<C>,
+        p: &'a Argument,
+        pkey: &'a ProvingKey<C>,
+        advice_cosets: &'a [Polynomial<C::Scalar, ExtendedLagrangeCoeff>],
+        fixed_cosets: &'a [Polynomial<C::Scalar, ExtendedLagrangeCoeff>],
+        instance_cosets: &'a [Polynomial<C::Scalar, ExtendedLagrangeCoeff>],
+        beta: ChallengeBeta<C>,
+        gamma: ChallengeGamma<C>,
+    ) -> (
+        Constructed<C>,
+        impl Iterator<Item = Polynomial<C::Scalar, ExtendedLagrangeCoeff>> + 'a,
+    ) {
+        let domain = &pk.vk.domain;
+        let expressions = iter::empty()
+            // l_0(X) * (1 - z(X)) = 0
+            .chain(Some(
+                Polynomial::one_minus(self.permutation_product_coset.clone()) * &pk.l0,
+            ))
+            // z(X) \prod (p(X) + \beta s_i(X) + \gamma) - z(omega^{-1} X) \prod (p(X) + \delta^i \beta X + \gamma)
+            .chain(Some({
+                let mut left = self.permutation_product_coset.clone();
+                for (values, permutation) in p
+                    .columns
+                    .iter()
+                    .map(|&column| match column.column_type() {
+                        Any::Advice => {
+                            &advice_cosets[pk.vk.cs.get_any_query_index(column, Rotation::cur())]
+                        }
+                        Any::Fixed => {
+                            &fixed_cosets[pk.vk.cs.get_any_query_index(column, Rotation::cur())]
+                        }
+                        Any::Instance => {
+                            &instance_cosets[pk.vk.cs.get_any_query_index(column, Rotation::cur())]
+                        }
+                    })
+                    .zip(pkey.cosets.iter())
+                {
+                    parallelize(&mut left, |left, start| {
+                        for ((left, value), permutation) in left
+                            .iter_mut()
+                            .zip(values[start..].iter())
+                            .zip(permutation[start..].iter())
+                        {
+                            *left *= &(*value + &(*beta * permutation) + &*gamma);
+                        }
+                    });
+                }
+
+                let mut right = self.permutation_product_coset_inv.clone();
+                let mut current_delta = *beta * &C::Scalar::ZETA;
+                let step = domain.get_extended_omega();
+                for values in p.columns.iter().map(|&column| match column.column_type() {
+                    Any::Advice => {
+                        &advice_cosets[pk.vk.cs.get_any_query_index(column, Rotation::cur())]
+                    }
+                    Any::Fixed => {
+                        &fixed_cosets[pk.vk.cs.get_any_query_index(column, Rotation::cur())]
+                    }
+                    Any::Instance => {
+                        &instance_cosets[pk.vk.cs.get_any_query_index(column, Rotation::cur())]
+                    }
+                }) {
+                    parallelize(&mut right, move |right, start| {
+                        let mut beta_term =
+                            current_delta * &step.pow_vartime(&[start as u64, 0, 0, 0]);
+                        for (right, value) in right.iter_mut().zip(values[start..].iter()) {
+                            *right *= &(*value + &beta_term + &*gamma);
+                            beta_term *= &step;
+                        }
+                    });
+                    current_delta *= &C::Scalar::DELTA;
+                }
+
+                left - &right
+            }));
+
+        (
+            Constructed {
+                permutation_product_poly: self.permutation_product_poly,
+                permutation_product_blind: self.permutation_product_blind,
+            },
+            expressions,
+        )
+    }
+}
+
+impl<C: CurveAffine> super::ProvingKey<C> {
+    fn evaluate(&self, x: ChallengeX<C>) -> Vec<C::Scalar> {
+        self.polys
+            .iter()
+            .map(|poly| eval_polynomial(poly, *x))
+            .collect()
+    }
+
+    fn open(&self, x: ChallengeX<C>) -> impl Iterator<Item = ProverQuery<'_, C>> + Clone {
+        self.polys.iter().map(move |poly| ProverQuery {
+            point: *x,
+            poly,
+            blind: Blind::default(),
+        })
+    }
+}
+
+impl<C: CurveAffine> Constructed<C> {
+    pub(in crate::plonk) fn evaluate<E: EncodedChallenge<C>, T: TranscriptWrite<C, E>>(
+        self,
+        pk: &plonk::ProvingKey<C>,
+        pkey: &ProvingKey<C>,
+        x: ChallengeX<C>,
+        transcript: &mut T,
+    ) -> Result<Evaluated<C>, Error> {
+        let domain = &pk.vk.domain;
+
+        let permutation_product_eval = eval_polynomial(&self.permutation_product_poly, *x);
+
+        let permutation_product_inv_eval = eval_polynomial(
+            &self.permutation_product_poly,
+            domain.rotate_omega(*x, Rotation(-1)),
+        );
+
+        let permutation_evals = pkey.evaluate(x);
+
+        // Hash permutation product evals
+        for eval in iter::empty()
+            .chain(Some(&permutation_product_eval))
+            .chain(Some(&permutation_product_inv_eval))
+            .chain(permutation_evals.iter())
+        {
+            transcript
+                .write_scalar(*eval)
+                .map_err(|_| Error::TranscriptError)?;
+        }
+
+        Ok(Evaluated { constructed: self })
+    }
+}
+
+impl<C: CurveAffine> Evaluated<C> {
+    pub(in crate::plonk) fn open<'a>(
+        &'a self,
+        pk: &'a plonk::ProvingKey<C>,
+        pkey: &'a ProvingKey<C>,
+        x: ChallengeX<C>,
+    ) -> impl Iterator<Item = ProverQuery<'a, C>> + Clone {
+        let x_inv = pk.vk.domain.rotate_omega(*x, Rotation(-1));
+
+        iter::empty()
+            // Open permutation product commitments at x and \omega^{-1} x
+            .chain(Some(ProverQuery {
+                point: *x,
+                poly: &self.constructed.permutation_product_poly,
+                blind: self.constructed.permutation_product_blind,
+            }))
+            .chain(Some(ProverQuery {
+                point: x_inv,
+                poly: &self.constructed.permutation_product_poly,
+                blind: self.constructed.permutation_product_blind,
+            }))
+            // Open permutation polynomial commitments at x
+            .chain(pkey.open(x))
+    }
+}
+
+
+ + \ No newline at end of file diff --git a/rustdoc/latest/src/halo2/plonk/permutation/verifier.rs.html b/rustdoc/latest/src/halo2/plonk/permutation/verifier.rs.html new file mode 100644 index 00000000..3f7a9e67 --- /dev/null +++ b/rustdoc/latest/src/halo2/plonk/permutation/verifier.rs.html @@ -0,0 +1,346 @@ +verifier.rs - source + + + +
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+ 32
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+ 41
+ 42
+ 43
+ 44
+ 45
+ 46
+ 47
+ 48
+ 49
+ 50
+ 51
+ 52
+ 53
+ 54
+ 55
+ 56
+ 57
+ 58
+ 59
+ 60
+ 61
+ 62
+ 63
+ 64
+ 65
+ 66
+ 67
+ 68
+ 69
+ 70
+ 71
+ 72
+ 73
+ 74
+ 75
+ 76
+ 77
+ 78
+ 79
+ 80
+ 81
+ 82
+ 83
+ 84
+ 85
+ 86
+ 87
+ 88
+ 89
+ 90
+ 91
+ 92
+ 93
+ 94
+ 95
+ 96
+ 97
+ 98
+ 99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+
+use ff::Field;
+use std::iter;
+
+use super::super::{circuit::Any, ChallengeBeta, ChallengeGamma, ChallengeX};
+use super::{Argument, VerifyingKey};
+use crate::{
+    arithmetic::{CurveAffine, FieldExt},
+    plonk::{self, Error},
+    poly::{multiopen::VerifierQuery, Rotation},
+    transcript::{EncodedChallenge, TranscriptRead},
+};
+
+pub struct Committed<C: CurveAffine> {
+    permutation_product_commitment: C,
+}
+
+pub struct Evaluated<C: CurveAffine> {
+    permutation_product_commitment: C,
+    permutation_product_eval: C::Scalar,
+    permutation_product_inv_eval: C::Scalar,
+    permutation_evals: Vec<C::Scalar>,
+}
+
+impl Argument {
+    pub(crate) fn read_product_commitment<
+        C: CurveAffine,
+        E: EncodedChallenge<C>,
+        T: TranscriptRead<C, E>,
+    >(
+        &self,
+        transcript: &mut T,
+    ) -> Result<Committed<C>, Error> {
+        let permutation_product_commitment = transcript
+            .read_point()
+            .map_err(|_| Error::TranscriptError)?;
+
+        Ok(Committed {
+            permutation_product_commitment,
+        })
+    }
+}
+
+impl<C: CurveAffine> Committed<C> {
+    pub(crate) fn evaluate<E: EncodedChallenge<C>, T: TranscriptRead<C, E>>(
+        self,
+        vkey: &VerifyingKey<C>,
+        transcript: &mut T,
+    ) -> Result<Evaluated<C>, Error> {
+        let permutation_product_eval = transcript
+            .read_scalar()
+            .map_err(|_| Error::TranscriptError)?;
+        let permutation_product_inv_eval = transcript
+            .read_scalar()
+            .map_err(|_| Error::TranscriptError)?;
+        let mut permutation_evals = Vec::with_capacity(vkey.commitments.len());
+        for _ in 0..vkey.commitments.len() {
+            permutation_evals.push(
+                transcript
+                    .read_scalar()
+                    .map_err(|_| Error::TranscriptError)?,
+            );
+        }
+
+        Ok(Evaluated {
+            permutation_product_commitment: self.permutation_product_commitment,
+            permutation_product_eval,
+            permutation_product_inv_eval,
+            permutation_evals,
+        })
+    }
+}
+
+impl<C: CurveAffine> Evaluated<C> {
+    pub(in crate::plonk) fn expressions<'a>(
+        &'a self,
+        vk: &'a plonk::VerifyingKey<C>,
+        p: &'a Argument,
+        advice_evals: &'a [C::Scalar],
+        fixed_evals: &[C::Scalar],
+        instance_evals: &'a [C::Scalar],
+        l_0: C::Scalar,
+        beta: ChallengeBeta<C>,
+        gamma: ChallengeGamma<C>,
+        x: ChallengeX<C>,
+    ) -> impl Iterator<Item = C::Scalar> + 'a {
+        iter::empty()
+            // l_0(X) * (1 - z(X)) = 0
+            .chain(Some(
+                l_0 * &(C::Scalar::one() - &self.permutation_product_eval),
+            ))
+            // z(X) \prod (p(X) + \beta s_i(X) + \gamma)
+            // - z(omega^{-1} X) \prod (p(X) + \delta^i \beta X + \gamma)
+            .chain(Some({
+                let mut left = self.permutation_product_eval;
+                for (eval, permutation_eval) in p
+                    .columns
+                    .iter()
+                    .map(|&column| match column.column_type() {
+                        Any::Advice => {
+                            advice_evals[vk.cs.get_any_query_index(column, Rotation::cur())]
+                        }
+                        Any::Fixed => {
+                            fixed_evals[vk.cs.get_any_query_index(column, Rotation::cur())]
+                        }
+                        Any::Instance => {
+                            instance_evals[vk.cs.get_any_query_index(column, Rotation::cur())]
+                        }
+                    })
+                    .zip(self.permutation_evals.iter())
+                {
+                    left *= &(eval + &(*beta * permutation_eval) + &*gamma);
+                }
+
+                let mut right = self.permutation_product_inv_eval;
+                let mut current_delta = *beta * &*x;
+                for eval in p.columns.iter().map(|&column| match column.column_type() {
+                    Any::Advice => advice_evals[vk.cs.get_any_query_index(column, Rotation::cur())],
+                    Any::Fixed => fixed_evals[vk.cs.get_any_query_index(column, Rotation::cur())],
+                    Any::Instance => {
+                        instance_evals[vk.cs.get_any_query_index(column, Rotation::cur())]
+                    }
+                }) {
+                    right *= &(eval + &current_delta + &*gamma);
+                    current_delta *= &C::Scalar::DELTA;
+                }
+
+                left - &right
+            }))
+    }
+
+    pub(in crate::plonk) fn queries<'a>(
+        &'a self,
+        vk: &'a plonk::VerifyingKey<C>,
+        vkey: &'a VerifyingKey<C>,
+        x: ChallengeX<C>,
+    ) -> impl Iterator<Item = VerifierQuery<'a, C>> + Clone {
+        let x_inv = vk.domain.rotate_omega(*x, Rotation(-1));
+
+        iter::empty()
+            // Open permutation product commitments at x and \omega^{-1} x
+            .chain(Some(VerifierQuery {
+                point: *x,
+                commitment: &self.permutation_product_commitment,
+                eval: self.permutation_product_eval,
+            }))
+            .chain(Some(VerifierQuery {
+                point: x_inv,
+                commitment: &self.permutation_product_commitment,
+                eval: self.permutation_product_inv_eval,
+            }))
+            // Open permutation commitments for each permutation argument at x
+            .chain(
+                vkey.commitments
+                    .iter()
+                    .zip(self.permutation_evals.iter())
+                    .map(move |(commitment, &eval)| VerifierQuery {
+                        point: *x,
+                        commitment,
+                        eval,
+                    }),
+            )
+    }
+}
+
+
+ + \ No newline at end of file diff --git a/rustdoc/latest/src/halo2/plonk/prover.rs.html b/rustdoc/latest/src/halo2/plonk/prover.rs.html new file mode 100644 index 00000000..5427d64f --- /dev/null +++ b/rustdoc/latest/src/halo2/plonk/prover.rs.html @@ -0,0 +1,1128 @@ +prover.rs - source + + + +
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+ 32
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+ 41
+ 42
+ 43
+ 44
+ 45
+ 46
+ 47
+ 48
+ 49
+ 50
+ 51
+ 52
+ 53
+ 54
+ 55
+ 56
+ 57
+ 58
+ 59
+ 60
+ 61
+ 62
+ 63
+ 64
+ 65
+ 66
+ 67
+ 68
+ 69
+ 70
+ 71
+ 72
+ 73
+ 74
+ 75
+ 76
+ 77
+ 78
+ 79
+ 80
+ 81
+ 82
+ 83
+ 84
+ 85
+ 86
+ 87
+ 88
+ 89
+ 90
+ 91
+ 92
+ 93
+ 94
+ 95
+ 96
+ 97
+ 98
+ 99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
+399
+400
+401
+402
+403
+404
+405
+406
+407
+408
+409
+410
+411
+412
+413
+414
+415
+416
+417
+418
+419
+420
+421
+422
+423
+424
+425
+426
+427
+428
+429
+430
+431
+432
+433
+434
+435
+436
+437
+438
+439
+440
+441
+442
+443
+444
+445
+446
+447
+448
+449
+450
+451
+452
+453
+454
+455
+456
+457
+458
+459
+460
+461
+462
+463
+464
+465
+466
+467
+468
+469
+470
+471
+472
+473
+474
+475
+476
+477
+478
+479
+480
+481
+482
+483
+484
+485
+486
+487
+488
+489
+490
+491
+492
+493
+494
+495
+496
+497
+498
+499
+500
+501
+502
+503
+504
+505
+506
+507
+508
+509
+510
+511
+512
+513
+514
+515
+516
+517
+518
+519
+520
+521
+522
+523
+524
+525
+526
+527
+528
+529
+530
+531
+532
+533
+534
+535
+536
+537
+538
+539
+540
+541
+542
+543
+544
+545
+546
+547
+548
+549
+550
+551
+552
+553
+554
+
+use ff::Field;
+use group::Curve;
+use std::iter;
+
+use super::{
+    circuit::{
+        Advice, Any, Assignment, Circuit, Column, ConstraintSystem, Fixed, FloorPlanner, Selector,
+    },
+    lookup, permutation, vanishing, ChallengeBeta, ChallengeGamma, ChallengeTheta, ChallengeX,
+    ChallengeY, Error, Permutation, ProvingKey,
+};
+use crate::poly::{
+    commitment::{Blind, Params},
+    multiopen::{self, ProverQuery},
+    Coeff, ExtendedLagrangeCoeff, LagrangeCoeff, Polynomial,
+};
+use crate::{
+    arithmetic::{eval_polynomial, CurveAffine, FieldExt},
+    plonk::Assigned,
+};
+use crate::{
+    poly::batch_invert_assigned,
+    transcript::{EncodedChallenge, TranscriptWrite},
+};
+
+/// This creates a proof for the provided `circuit` when given the public
+/// parameters `params` and the proving key [`ProvingKey`] that was
+/// generated previously for the same circuit.
+pub fn create_proof<
+    C: CurveAffine,
+    E: EncodedChallenge<C>,
+    T: TranscriptWrite<C, E>,
+    ConcreteCircuit: Circuit<C::Scalar>,
+>(
+    params: &Params<C>,
+    pk: &ProvingKey<C>,
+    circuits: &[ConcreteCircuit],
+    instances: &[&[Polynomial<C::Scalar, LagrangeCoeff>]],
+    transcript: &mut T,
+) -> Result<(), Error> {
+    for instance in instances.iter() {
+        if instance.len() != pk.vk.cs.num_instance_columns {
+            return Err(Error::IncompatibleParams);
+        }
+    }
+
+    // Hash verification key into transcript
+    pk.vk
+        .hash_into(transcript)
+        .map_err(|_| Error::TranscriptError)?;
+
+    let domain = &pk.vk.domain;
+    let mut meta = ConstraintSystem::default();
+    let config = ConcreteCircuit::configure(&mut meta);
+
+    struct InstanceSingle<'a, C: CurveAffine> {
+        pub instance_values: &'a [Polynomial<C::Scalar, LagrangeCoeff>],
+        pub instance_polys: Vec<Polynomial<C::Scalar, Coeff>>,
+        pub instance_cosets: Vec<Polynomial<C::Scalar, ExtendedLagrangeCoeff>>,
+    }
+
+    let instance: Vec<InstanceSingle<C>> = instances
+        .iter()
+        .map(|instance| -> Result<InstanceSingle<C>, Error> {
+            let instance_commitments_projective: Vec<_> = instance
+                .iter()
+                .map(|poly| params.commit_lagrange(poly, Blind::default()))
+                .collect();
+            let mut instance_commitments =
+                vec![C::identity(); instance_commitments_projective.len()];
+            C::Curve::batch_normalize(&instance_commitments_projective, &mut instance_commitments);
+            let instance_commitments = instance_commitments;
+            drop(instance_commitments_projective);
+
+            for commitment in &instance_commitments {
+                transcript
+                    .common_point(*commitment)
+                    .map_err(|_| Error::TranscriptError)?;
+            }
+
+            let instance_polys: Vec<_> = instance
+                .iter()
+                .map(|poly| {
+                    let lagrange_vec = domain.lagrange_from_vec(poly.to_vec());
+                    domain.lagrange_to_coeff(lagrange_vec)
+                })
+                .collect();
+
+            let instance_cosets: Vec<_> = meta
+                .instance_queries
+                .iter()
+                .map(|&(column, at)| {
+                    let poly = instance_polys[column.index()].clone();
+                    domain.coeff_to_extended(poly, at)
+                })
+                .collect();
+
+            Ok(InstanceSingle {
+                instance_values: *instance,
+                instance_polys,
+                instance_cosets,
+            })
+        })
+        .collect::<Result<Vec<_>, _>>()?;
+
+    struct AdviceSingle<C: CurveAffine> {
+        pub advice_values: Vec<Polynomial<C::Scalar, LagrangeCoeff>>,
+        pub advice_polys: Vec<Polynomial<C::Scalar, Coeff>>,
+        pub advice_cosets: Vec<Polynomial<C::Scalar, ExtendedLagrangeCoeff>>,
+        pub advice_blinds: Vec<Blind<C::Scalar>>,
+    }
+
+    let advice: Vec<AdviceSingle<C>> = circuits
+        .iter()
+        .map(|circuit| -> Result<AdviceSingle<C>, Error> {
+            struct WitnessCollection<F: Field> {
+                pub advice: Vec<Polynomial<Assigned<F>, LagrangeCoeff>>,
+                _marker: std::marker::PhantomData<F>,
+            }
+
+            impl<F: Field> Assignment<F> for WitnessCollection<F> {
+                fn enter_region<NR, N>(&mut self, _: N)
+                where
+                    NR: Into<String>,
+                    N: FnOnce() -> NR,
+                {
+                    // Do nothing; we don't care about regions in this context.
+                }
+
+                fn exit_region(&mut self) {
+                    // Do nothing; we don't care about regions in this context.
+                }
+
+                fn enable_selector<A, AR>(
+                    &mut self,
+                    _: A,
+                    _: &Selector,
+                    _: usize,
+                ) -> Result<(), Error>
+                where
+                    A: FnOnce() -> AR,
+                    AR: Into<String>,
+                {
+                    // We only care about advice columns here
+
+                    Ok(())
+                }
+
+                fn assign_advice<V, VR, A, AR>(
+                    &mut self,
+                    _: A,
+                    column: Column<Advice>,
+                    row: usize,
+                    to: V,
+                ) -> Result<(), Error>
+                where
+                    V: FnOnce() -> Result<VR, Error>,
+                    VR: Into<Assigned<F>>,
+                    A: FnOnce() -> AR,
+                    AR: Into<String>,
+                {
+                    *self
+                        .advice
+                        .get_mut(column.index())
+                        .and_then(|v| v.get_mut(row))
+                        .ok_or(Error::BoundsFailure)? = to()?.into();
+
+                    Ok(())
+                }
+
+                fn assign_fixed<V, VR, A, AR>(
+                    &mut self,
+                    _: A,
+                    _: Column<Fixed>,
+                    _: usize,
+                    _: V,
+                ) -> Result<(), Error>
+                where
+                    V: FnOnce() -> Result<VR, Error>,
+                    VR: Into<Assigned<F>>,
+                    A: FnOnce() -> AR,
+                    AR: Into<String>,
+                {
+                    // We only care about advice columns here
+
+                    Ok(())
+                }
+
+                fn copy(
+                    &mut self,
+                    _: &Permutation,
+                    _: Column<Any>,
+                    _: usize,
+                    _: Column<Any>,
+                    _: usize,
+                ) -> Result<(), Error> {
+                    // We only care about advice columns here
+
+                    Ok(())
+                }
+
+                fn push_namespace<NR, N>(&mut self, _: N)
+                where
+                    NR: Into<String>,
+                    N: FnOnce() -> NR,
+                {
+                    // Do nothing; we don't care about namespaces in this context.
+                }
+
+                fn pop_namespace(&mut self, _: Option<String>) {
+                    // Do nothing; we don't care about namespaces in this context.
+                }
+            }
+
+            let mut witness = WitnessCollection {
+                advice: vec![domain.empty_lagrange_assigned(); meta.num_advice_columns],
+                _marker: std::marker::PhantomData,
+            };
+
+            // Synthesize the circuit to obtain the witness and other information.
+            ConcreteCircuit::FloorPlanner::synthesize(&mut witness, circuit, config.clone())?;
+
+            let advice = batch_invert_assigned(&witness.advice);
+
+            // Compute commitments to advice column polynomials
+            let advice_blinds: Vec<_> = advice.iter().map(|_| Blind(C::Scalar::rand())).collect();
+            let advice_commitments_projective: Vec<_> = advice
+                .iter()
+                .zip(advice_blinds.iter())
+                .map(|(poly, blind)| params.commit_lagrange(poly, *blind))
+                .collect();
+            let mut advice_commitments = vec![C::identity(); advice_commitments_projective.len()];
+            C::Curve::batch_normalize(&advice_commitments_projective, &mut advice_commitments);
+            let advice_commitments = advice_commitments;
+            drop(advice_commitments_projective);
+
+            for commitment in &advice_commitments {
+                transcript
+                    .write_point(*commitment)
+                    .map_err(|_| Error::TranscriptError)?;
+            }
+
+            let advice_polys: Vec<_> = advice
+                .clone()
+                .into_iter()
+                .map(|poly| domain.lagrange_to_coeff(poly))
+                .collect();
+
+            let advice_cosets: Vec<_> = meta
+                .advice_queries
+                .iter()
+                .map(|&(column, at)| {
+                    let poly = advice_polys[column.index()].clone();
+                    domain.coeff_to_extended(poly, at)
+                })
+                .collect();
+
+            Ok(AdviceSingle {
+                advice_values: advice,
+                advice_polys,
+                advice_cosets,
+                advice_blinds,
+            })
+        })
+        .collect::<Result<Vec<_>, _>>()?;
+
+    // Sample theta challenge for keeping lookup columns linearly independent
+    let theta: ChallengeTheta<_> = transcript.squeeze_challenge_scalar();
+
+    let lookups: Vec<Vec<lookup::prover::Permuted<C>>> = instance
+        .iter()
+        .zip(advice.iter())
+        .map(|(instance, advice)| -> Result<Vec<_>, Error> {
+            // Construct and commit to permuted values for each lookup
+            pk.vk
+                .cs
+                .lookups
+                .iter()
+                .map(|lookup| {
+                    lookup.commit_permuted(
+                        pk,
+                        params,
+                        domain,
+                        theta,
+                        &advice.advice_values,
+                        &pk.fixed_values,
+                        instance.instance_values,
+                        &advice.advice_cosets,
+                        &pk.fixed_cosets,
+                        &instance.instance_cosets,
+                        transcript,
+                    )
+                })
+                .collect()
+        })
+        .collect::<Result<Vec<_>, _>>()?;
+
+    // Sample beta challenge
+    let beta: ChallengeBeta<_> = transcript.squeeze_challenge_scalar();
+
+    // Sample gamma challenge
+    let gamma: ChallengeGamma<_> = transcript.squeeze_challenge_scalar();
+
+    let permutations: Vec<Vec<permutation::prover::Committed<C>>> = instance
+        .iter()
+        .zip(advice.iter())
+        .map(|(instance, advice)| -> Result<Vec<_>, Error> {
+            // Commit to permutations, if any.
+            pk.vk
+                .cs
+                .permutations
+                .iter()
+                .zip(pk.permutations.iter())
+                .map(|(p, pkey)| {
+                    p.commit(
+                        params,
+                        pk,
+                        pkey,
+                        &advice.advice_values,
+                        &pk.fixed_values,
+                        instance.instance_values,
+                        beta,
+                        gamma,
+                        transcript,
+                    )
+                })
+                .collect()
+        })
+        .collect::<Result<Vec<_>, _>>()?;
+
+    let lookups: Vec<Vec<lookup::prover::Committed<C>>> = lookups
+        .into_iter()
+        .map(|lookups| -> Result<Vec<_>, _> {
+            // Construct and commit to products for each lookup
+            lookups
+                .into_iter()
+                .map(|lookup| lookup.commit_product(pk, params, theta, beta, gamma, transcript))
+                .collect::<Result<Vec<_>, _>>()
+        })
+        .collect::<Result<Vec<_>, _>>()?;
+
+    // Obtain challenge for keeping all separate gates linearly independent
+    let y: ChallengeY<_> = transcript.squeeze_challenge_scalar();
+
+    let (permutations, permutation_expressions): (Vec<Vec<_>>, Vec<Vec<_>>) = permutations
+        .into_iter()
+        .zip(advice.iter())
+        .zip(instance.iter())
+        .map(|((permutations, advice), instance)| {
+            // Evaluate the h(X) polynomial's constraint system expressions for the permutation constraints, if any.
+            permutations
+                .into_iter()
+                .zip(pk.vk.cs.permutations.iter())
+                .zip(pk.permutations.iter())
+                .map(|((p, argument), pkey)| {
+                    p.construct(
+                        pk,
+                        argument,
+                        pkey,
+                        &advice.advice_cosets,
+                        &pk.fixed_cosets,
+                        &instance.instance_cosets,
+                        beta,
+                        gamma,
+                    )
+                })
+                .unzip()
+        })
+        .unzip();
+
+    let (lookups, lookup_expressions): (Vec<Vec<_>>, Vec<Vec<_>>) = lookups
+        .into_iter()
+        .map(|lookups| {
+            // Evaluate the h(X) polynomial's constraint system expressions for the lookup constraints, if any.
+            lookups
+                .into_iter()
+                .map(|p| p.construct(pk, theta, beta, gamma))
+                .unzip()
+        })
+        .unzip();
+
+    let expressions = advice
+        .iter()
+        .zip(instance.iter())
+        .zip(permutation_expressions.into_iter())
+        .zip(lookup_expressions.into_iter())
+        .flat_map(
+            |(((advice, instance), permutation_expressions), lookup_expressions)| {
+                iter::empty()
+                    // Custom constraints
+                    .chain(meta.gates.iter().flat_map(move |gate| {
+                        gate.polynomials().iter().map(move |poly| {
+                            poly.evaluate(
+                                &|scalar| pk.vk.domain.constant_extended(scalar),
+                                &|index| pk.fixed_cosets[index].clone(),
+                                &|index| advice.advice_cosets[index].clone(),
+                                &|index| instance.instance_cosets[index].clone(),
+                                &|a, b| a + &b,
+                                &|a, b| a * &b,
+                                &|a, scalar| a * scalar,
+                            )
+                        })
+                    }))
+                    // Permutation constraints, if any.
+                    .chain(permutation_expressions.into_iter().flatten())
+                    // Lookup constraints, if any.
+                    .chain(lookup_expressions.into_iter().flatten())
+            },
+        );
+
+    // Construct the vanishing argument
+    let vanishing = vanishing::Argument::construct(params, domain, expressions, y, transcript)?;
+
+    let x: ChallengeX<_> = transcript.squeeze_challenge_scalar();
+
+    // Compute and hash instance evals for each circuit instance
+    for instance in instance.iter() {
+        // Evaluate polynomials at omega^i x
+        let instance_evals: Vec<_> = meta
+            .instance_queries
+            .iter()
+            .map(|&(column, at)| {
+                eval_polynomial(
+                    &instance.instance_polys[column.index()],
+                    domain.rotate_omega(*x, at),
+                )
+            })
+            .collect();
+
+        // Hash each instance column evaluation
+        for eval in instance_evals.iter() {
+            transcript
+                .write_scalar(*eval)
+                .map_err(|_| Error::TranscriptError)?;
+        }
+    }
+
+    // Compute and hash advice evals for each circuit instance
+    for advice in advice.iter() {
+        // Evaluate polynomials at omega^i x
+        let advice_evals: Vec<_> = meta
+            .advice_queries
+            .iter()
+            .map(|&(column, at)| {
+                eval_polynomial(
+                    &advice.advice_polys[column.index()],
+                    domain.rotate_omega(*x, at),
+                )
+            })
+            .collect();
+
+        // Hash each advice column evaluation
+        for eval in advice_evals.iter() {
+            transcript
+                .write_scalar(*eval)
+                .map_err(|_| Error::TranscriptError)?;
+        }
+    }
+
+    // Compute and hash fixed evals (shared across all circuit instances)
+    let fixed_evals: Vec<_> = meta
+        .fixed_queries
+        .iter()
+        .map(|&(column, at)| {
+            eval_polynomial(&pk.fixed_polys[column.index()], domain.rotate_omega(*x, at))
+        })
+        .collect();
+
+    // Hash each fixed column evaluation
+    for eval in fixed_evals.iter() {
+        transcript
+            .write_scalar(*eval)
+            .map_err(|_| Error::TranscriptError)?;
+    }
+
+    let vanishing = vanishing.evaluate(x, transcript)?;
+
+    // Evaluate the permutations, if any, at omega^i x.
+    let permutations: Vec<Vec<permutation::prover::Evaluated<C>>> = permutations
+        .into_iter()
+        .map(|permutations| -> Result<Vec<_>, _> {
+            permutations
+                .into_iter()
+                .zip(pk.permutations.iter())
+                .map(|(p, pkey)| p.evaluate(pk, pkey, x, transcript))
+                .collect::<Result<Vec<_>, _>>()
+        })
+        .collect::<Result<Vec<_>, _>>()?;
+
+    // Evaluate the lookups, if any, at omega^i x.
+    let lookups: Vec<Vec<lookup::prover::Evaluated<C>>> = lookups
+        .into_iter()
+        .map(|lookups| -> Result<Vec<_>, _> {
+            lookups
+                .into_iter()
+                .map(|p| p.evaluate(pk, x, transcript))
+                .collect::<Result<Vec<_>, _>>()
+        })
+        .collect::<Result<Vec<_>, _>>()?;
+
+    let instances = instance
+        .iter()
+        .zip(advice.iter())
+        .zip(permutations.iter())
+        .zip(lookups.iter())
+        .flat_map(|(((instance, advice), permutations), lookups)| {
+            iter::empty()
+                .chain(
+                    pk.vk
+                        .cs
+                        .instance_queries
+                        .iter()
+                        .map(move |&(column, at)| ProverQuery {
+                            point: domain.rotate_omega(*x, at),
+                            poly: &instance.instance_polys[column.index()],
+                            blind: Blind::default(),
+                        }),
+                )
+                .chain(
+                    pk.vk
+                        .cs
+                        .advice_queries
+                        .iter()
+                        .map(move |&(column, at)| ProverQuery {
+                            point: domain.rotate_omega(*x, at),
+                            poly: &advice.advice_polys[column.index()],
+                            blind: advice.advice_blinds[column.index()],
+                        }),
+                )
+                .chain(
+                    permutations
+                        .iter()
+                        .zip(pk.permutations.iter())
+                        .flat_map(move |(p, pkey)| p.open(pk, pkey, x))
+                        .into_iter(),
+                )
+                .chain(lookups.iter().flat_map(move |p| p.open(pk, x)).into_iter())
+        })
+        .chain(
+            pk.vk
+                .cs
+                .fixed_queries
+                .iter()
+                .map(|&(column, at)| ProverQuery {
+                    point: domain.rotate_omega(*x, at),
+                    poly: &pk.fixed_polys[column.index()],
+                    blind: Blind::default(),
+                }),
+        )
+        // We query the h(X) polynomial at x
+        .chain(vanishing.open(x));
+
+    multiopen::create_proof(params, transcript, instances).map_err(|_| Error::OpeningError)
+}
+
+
+ + \ No newline at end of file diff --git a/rustdoc/latest/src/halo2/plonk/vanishing.rs.html b/rustdoc/latest/src/halo2/plonk/vanishing.rs.html new file mode 100644 index 00000000..97751288 --- /dev/null +++ b/rustdoc/latest/src/halo2/plonk/vanishing.rs.html @@ -0,0 +1,42 @@ +vanishing.rs - source + + + +
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+
+use std::marker::PhantomData;
+
+use crate::arithmetic::CurveAffine;
+
+mod prover;
+mod verifier;
+
+/// A vanishing argument.
+pub(crate) struct Argument<C: CurveAffine> {
+    _marker: PhantomData<C>,
+}
+
+
+ + \ No newline at end of file diff --git a/rustdoc/latest/src/halo2/plonk/vanishing/prover.rs.html b/rustdoc/latest/src/halo2/plonk/vanishing/prover.rs.html new file mode 100644 index 00000000..a589a1fc --- /dev/null +++ b/rustdoc/latest/src/halo2/plonk/vanishing/prover.rs.html @@ -0,0 +1,238 @@ +prover.rs - source + + + +
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+ 32
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+ 41
+ 42
+ 43
+ 44
+ 45
+ 46
+ 47
+ 48
+ 49
+ 50
+ 51
+ 52
+ 53
+ 54
+ 55
+ 56
+ 57
+ 58
+ 59
+ 60
+ 61
+ 62
+ 63
+ 64
+ 65
+ 66
+ 67
+ 68
+ 69
+ 70
+ 71
+ 72
+ 73
+ 74
+ 75
+ 76
+ 77
+ 78
+ 79
+ 80
+ 81
+ 82
+ 83
+ 84
+ 85
+ 86
+ 87
+ 88
+ 89
+ 90
+ 91
+ 92
+ 93
+ 94
+ 95
+ 96
+ 97
+ 98
+ 99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+
+use group::Curve;
+
+use super::super::{ChallengeX, ChallengeY};
+use super::Argument;
+use crate::{
+    arithmetic::{eval_polynomial, CurveAffine, FieldExt},
+    plonk::Error,
+    poly::{
+        commitment::{Blind, Params},
+        multiopen::ProverQuery,
+        Coeff, EvaluationDomain, ExtendedLagrangeCoeff, Polynomial,
+    },
+    transcript::{EncodedChallenge, TranscriptWrite},
+};
+
+pub(in crate::plonk) struct Constructed<C: CurveAffine> {
+    h_pieces: Vec<Polynomial<C::Scalar, Coeff>>,
+    h_blinds: Vec<Blind<C::Scalar>>,
+}
+
+pub(in crate::plonk) struct Evaluated<C: CurveAffine> {
+    constructed: Constructed<C>,
+}
+
+impl<C: CurveAffine> Argument<C> {
+    pub(in crate::plonk) fn construct<E: EncodedChallenge<C>, T: TranscriptWrite<C, E>>(
+        params: &Params<C>,
+        domain: &EvaluationDomain<C::Scalar>,
+        expressions: impl Iterator<Item = Polynomial<C::Scalar, ExtendedLagrangeCoeff>>,
+        y: ChallengeY<C>,
+        transcript: &mut T,
+    ) -> Result<Constructed<C>, Error> {
+        // Evaluate the h(X) polynomial's constraint system expressions for the constraints provided
+        let h_poly = expressions.fold(domain.empty_extended(), |h_poly, v| h_poly * *y + &v);
+
+        // Divide by t(X) = X^{params.n} - 1.
+        let h_poly = domain.divide_by_vanishing_poly(h_poly);
+
+        // Obtain final h(X) polynomial
+        let h_poly = domain.extended_to_coeff(h_poly);
+
+        // Split h(X) up into pieces
+        let h_pieces = h_poly
+            .chunks_exact(params.n as usize)
+            .map(|v| domain.coeff_from_vec(v.to_vec()))
+            .collect::<Vec<_>>();
+        drop(h_poly);
+        let h_blinds: Vec<_> = h_pieces.iter().map(|_| Blind(C::Scalar::rand())).collect();
+
+        // Compute commitments to each h(X) piece
+        let h_commitments_projective: Vec<_> = h_pieces
+            .iter()
+            .zip(h_blinds.iter())
+            .map(|(h_piece, blind)| params.commit(h_piece, *blind))
+            .collect();
+        let mut h_commitments = vec![C::identity(); h_commitments_projective.len()];
+        C::Curve::batch_normalize(&h_commitments_projective, &mut h_commitments);
+        let h_commitments = h_commitments;
+
+        // Hash each h(X) piece
+        for c in h_commitments.iter() {
+            transcript
+                .write_point(*c)
+                .map_err(|_| Error::TranscriptError)?;
+        }
+
+        Ok(Constructed { h_pieces, h_blinds })
+    }
+}
+
+impl<C: CurveAffine> Constructed<C> {
+    pub(in crate::plonk) fn evaluate<E: EncodedChallenge<C>, T: TranscriptWrite<C, E>>(
+        self,
+        x: ChallengeX<C>,
+        transcript: &mut T,
+    ) -> Result<Evaluated<C>, Error> {
+        let h_evals: Vec<_> = self
+            .h_pieces
+            .iter()
+            .map(|poly| eval_polynomial(poly, *x))
+            .collect();
+
+        // Hash each advice evaluation
+        for eval in &h_evals {
+            transcript
+                .write_scalar(*eval)
+                .map_err(|_| Error::TranscriptError)?;
+        }
+
+        Ok(Evaluated { constructed: self })
+    }
+}
+
+impl<C: CurveAffine> Evaluated<C> {
+    pub(in crate::plonk) fn open(
+        &self,
+        x: ChallengeX<C>,
+    ) -> impl Iterator<Item = ProverQuery<'_, C>> + Clone {
+        self.constructed
+            .h_pieces
+            .iter()
+            .zip(self.constructed.h_blinds.iter())
+            .map(move |(h_poly, h_blind)| ProverQuery {
+                point: *x,
+                poly: h_poly,
+                blind: *h_blind,
+            })
+    }
+}
+
+
+ + \ No newline at end of file diff --git a/rustdoc/latest/src/halo2/plonk/vanishing/verifier.rs.html b/rustdoc/latest/src/halo2/plonk/vanishing/verifier.rs.html new file mode 100644 index 00000000..2786bf5f --- /dev/null +++ b/rustdoc/latest/src/halo2/plonk/vanishing/verifier.rs.html @@ -0,0 +1,194 @@ +verifier.rs - source + + + +
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+
+use ff::Field;
+
+use crate::{
+    arithmetic::CurveAffine,
+    plonk::{Error, VerifyingKey},
+    poly::multiopen::VerifierQuery,
+    transcript::{read_n_points, read_n_scalars, EncodedChallenge, TranscriptRead},
+};
+
+use super::super::{ChallengeX, ChallengeY};
+use super::Argument;
+
+pub struct Committed<C: CurveAffine> {
+    h_commitments: Vec<C>,
+}
+
+pub struct Evaluated<C: CurveAffine> {
+    h_commitments: Vec<C>,
+    h_evals: Vec<C::Scalar>,
+}
+
+impl<C: CurveAffine> Argument<C> {
+    pub(in crate::plonk) fn read_commitments<E: EncodedChallenge<C>, T: TranscriptRead<C, E>>(
+        vk: &VerifyingKey<C>,
+        transcript: &mut T,
+    ) -> Result<Committed<C>, Error> {
+        // Obtain a commitment to h(X) in the form of multiple pieces of degree n - 1
+        let h_commitments = read_n_points(transcript, vk.domain.get_quotient_poly_degree())
+            .map_err(|_| Error::TranscriptError)?;
+
+        Ok(Committed { h_commitments })
+    }
+}
+
+impl<C: CurveAffine> Committed<C> {
+    pub(in crate::plonk) fn evaluate<E: EncodedChallenge<C>, T: TranscriptRead<C, E>>(
+        self,
+        transcript: &mut T,
+    ) -> Result<Evaluated<C>, Error> {
+        let h_evals = read_n_scalars(transcript, self.h_commitments.len())
+            .map_err(|_| Error::TranscriptError)?;
+
+        Ok(Evaluated {
+            h_commitments: self.h_commitments,
+            h_evals,
+        })
+    }
+}
+
+impl<C: CurveAffine> Evaluated<C> {
+    pub(in crate::plonk) fn verify(
+        &self,
+        expressions: impl Iterator<Item = C::Scalar>,
+        y: ChallengeY<C>,
+        xn: C::Scalar,
+    ) -> Result<(), Error> {
+        let expected_h_eval = expressions.fold(C::Scalar::zero(), |h_eval, v| h_eval * &*y + &v);
+
+        // Compute h(x) from the prover
+        let h_eval = self
+            .h_evals
+            .iter()
+            .rev()
+            .fold(C::Scalar::zero(), |acc, eval| acc * &xn + eval);
+
+        // Did the prover commit to the correct polynomial?
+        if expected_h_eval != (h_eval * &(xn - &C::Scalar::one())) {
+            return Err(Error::ConstraintSystemFailure);
+        }
+
+        Ok(())
+    }
+
+    pub(in crate::plonk) fn queries(
+        &self,
+        x: ChallengeX<C>,
+    ) -> impl Iterator<Item = VerifierQuery<'_, C>> + Clone {
+        self.h_commitments
+            .iter()
+            .zip(self.h_evals.iter())
+            .map(move |(commitment, &eval)| VerifierQuery {
+                point: *x,
+                commitment,
+                eval,
+            })
+    }
+}
+
+
+ + \ No newline at end of file diff --git a/rustdoc/latest/src/halo2/plonk/verifier.rs.html b/rustdoc/latest/src/halo2/plonk/verifier.rs.html new file mode 100644 index 00000000..bab924ea --- /dev/null +++ b/rustdoc/latest/src/halo2/plonk/verifier.rs.html @@ -0,0 +1,592 @@ +verifier.rs - source + + + +
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+ 32
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+ 41
+ 42
+ 43
+ 44
+ 45
+ 46
+ 47
+ 48
+ 49
+ 50
+ 51
+ 52
+ 53
+ 54
+ 55
+ 56
+ 57
+ 58
+ 59
+ 60
+ 61
+ 62
+ 63
+ 64
+ 65
+ 66
+ 67
+ 68
+ 69
+ 70
+ 71
+ 72
+ 73
+ 74
+ 75
+ 76
+ 77
+ 78
+ 79
+ 80
+ 81
+ 82
+ 83
+ 84
+ 85
+ 86
+ 87
+ 88
+ 89
+ 90
+ 91
+ 92
+ 93
+ 94
+ 95
+ 96
+ 97
+ 98
+ 99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+
+use ff::Field;
+use std::iter;
+
+use super::{
+    vanishing, ChallengeBeta, ChallengeGamma, ChallengeTheta, ChallengeX, ChallengeY, Error,
+    VerifyingKey,
+};
+use crate::arithmetic::{CurveAffine, FieldExt};
+use crate::poly::{
+    commitment::{Guard, Params, MSM},
+    multiopen::{self, VerifierQuery},
+};
+use crate::transcript::{read_n_points, read_n_scalars, EncodedChallenge, TranscriptRead};
+
+/// Returns a boolean indicating whether or not the proof is valid
+pub fn verify_proof<'a, C: CurveAffine, E: EncodedChallenge<C>, T: TranscriptRead<C, E>>(
+    params: &'a Params<C>,
+    vk: &VerifyingKey<C>,
+    msm: MSM<'a, C>,
+    instance_commitments: &[&[C]],
+    transcript: &mut T,
+) -> Result<Guard<'a, C, E>, Error> {
+    // Check that instance_commitments matches the expected number of instance columns
+    for instance_commitments in instance_commitments.iter() {
+        if instance_commitments.len() != vk.cs.num_instance_columns {
+            return Err(Error::IncompatibleParams);
+        }
+    }
+
+    let num_proofs = instance_commitments.len();
+
+    // Hash verification key into transcript
+    vk.hash_into(transcript)
+        .map_err(|_| Error::TranscriptError)?;
+
+    for instance_commitments in instance_commitments.iter() {
+        // Hash the instance (external) commitments into the transcript
+        for commitment in *instance_commitments {
+            transcript
+                .common_point(*commitment)
+                .map_err(|_| Error::TranscriptError)?
+        }
+    }
+
+    let advice_commitments = (0..num_proofs)
+        .map(|_| -> Result<Vec<_>, _> {
+            // Hash the prover's advice commitments into the transcript
+            read_n_points(transcript, vk.cs.num_advice_columns).map_err(|_| Error::TranscriptError)
+        })
+        .collect::<Result<Vec<_>, _>>()?;
+
+    // Sample theta challenge for keeping lookup columns linearly independent
+    let theta: ChallengeTheta<_> = transcript.squeeze_challenge_scalar();
+
+    let lookups_permuted = (0..num_proofs)
+        .map(|_| -> Result<Vec<_>, _> {
+            // Hash each lookup permuted commitment
+            vk.cs
+                .lookups
+                .iter()
+                .map(|argument| argument.read_permuted_commitments(transcript))
+                .collect::<Result<Vec<_>, _>>()
+        })
+        .collect::<Result<Vec<_>, _>>()?;
+
+    // Sample beta challenge
+    let beta: ChallengeBeta<_> = transcript.squeeze_challenge_scalar();
+
+    // Sample gamma challenge
+    let gamma: ChallengeGamma<_> = transcript.squeeze_challenge_scalar();
+
+    let permutations_committed = (0..num_proofs)
+        .map(|_| -> Result<Vec<_>, _> {
+            // Hash each permutation product commitment
+            vk.cs
+                .permutations
+                .iter()
+                .map(|argument| argument.read_product_commitment(transcript))
+                .collect::<Result<Vec<_>, _>>()
+        })
+        .collect::<Result<Vec<_>, _>>()?;
+
+    let lookups_committed = lookups_permuted
+        .into_iter()
+        .map(|lookups| {
+            // Hash each lookup product commitment
+            lookups
+                .into_iter()
+                .map(|lookup| lookup.read_product_commitment(transcript))
+                .collect::<Result<Vec<_>, _>>()
+        })
+        .collect::<Result<Vec<_>, _>>()?;
+
+    // Sample y challenge, which keeps the gates linearly independent.
+    let y: ChallengeY<_> = transcript.squeeze_challenge_scalar();
+    let vanishing = vanishing::Argument::read_commitments(vk, transcript)?;
+
+    // Sample x challenge, which is used to ensure the circuit is
+    // satisfied with high probability.
+    let x: ChallengeX<_> = transcript.squeeze_challenge_scalar();
+    let instance_evals = (0..num_proofs)
+        .map(|_| -> Result<Vec<_>, _> {
+            read_n_scalars(transcript, vk.cs.instance_queries.len())
+                .map_err(|_| Error::TranscriptError)
+        })
+        .collect::<Result<Vec<_>, _>>()?;
+
+    let advice_evals = (0..num_proofs)
+        .map(|_| -> Result<Vec<_>, _> {
+            read_n_scalars(transcript, vk.cs.advice_queries.len())
+                .map_err(|_| Error::TranscriptError)
+        })
+        .collect::<Result<Vec<_>, _>>()?;
+
+    let fixed_evals = read_n_scalars(transcript, vk.cs.fixed_queries.len())
+        .map_err(|_| Error::TranscriptError)?;
+
+    let vanishing = vanishing.evaluate(transcript)?;
+
+    let permutations_evaluated = permutations_committed
+        .into_iter()
+        .map(|permutations| -> Result<Vec<_>, _> {
+            permutations
+                .into_iter()
+                .zip(vk.permutations.iter())
+                .map(|(permutation, vkey)| permutation.evaluate(vkey, transcript))
+                .collect::<Result<Vec<_>, _>>()
+        })
+        .collect::<Result<Vec<_>, _>>()?;
+
+    let lookups_evaluated = lookups_committed
+        .into_iter()
+        .map(|lookups| -> Result<Vec<_>, _> {
+            lookups
+                .into_iter()
+                .map(|lookup| lookup.evaluate(transcript))
+                .collect::<Result<Vec<_>, _>>()
+        })
+        .collect::<Result<Vec<_>, _>>()?;
+
+    // This check ensures the circuit is satisfied so long as the polynomial
+    // commitments open to the correct values.
+    {
+        // x^n
+        let xn = x.pow(&[params.n as u64, 0, 0, 0]);
+
+        // TODO: bubble this error up
+        // l_0(x)
+        let l_0 = (*x - &C::Scalar::one()).invert().unwrap() // 1 / (x - 1)
+            * &(xn - &C::Scalar::one()) // (x^n - 1) / (x - 1)
+            * &vk.domain.get_barycentric_weight(); // l_0(x)
+
+        // Compute the expected value of h(x)
+        let expressions = advice_evals
+            .iter()
+            .zip(instance_evals.iter())
+            .zip(permutations_evaluated.iter())
+            .zip(lookups_evaluated.iter())
+            .flat_map(
+                |(((advice_evals, instance_evals), permutations), lookups)| {
+                    let fixed_evals = fixed_evals.clone();
+                    let fixed_evals_copy = fixed_evals.clone();
+                    let fixed_evals_copy_copy = fixed_evals.clone();
+
+                    std::iter::empty()
+                        // Evaluate the circuit using the custom gates provided
+                        .chain(vk.cs.gates.iter().flat_map(move |gate| {
+                            let fixed_evals = fixed_evals.clone();
+
+                            gate.polynomials().iter().map(move |poly| {
+                                poly.evaluate(
+                                    &|scalar| scalar,
+                                    &|index| fixed_evals[index],
+                                    &|index| advice_evals[index],
+                                    &|index| instance_evals[index],
+                                    &|a, b| a + &b,
+                                    &|a, b| a * &b,
+                                    &|a, scalar| a * &scalar,
+                                )
+                            })
+                        }))
+                        .chain(
+                            permutations
+                                .iter()
+                                .zip(vk.cs.permutations.iter())
+                                .flat_map(move |(p, argument)| {
+                                    p.expressions(
+                                        vk,
+                                        argument,
+                                        advice_evals,
+                                        &fixed_evals_copy,
+                                        instance_evals,
+                                        l_0,
+                                        beta,
+                                        gamma,
+                                        x,
+                                    )
+                                })
+                                .into_iter(),
+                        )
+                        .chain(
+                            lookups
+                                .iter()
+                                .zip(vk.cs.lookups.iter())
+                                .flat_map(move |(p, argument)| {
+                                    p.expressions(
+                                        l_0,
+                                        argument,
+                                        theta,
+                                        beta,
+                                        gamma,
+                                        advice_evals,
+                                        &fixed_evals_copy_copy,
+                                        instance_evals,
+                                    )
+                                })
+                                .into_iter(),
+                        )
+                },
+            );
+
+        vanishing.verify(expressions, y, xn)?;
+    }
+
+    let queries = instance_commitments
+        .iter()
+        .zip(instance_evals.iter())
+        .zip(advice_commitments.iter())
+        .zip(advice_evals.iter())
+        .zip(permutations_evaluated.iter())
+        .zip(lookups_evaluated.iter())
+        .flat_map(
+            |(
+                (
+                    (((instance_commitments, instance_evals), advice_commitments), advice_evals),
+                    permutations,
+                ),
+                lookups,
+            )| {
+                iter::empty()
+                    .chain(vk.cs.instance_queries.iter().enumerate().map(
+                        move |(query_index, &(column, at))| VerifierQuery {
+                            point: vk.domain.rotate_omega(*x, at),
+                            commitment: &instance_commitments[column.index()],
+                            eval: instance_evals[query_index],
+                        },
+                    ))
+                    .chain(vk.cs.advice_queries.iter().enumerate().map(
+                        move |(query_index, &(column, at))| VerifierQuery {
+                            point: vk.domain.rotate_omega(*x, at),
+                            commitment: &advice_commitments[column.index()],
+                            eval: advice_evals[query_index],
+                        },
+                    ))
+                    .chain(
+                        permutations
+                            .iter()
+                            .zip(vk.permutations.iter())
+                            .flat_map(move |(p, vkey)| p.queries(vk, vkey, x))
+                            .into_iter(),
+                    )
+                    .chain(
+                        lookups
+                            .iter()
+                            .flat_map(move |p| p.queries(vk, x))
+                            .into_iter(),
+                    )
+            },
+        )
+        .chain(
+            vk.cs
+                .fixed_queries
+                .iter()
+                .enumerate()
+                .map(|(query_index, &(column, at))| VerifierQuery {
+                    point: vk.domain.rotate_omega(*x, at),
+                    commitment: &vk.fixed_commitments[column.index()],
+                    eval: fixed_evals[query_index],
+                }),
+        )
+        .chain(vanishing.queries(x));
+
+    // We are now convinced the circuit is satisfied so long as the
+    // polynomial commitments open to the correct values.
+    multiopen::verify_proof(params, transcript, queries, msm).map_err(|_| Error::OpeningError)
+}
+
+
+ + \ No newline at end of file diff --git a/rustdoc/latest/src/halo2/poly.rs.html b/rustdoc/latest/src/halo2/poly.rs.html new file mode 100644 index 00000000..0e7d2e81 --- /dev/null +++ b/rustdoc/latest/src/halo2/poly.rs.html @@ -0,0 +1,618 @@ +poly.rs - source + + + +
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+ 32
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+ 41
+ 42
+ 43
+ 44
+ 45
+ 46
+ 47
+ 48
+ 49
+ 50
+ 51
+ 52
+ 53
+ 54
+ 55
+ 56
+ 57
+ 58
+ 59
+ 60
+ 61
+ 62
+ 63
+ 64
+ 65
+ 66
+ 67
+ 68
+ 69
+ 70
+ 71
+ 72
+ 73
+ 74
+ 75
+ 76
+ 77
+ 78
+ 79
+ 80
+ 81
+ 82
+ 83
+ 84
+ 85
+ 86
+ 87
+ 88
+ 89
+ 90
+ 91
+ 92
+ 93
+ 94
+ 95
+ 96
+ 97
+ 98
+ 99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+
+//! Contains utilities for performing arithmetic over univariate polynomials in
+//! various forms, including computing commitments to them and provably opening
+//! the committed polynomials at arbitrary points.
+
+use crate::arithmetic::parallelize;
+use crate::arithmetic::BatchInvert;
+use crate::plonk::Assigned;
+
+use ff::Field;
+use pasta_curves::arithmetic::FieldExt;
+use std::fmt::Debug;
+use std::marker::PhantomData;
+use std::ops::{Add, Deref, DerefMut, Index, IndexMut, Mul, RangeFrom, RangeFull, Sub};
+
+pub mod commitment;
+mod domain;
+pub mod multiopen;
+
+pub use domain::*;
+
+/// This is an error that could occur during proving or circuit synthesis.
+// TODO: these errors need to be cleaned up
+#[derive(Debug)]
+pub enum Error {
+    /// OpeningProof is not well-formed
+    OpeningError,
+    /// Caller needs to re-sample a point
+    SamplingError,
+}
+
+/// The basis over which a polynomial is described.
+pub trait Basis: Clone + Debug + Send + Sync {}
+
+/// The polynomial is defined as coefficients
+#[derive(Clone, Debug)]
+pub struct Coeff;
+impl Basis for Coeff {}
+
+/// The polynomial is defined as coefficients of Lagrange basis polynomials
+#[derive(Clone, Debug)]
+pub struct LagrangeCoeff;
+impl Basis for LagrangeCoeff {}
+
+/// The polynomial is defined as coefficients of Lagrange basis polynomials in
+/// an extended size domain which supports multiplication
+#[derive(Clone, Debug)]
+pub struct ExtendedLagrangeCoeff;
+impl Basis for ExtendedLagrangeCoeff {}
+
+/// Represents a univariate polynomial defined over a field and a particular
+/// basis.
+#[derive(Clone, Debug)]
+pub struct Polynomial<F, B> {
+    values: Vec<F>,
+    _marker: PhantomData<B>,
+}
+
+impl<F, B> Index<usize> for Polynomial<F, B> {
+    type Output = F;
+
+    fn index(&self, index: usize) -> &F {
+        self.values.index(index)
+    }
+}
+
+impl<F, B> IndexMut<usize> for Polynomial<F, B> {
+    fn index_mut(&mut self, index: usize) -> &mut F {
+        self.values.index_mut(index)
+    }
+}
+
+impl<F, B> Index<RangeFrom<usize>> for Polynomial<F, B> {
+    type Output = [F];
+
+    fn index(&self, index: RangeFrom<usize>) -> &[F] {
+        self.values.index(index)
+    }
+}
+
+impl<F, B> IndexMut<RangeFrom<usize>> for Polynomial<F, B> {
+    fn index_mut(&mut self, index: RangeFrom<usize>) -> &mut [F] {
+        self.values.index_mut(index)
+    }
+}
+
+impl<F, B> Index<RangeFull> for Polynomial<F, B> {
+    type Output = [F];
+
+    fn index(&self, index: RangeFull) -> &[F] {
+        self.values.index(index)
+    }
+}
+
+impl<F, B> IndexMut<RangeFull> for Polynomial<F, B> {
+    fn index_mut(&mut self, index: RangeFull) -> &mut [F] {
+        self.values.index_mut(index)
+    }
+}
+
+impl<F, B> Deref for Polynomial<F, B> {
+    type Target = [F];
+
+    fn deref(&self) -> &[F] {
+        &self.values[..]
+    }
+}
+
+impl<F, B> DerefMut for Polynomial<F, B> {
+    fn deref_mut(&mut self) -> &mut [F] {
+        &mut self.values[..]
+    }
+}
+
+impl<F, B> Polynomial<F, B> {
+    /// Iterate over the values, which are either in coefficient or evaluation
+    /// form depending on the basis `B`.
+    pub fn iter(&self) -> impl Iterator<Item = &F> {
+        self.values.iter()
+    }
+
+    /// Iterate over the values mutably, which are either in coefficient or
+    /// evaluation form depending on the basis `B`.
+    pub fn iter_mut(&mut self) -> impl Iterator<Item = &mut F> {
+        self.values.iter_mut()
+    }
+
+    /// Gets the size of this polynomial in terms of the number of
+    /// coefficients used to describe it.
+    pub fn num_coeffs(&self) -> usize {
+        self.values.len()
+    }
+}
+
+pub(crate) fn batch_invert_assigned<F: FieldExt>(
+    assigned: &[Polynomial<Assigned<F>, LagrangeCoeff>],
+) -> Vec<Polynomial<F, LagrangeCoeff>> {
+    let mut assigned_denominators: Vec<_> = assigned
+        .iter()
+        .map(|f| {
+            f.iter()
+                .map(|value| value.denominator())
+                .collect::<Vec<_>>()
+        })
+        .collect();
+
+    assigned_denominators
+        .iter_mut()
+        .flat_map(|f| {
+            f.iter_mut()
+                // If the denominator is trivial, we can skip it, reducing the
+                // size of the batch inversion.
+                .filter_map(|d| d.as_mut())
+        })
+        .batch_invert();
+
+    assigned
+        .iter()
+        .zip(assigned_denominators.into_iter())
+        .map(|(poly, inv_denoms)| {
+            poly.invert(inv_denoms.into_iter().map(|d| d.unwrap_or_else(F::one)))
+        })
+        .collect()
+}
+
+impl<F: Field> Polynomial<Assigned<F>, LagrangeCoeff> {
+    pub(crate) fn invert(
+        &self,
+        inv_denoms: impl Iterator<Item = F> + ExactSizeIterator,
+    ) -> Polynomial<F, LagrangeCoeff> {
+        assert_eq!(inv_denoms.len(), self.values.len());
+        Polynomial {
+            values: self
+                .values
+                .iter()
+                .zip(inv_denoms.into_iter())
+                .map(|(a, inv_den)| a.numerator() * inv_den)
+                .collect(),
+            _marker: self._marker,
+        }
+    }
+}
+
+impl<F: Field> Polynomial<F, ExtendedLagrangeCoeff> {
+    /// Maps every coefficient `c` in `p` to `1 - c`.
+    pub fn one_minus(mut p: Self) -> Self {
+        parallelize(&mut p.values, |p, _start| {
+            for term in p {
+                *term = F::one() - *term;
+            }
+        });
+        p
+    }
+}
+
+impl<'a, F: Field, B: Basis> Add<&'a Polynomial<F, B>> for Polynomial<F, B> {
+    type Output = Polynomial<F, B>;
+
+    fn add(mut self, rhs: &'a Polynomial<F, B>) -> Polynomial<F, B> {
+        parallelize(&mut self.values, |lhs, start| {
+            for (lhs, rhs) in lhs.iter_mut().zip(rhs.values[start..].iter()) {
+                *lhs += *rhs;
+            }
+        });
+
+        self
+    }
+}
+
+impl<'a, F: Field, B: Basis> Sub<&'a Polynomial<F, B>> for Polynomial<F, B> {
+    type Output = Polynomial<F, B>;
+
+    fn sub(mut self, rhs: &'a Polynomial<F, B>) -> Polynomial<F, B> {
+        parallelize(&mut self.values, |lhs, start| {
+            for (lhs, rhs) in lhs.iter_mut().zip(rhs.values[start..].iter()) {
+                *lhs -= *rhs;
+            }
+        });
+
+        self
+    }
+}
+
+impl<'a, F: Field> Mul<&'a Polynomial<F, ExtendedLagrangeCoeff>>
+    for Polynomial<F, ExtendedLagrangeCoeff>
+{
+    type Output = Polynomial<F, ExtendedLagrangeCoeff>;
+
+    fn mul(
+        mut self,
+        rhs: &'a Polynomial<F, ExtendedLagrangeCoeff>,
+    ) -> Polynomial<F, ExtendedLagrangeCoeff> {
+        parallelize(&mut self.values, |lhs, start| {
+            for (lhs, rhs) in lhs.iter_mut().zip(rhs.values[start..].iter()) {
+                *lhs *= *rhs;
+            }
+        });
+
+        self
+    }
+}
+
+impl<'a, F: Field> Polynomial<F, LagrangeCoeff> {
+    /// Rotates the values in a Lagrange basis polynomial by `Rotation`
+    pub fn rotate(&self, rotation: Rotation) -> Polynomial<F, LagrangeCoeff> {
+        let mut values = self.values.clone();
+        if rotation.0 < 0 {
+            values.rotate_right((-rotation.0) as usize);
+        } else {
+            values.rotate_left(rotation.0 as usize);
+        }
+        Polynomial {
+            values,
+            _marker: PhantomData,
+        }
+    }
+}
+
+impl<'a, F: Field, B: Basis> Mul<F> for Polynomial<F, B> {
+    type Output = Polynomial<F, B>;
+
+    fn mul(mut self, rhs: F) -> Polynomial<F, B> {
+        parallelize(&mut self.values, |lhs, _| {
+            for lhs in lhs.iter_mut() {
+                *lhs *= rhs;
+            }
+        });
+
+        self
+    }
+}
+
+/// Describes the relative rotation of a vector. Negative numbers represent
+/// reverse (leftmost) rotations and positive numbers represent forward (rightmost)
+/// rotations. Zero represents no rotation.
+#[derive(Copy, Clone, Debug, PartialEq)]
+pub struct Rotation(pub i32);
+
+impl Default for Rotation {
+    fn default() -> Rotation {
+        Rotation(0)
+    }
+}
+
+impl Rotation {
+    /// The current location in the evaluation domain
+    pub fn cur() -> Rotation {
+        Rotation(0)
+    }
+
+    /// The previous location in the evaluation domain
+    pub fn prev() -> Rotation {
+        Rotation(-1)
+    }
+
+    /// The next location in the evaluation domain
+    pub fn next() -> Rotation {
+        Rotation(1)
+    }
+}
+
+
+ + \ No newline at end of file diff --git a/rustdoc/latest/src/halo2/poly/commitment.rs.html b/rustdoc/latest/src/halo2/poly/commitment.rs.html new file mode 100644 index 00000000..c8f5734e --- /dev/null +++ b/rustdoc/latest/src/halo2/poly/commitment.rs.html @@ -0,0 +1,756 @@ +commitment.rs - source + + + +
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+ 32
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+ 41
+ 42
+ 43
+ 44
+ 45
+ 46
+ 47
+ 48
+ 49
+ 50
+ 51
+ 52
+ 53
+ 54
+ 55
+ 56
+ 57
+ 58
+ 59
+ 60
+ 61
+ 62
+ 63
+ 64
+ 65
+ 66
+ 67
+ 68
+ 69
+ 70
+ 71
+ 72
+ 73
+ 74
+ 75
+ 76
+ 77
+ 78
+ 79
+ 80
+ 81
+ 82
+ 83
+ 84
+ 85
+ 86
+ 87
+ 88
+ 89
+ 90
+ 91
+ 92
+ 93
+ 94
+ 95
+ 96
+ 97
+ 98
+ 99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+
+//! This module contains an implementation of the polynomial commitment scheme
+//! described in the [Halo][halo] paper.
+//!
+//! [halo]: https://eprint.iacr.org/2019/1021
+
+use super::{Coeff, LagrangeCoeff, Polynomial};
+use crate::arithmetic::{
+    best_fft, best_multiexp, parallelize, CurveAffine, CurveExt, FieldExt, Group,
+};
+
+use ff::{Field, PrimeField};
+use group::{prime::PrimeCurveAffine, Curve, Group as _};
+use std::ops::{Add, AddAssign, Mul, MulAssign};
+
+mod msm;
+mod prover;
+mod verifier;
+
+pub use msm::MSM;
+pub use prover::create_proof;
+pub use verifier::{verify_proof, Accumulator, Guard};
+
+use std::io;
+
+/// These are the public parameters for the polynomial commitment scheme.
+#[derive(Debug)]
+pub struct Params<C: CurveAffine> {
+    pub(crate) k: u32,
+    pub(crate) n: u64,
+    pub(crate) g: Vec<C>,
+    pub(crate) g_lagrange: Vec<C>,
+    pub(crate) h: C,
+    pub(crate) u: C,
+}
+
+impl<C: CurveAffine> Params<C> {
+    /// Initializes parameters for the curve, given a random oracle to draw
+    /// points from.
+    pub fn new(k: u32) -> Self {
+        // This is usually a limitation on the curve, but we also want 32-bit
+        // architectures to be supported.
+        assert!(k < 32);
+
+        // In src/arithmetic/fields.rs we ensure that usize is at least 32 bits.
+
+        let n: u64 = 1 << k;
+
+        let g_projective = {
+            let mut g = Vec::with_capacity(n as usize);
+            g.resize(n as usize, C::Curve::identity());
+
+            parallelize(&mut g, move |g, start| {
+                let hasher = C::CurveExt::hash_to_curve("Halo2-Parameters");
+
+                for (i, g) in g.iter_mut().enumerate() {
+                    let i = (i + start) as u32;
+
+                    let mut message = [0u8; 5];
+                    message[1..5].copy_from_slice(&i.to_le_bytes());
+
+                    *g = hasher(&message);
+                }
+            });
+
+            g
+        };
+
+        let g = {
+            let mut g = vec![C::identity(); n as usize];
+            parallelize(&mut g, |g, starts| {
+                C::Curve::batch_normalize(&g_projective[starts..(starts + g.len())], g);
+            });
+            g
+        };
+
+        // Let's evaluate all of the Lagrange basis polynomials
+        // using an inverse FFT.
+        let mut alpha_inv = <<C as PrimeCurveAffine>::Curve as Group>::Scalar::ROOT_OF_UNITY_INV;
+        for _ in k..C::Scalar::S {
+            alpha_inv = alpha_inv.square();
+        }
+        let mut g_lagrange_projective = g_projective;
+        best_fft(&mut g_lagrange_projective, alpha_inv, k);
+        let minv = C::Scalar::TWO_INV.pow_vartime(&[k as u64, 0, 0, 0]);
+        parallelize(&mut g_lagrange_projective, |g, _| {
+            for g in g.iter_mut() {
+                *g *= minv;
+            }
+        });
+
+        let g_lagrange = {
+            let mut g_lagrange = vec![C::identity(); n as usize];
+            parallelize(&mut g_lagrange, |g_lagrange, starts| {
+                C::Curve::batch_normalize(
+                    &g_lagrange_projective[starts..(starts + g_lagrange.len())],
+                    g_lagrange,
+                );
+            });
+            drop(g_lagrange_projective);
+            g_lagrange
+        };
+
+        let hasher = C::CurveExt::hash_to_curve("Halo2-Parameters");
+        let h = hasher(&[1]).to_affine();
+        let u = hasher(&[2]).to_affine();
+
+        Params {
+            k,
+            n,
+            g,
+            g_lagrange,
+            h,
+            u,
+        }
+    }
+
+    /// This computes a commitment to a polynomial described by the provided
+    /// slice of coefficients. The commitment will be blinded by the blinding
+    /// factor `r`.
+    pub fn commit(&self, poly: &Polynomial<C::Scalar, Coeff>, r: Blind<C::Scalar>) -> C::Curve {
+        let mut tmp_scalars = Vec::with_capacity(poly.len() + 1);
+        let mut tmp_bases = Vec::with_capacity(poly.len() + 1);
+
+        tmp_scalars.extend(poly.iter());
+        tmp_scalars.push(r.0);
+
+        tmp_bases.extend(self.g.iter());
+        tmp_bases.push(self.h);
+
+        best_multiexp::<C>(&tmp_scalars, &tmp_bases)
+    }
+
+    /// This commits to a polynomial using its evaluations over the $2^k$ size
+    /// evaluation domain. The commitment will be blinded by the blinding factor
+    /// `r`.
+    pub fn commit_lagrange(
+        &self,
+        poly: &Polynomial<C::Scalar, LagrangeCoeff>,
+        r: Blind<C::Scalar>,
+    ) -> C::Curve {
+        let mut tmp_scalars = Vec::with_capacity(poly.len() + 1);
+        let mut tmp_bases = Vec::with_capacity(poly.len() + 1);
+
+        tmp_scalars.extend(poly.iter());
+        tmp_scalars.push(r.0);
+
+        tmp_bases.extend(self.g_lagrange.iter());
+        tmp_bases.push(self.h);
+
+        best_multiexp::<C>(&tmp_scalars, &tmp_bases)
+    }
+
+    /// Generates an empty multiscalar multiplication struct using the
+    /// appropriate params.
+    pub fn empty_msm(&self) -> MSM<C> {
+        MSM::new(self)
+    }
+
+    /// Getter for g generators
+    pub fn get_g(&self) -> Vec<C> {
+        self.g.clone()
+    }
+
+    /// Writes params to a buffer.
+    pub fn write<W: io::Write>(&self, writer: &mut W) -> io::Result<()> {
+        writer.write_all(&self.k.to_le_bytes())?;
+        for g_element in &self.g {
+            writer.write_all(g_element.to_bytes().as_ref())?;
+        }
+        for g_lagrange_element in &self.g_lagrange {
+            writer.write_all(g_lagrange_element.to_bytes().as_ref())?;
+        }
+        writer.write_all(self.h.to_bytes().as_ref())?;
+        writer.write_all(self.u.to_bytes().as_ref())?;
+
+        Ok(())
+    }
+
+    /// Reads params from a buffer.
+    pub fn read<R: io::Read>(reader: &mut R) -> io::Result<Self> {
+        let mut k = [0u8; 4];
+        reader.read_exact(&mut k[..])?;
+        let k = u32::from_le_bytes(k);
+
+        let n: u64 = 1 << k;
+
+        let g: Vec<_> = (0..n).map(|_| C::read(reader)).collect::<Result<_, _>>()?;
+        let g_lagrange: Vec<_> = (0..n).map(|_| C::read(reader)).collect::<Result<_, _>>()?;
+
+        let h = C::read(reader)?;
+        let u = C::read(reader)?;
+
+        Ok(Params {
+            k,
+            n,
+            g,
+            g_lagrange,
+            h,
+            u,
+        })
+    }
+}
+
+/// Wrapper type around a blinding factor.
+#[derive(Copy, Clone, Eq, PartialEq, Debug)]
+pub struct Blind<F>(pub F);
+
+impl<F: FieldExt> Default for Blind<F> {
+    fn default() -> Self {
+        Blind(F::one())
+    }
+}
+
+impl<F: FieldExt> Add for Blind<F> {
+    type Output = Self;
+
+    fn add(self, rhs: Blind<F>) -> Self {
+        Blind(self.0 + rhs.0)
+    }
+}
+
+impl<F: FieldExt> Mul for Blind<F> {
+    type Output = Self;
+
+    fn mul(self, rhs: Blind<F>) -> Self {
+        Blind(self.0 * rhs.0)
+    }
+}
+
+impl<F: FieldExt> AddAssign for Blind<F> {
+    fn add_assign(&mut self, rhs: Blind<F>) {
+        self.0 += rhs.0;
+    }
+}
+
+impl<F: FieldExt> MulAssign for Blind<F> {
+    fn mul_assign(&mut self, rhs: Blind<F>) {
+        self.0 *= rhs.0;
+    }
+}
+
+impl<F: FieldExt> AddAssign<F> for Blind<F> {
+    fn add_assign(&mut self, rhs: F) {
+        self.0 += rhs;
+    }
+}
+
+impl<F: FieldExt> MulAssign<F> for Blind<F> {
+    fn mul_assign(&mut self, rhs: F) {
+        self.0 *= rhs;
+    }
+}
+
+#[test]
+fn test_commit_lagrange_epaffine() {
+    const K: u32 = 6;
+
+    use crate::pasta::{EpAffine, Fq};
+    let params = Params::<EpAffine>::new(K);
+    let domain = super::EvaluationDomain::new(1, K);
+
+    let mut a = domain.empty_lagrange();
+
+    for (i, a) in a.iter_mut().enumerate() {
+        *a = Fq::from(i as u64);
+    }
+
+    let b = domain.lagrange_to_coeff(a.clone());
+
+    let alpha = Blind(Fq::rand());
+
+    assert_eq!(params.commit(&b, alpha), params.commit_lagrange(&a, alpha));
+}
+
+#[test]
+fn test_commit_lagrange_eqaffine() {
+    const K: u32 = 6;
+
+    use crate::pasta::{EqAffine, Fp};
+    let params = Params::<EqAffine>::new(K);
+    let domain = super::EvaluationDomain::new(1, K);
+
+    let mut a = domain.empty_lagrange();
+
+    for (i, a) in a.iter_mut().enumerate() {
+        *a = Fp::from(i as u64);
+    }
+
+    let b = domain.lagrange_to_coeff(a.clone());
+
+    let alpha = Blind(Fp::rand());
+
+    assert_eq!(params.commit(&b, alpha), params.commit_lagrange(&a, alpha));
+}
+
+#[test]
+fn test_opening_proof() {
+    const K: u32 = 6;
+
+    use ff::Field;
+
+    use super::{
+        commitment::{Blind, Params},
+        EvaluationDomain,
+    };
+    use crate::arithmetic::{eval_polynomial, FieldExt};
+    use crate::pasta::{EpAffine, Fq};
+    use crate::transcript::{
+        Blake2bRead, Blake2bWrite, Challenge255, Transcript, TranscriptRead, TranscriptWrite,
+    };
+
+    let params = Params::<EpAffine>::new(K);
+    let mut params_buffer = vec![];
+    params.write(&mut params_buffer).unwrap();
+    let params: Params<EpAffine> = Params::read::<_>(&mut &params_buffer[..]).unwrap();
+
+    let domain = EvaluationDomain::new(1, K);
+
+    let mut px = domain.empty_coeff();
+
+    for (i, a) in px.iter_mut().enumerate() {
+        *a = Fq::from(i as u64);
+    }
+
+    let blind = Blind(Fq::rand());
+
+    let p = params.commit(&px, blind).to_affine();
+
+    let mut transcript = Blake2bWrite::<Vec<u8>, EpAffine, Challenge255<EpAffine>>::init(vec![]);
+    transcript.write_point(p).unwrap();
+    let x = transcript.squeeze_challenge_scalar::<()>();
+    // Evaluate the polynomial
+    let v = eval_polynomial(&px, *x);
+    transcript.write_scalar(v).unwrap();
+
+    let (proof, ch_prover) = {
+        create_proof(&params, &mut transcript, &px, blind, *x).unwrap();
+        let ch_prover = transcript.squeeze_challenge();
+        (transcript.finalize(), ch_prover)
+    };
+
+    // Verify the opening proof
+    let mut transcript = Blake2bRead::<&[u8], EpAffine, Challenge255<EpAffine>>::init(&proof[..]);
+    let p_prime = transcript.read_point().unwrap();
+    assert_eq!(p, p_prime);
+    let x_prime = transcript.squeeze_challenge_scalar::<()>();
+    assert_eq!(*x, *x_prime);
+    let v_prime = transcript.read_scalar().unwrap();
+    assert_eq!(v, v_prime);
+
+    let mut commitment_msm = params.empty_msm();
+    commitment_msm.append_term(Field::one(), p);
+    let guard = verify_proof(&params, commitment_msm, &mut transcript, *x, v).unwrap();
+    let ch_verifier = transcript.squeeze_challenge();
+    assert_eq!(*ch_prover, *ch_verifier);
+
+    // Test guard behavior prior to checking another proof
+    {
+        // Test use_challenges()
+        let msm_challenges = guard.clone().use_challenges();
+        assert!(msm_challenges.eval());
+
+        // Test use_g()
+        let g = guard.compute_g();
+        let (msm_g, _accumulator) = guard.clone().use_g(g);
+        assert!(msm_g.eval());
+    }
+}
+
+
+ + \ No newline at end of file diff --git a/rustdoc/latest/src/halo2/poly/commitment/msm.rs.html b/rustdoc/latest/src/halo2/poly/commitment/msm.rs.html new file mode 100644 index 00000000..b0bdc0c2 --- /dev/null +++ b/rustdoc/latest/src/halo2/poly/commitment/msm.rs.html @@ -0,0 +1,318 @@ +msm.rs - source + + + +
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+ 32
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+ 41
+ 42
+ 43
+ 44
+ 45
+ 46
+ 47
+ 48
+ 49
+ 50
+ 51
+ 52
+ 53
+ 54
+ 55
+ 56
+ 57
+ 58
+ 59
+ 60
+ 61
+ 62
+ 63
+ 64
+ 65
+ 66
+ 67
+ 68
+ 69
+ 70
+ 71
+ 72
+ 73
+ 74
+ 75
+ 76
+ 77
+ 78
+ 79
+ 80
+ 81
+ 82
+ 83
+ 84
+ 85
+ 86
+ 87
+ 88
+ 89
+ 90
+ 91
+ 92
+ 93
+ 94
+ 95
+ 96
+ 97
+ 98
+ 99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+
+use super::Params;
+use crate::arithmetic::{best_multiexp, parallelize, CurveAffine};
+use ff::Field;
+use group::Group;
+
+/// A multiscalar multiplication in the polynomial commitment scheme
+#[derive(Debug, Clone)]
+pub struct MSM<'a, C: CurveAffine> {
+    pub(crate) params: &'a Params<C>,
+    g_scalars: Option<Vec<C::Scalar>>,
+    h_scalar: Option<C::Scalar>,
+    u_scalar: Option<C::Scalar>,
+    other_scalars: Vec<C::Scalar>,
+    other_bases: Vec<C>,
+}
+
+impl<'a, C: CurveAffine> MSM<'a, C> {
+    /// Create a new, empty MSM using the provided parameters.
+    pub fn new(params: &'a Params<C>) -> Self {
+        let g_scalars = None;
+        let h_scalar = None;
+        let u_scalar = None;
+        let other_scalars = vec![];
+        let other_bases = vec![];
+
+        MSM {
+            params,
+            g_scalars,
+            h_scalar,
+            u_scalar,
+            other_scalars,
+            other_bases,
+        }
+    }
+
+    /// Add another multiexp into this one
+    pub fn add_msm(&mut self, other: &Self) {
+        self.other_scalars.extend(other.other_scalars.iter());
+        self.other_bases.extend(other.other_bases.iter());
+
+        if let Some(g_scalars) = &other.g_scalars {
+            self.add_to_g_scalars(g_scalars);
+        }
+
+        if let Some(h_scalar) = &other.h_scalar {
+            self.add_to_h_scalar(*h_scalar);
+        }
+
+        if let Some(u_scalar) = &other.u_scalar {
+            self.add_to_u_scalar(*u_scalar);
+        }
+    }
+
+    /// Add arbitrary term (the scalar and the point)
+    pub fn append_term(&mut self, scalar: C::Scalar, point: C) {
+        self.other_scalars.push(scalar);
+        self.other_bases.push(point);
+    }
+
+    /// Add a value to the first entry of `g_scalars`.
+    pub fn add_constant_term(&mut self, constant: C::Scalar) {
+        if let Some(g_scalars) = self.g_scalars.as_mut() {
+            g_scalars[0] += &constant;
+        } else {
+            let mut g_scalars = vec![C::Scalar::zero(); self.params.n as usize];
+            g_scalars[0] += &constant;
+            self.g_scalars = Some(g_scalars);
+        }
+    }
+
+    /// Add a vector of scalars to `g_scalars`. This function will panic if the
+    /// caller provides a slice of scalars that is not of length `params.n`.
+    pub fn add_to_g_scalars(&mut self, scalars: &[C::Scalar]) {
+        assert_eq!(scalars.len(), self.params.n as usize);
+        if let Some(g_scalars) = &mut self.g_scalars {
+            parallelize(g_scalars, |g_scalars, start| {
+                for (g_scalar, scalar) in g_scalars.iter_mut().zip(scalars[start..].iter()) {
+                    *g_scalar += scalar;
+                }
+            })
+        } else {
+            self.g_scalars = Some(scalars.to_vec());
+        }
+    }
+
+    /// Add to `h_scalar`
+    pub fn add_to_h_scalar(&mut self, scalar: C::Scalar) {
+        self.h_scalar = self.h_scalar.map_or(Some(scalar), |a| Some(a + &scalar));
+    }
+
+    /// Add to `u_scalar`
+    pub fn add_to_u_scalar(&mut self, scalar: C::Scalar) {
+        self.u_scalar = self.u_scalar.map_or(Some(scalar), |a| Some(a + &scalar));
+    }
+
+    /// Scale all scalars in the MSM by some scaling factor
+    pub fn scale(&mut self, factor: C::Scalar) {
+        if let Some(g_scalars) = &mut self.g_scalars {
+            parallelize(g_scalars, |g_scalars, _| {
+                for g_scalar in g_scalars {
+                    *g_scalar *= &factor;
+                }
+            })
+        }
+
+        if !self.other_scalars.is_empty() {
+            parallelize(&mut self.other_scalars, |other_scalars, _| {
+                for other_scalar in other_scalars {
+                    *other_scalar *= &factor;
+                }
+            })
+        }
+
+        self.h_scalar = self.h_scalar.map(|a| a * &factor);
+        self.u_scalar = self.u_scalar.map(|a| a * &factor);
+    }
+
+    /// Perform multiexp and check that it results in zero
+    pub fn eval(self) -> bool {
+        let len = self.g_scalars.as_ref().map(|v| v.len()).unwrap_or(0)
+            + self.h_scalar.map(|_| 1).unwrap_or(0)
+            + self.u_scalar.map(|_| 1).unwrap_or(0)
+            + self.other_scalars.len();
+        let mut scalars: Vec<C::Scalar> = Vec::with_capacity(len);
+        let mut bases: Vec<C> = Vec::with_capacity(len);
+
+        scalars.extend(&self.other_scalars);
+        bases.extend(&self.other_bases);
+
+        if let Some(h_scalar) = self.h_scalar {
+            scalars.push(h_scalar);
+            bases.push(self.params.h);
+        }
+
+        if let Some(u_scalar) = self.u_scalar {
+            scalars.push(u_scalar);
+            bases.push(self.params.u);
+        }
+
+        if let Some(g_scalars) = &self.g_scalars {
+            scalars.extend(g_scalars);
+            bases.extend(self.params.g.iter());
+        }
+
+        assert_eq!(scalars.len(), len);
+
+        bool::from(best_multiexp(&scalars, &bases).is_identity())
+    }
+}
+
+
+ + \ No newline at end of file diff --git a/rustdoc/latest/src/halo2/poly/commitment/prover.rs.html b/rustdoc/latest/src/halo2/poly/commitment/prover.rs.html new file mode 100644 index 00000000..1b594e44 --- /dev/null +++ b/rustdoc/latest/src/halo2/poly/commitment/prover.rs.html @@ -0,0 +1,332 @@ +prover.rs - source + + + +
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+ 32
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+ 41
+ 42
+ 43
+ 44
+ 45
+ 46
+ 47
+ 48
+ 49
+ 50
+ 51
+ 52
+ 53
+ 54
+ 55
+ 56
+ 57
+ 58
+ 59
+ 60
+ 61
+ 62
+ 63
+ 64
+ 65
+ 66
+ 67
+ 68
+ 69
+ 70
+ 71
+ 72
+ 73
+ 74
+ 75
+ 76
+ 77
+ 78
+ 79
+ 80
+ 81
+ 82
+ 83
+ 84
+ 85
+ 86
+ 87
+ 88
+ 89
+ 90
+ 91
+ 92
+ 93
+ 94
+ 95
+ 96
+ 97
+ 98
+ 99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+
+use ff::Field;
+
+use super::super::{Coeff, Polynomial};
+use super::{Blind, Params};
+use crate::arithmetic::{
+    best_multiexp, compute_inner_product, eval_polynomial, parallelize, CurveAffine, FieldExt,
+};
+use crate::transcript::{EncodedChallenge, TranscriptWrite};
+
+use group::Curve;
+use std::io;
+
+/// Create a polynomial commitment opening proof for the polynomial defined
+/// by the coefficients `px`, the blinding factor `blind` used for the
+/// polynomial commitment, and the point `x` that the polynomial is
+/// evaluated at.
+///
+/// This function will panic if the provided polynomial is too large with
+/// respect to the polynomial commitment parameters.
+///
+/// **Important:** This function assumes that the provided `transcript` has
+/// already seen the common inputs: the polynomial commitment P, the claimed
+/// opening v, and the point x. It's probably also nice for the transcript
+/// to have seen the elliptic curve description and the URS, if you want to
+/// be rigorous.
+pub fn create_proof<C: CurveAffine, E: EncodedChallenge<C>, T: TranscriptWrite<C, E>>(
+    params: &Params<C>,
+    transcript: &mut T,
+    px: &Polynomial<C::Scalar, Coeff>,
+    blind: Blind<C::Scalar>,
+    x: C::Scalar,
+) -> io::Result<()> {
+    // We're limited to polynomials of degree n - 1.
+    assert!(px.len() <= params.n as usize);
+
+    // Sample a random polynomial (of same degree) that has a root at x, first
+    // by setting all coefficients to random values.
+    let mut s_poly = (*px).clone();
+    for coeff in s_poly.iter_mut() {
+        *coeff = C::Scalar::rand();
+    }
+    // Evaluate the random polynomial at x
+    let v_prime = eval_polynomial(&s_poly[..], x);
+    // Subtract constant coefficient to get a random polynomial with a root at x
+    s_poly[0] = s_poly[0] - &v_prime;
+    // And sample a random blind
+    let s_poly_blind = Blind(C::Scalar::rand());
+
+    // Write a commitment to the random polynomial to the transcript
+    let s_poly_commitment = params.commit(&s_poly, s_poly_blind).to_affine();
+    transcript.write_point(s_poly_commitment)?;
+
+    // Challenge that will ensure that the prover cannot change P but can only
+    // witness a random polynomial commitment that agrees with P at x, with high
+    // probability.
+    let iota = *transcript.squeeze_challenge_scalar::<()>();
+
+    // Challenge that ensures that the prover did not interfere with the U term
+    // in their commitments.
+    let z = *transcript.squeeze_challenge_scalar::<()>();
+
+    // We'll be opening `s_poly_commitment * iota + P - [v] G_0` to ensure it
+    // has a root at zero.
+    let mut final_poly = s_poly * iota + px;
+    let v = eval_polynomial(&final_poly, x);
+    final_poly[0] = final_poly[0] - &v;
+    let blind = s_poly_blind * Blind(iota) + blind;
+    let mut blind = blind.0;
+
+    // Initialize the vector `a` as the coefficients of the polynomial,
+    // rounding up to the parameters.
+    let mut a = final_poly.values;
+    a.resize(params.n as usize, C::Scalar::zero());
+
+    // Initialize the vector `b` as the powers of `x`. The inner product of
+    // `a` and `b` is the evaluation of the polynomial at `x`.
+    let mut b = Vec::with_capacity(1 << params.k);
+    {
+        let mut cur = C::Scalar::one();
+        for _ in 0..(1 << params.k) {
+            b.push(cur);
+            cur *= &x;
+        }
+    }
+
+    // Initialize the vector `G` from the URS. We'll be progressively collapsing
+    // this vector into smaller and smaller vectors until it is of length 1.
+    let mut g = params.g.clone();
+
+    // Perform the inner product argument, round by round.
+    for k in (1..=params.k).rev() {
+        let half = 1 << (k - 1); // half the length of `a`, `b`, `G`
+
+        // Compute L, R
+        //
+        // TODO: If we modify multiexp to take "extra" bases, we could speed
+        // this piece up a bit by combining the multiexps.
+        let l = best_multiexp(&a[half..], &g[0..half]);
+        let r = best_multiexp(&a[0..half], &g[half..]);
+        let value_l = compute_inner_product(&a[half..], &b[0..half]);
+        let value_r = compute_inner_product(&a[0..half], &b[half..]);
+        let l_randomness = C::Scalar::rand();
+        let r_randomness = C::Scalar::rand();
+        let l = l + &best_multiexp(&[value_l * &z, l_randomness], &[params.u, params.h]);
+        let r = r + &best_multiexp(&[value_r * &z, r_randomness], &[params.u, params.h]);
+        let l = l.to_affine();
+        let r = r.to_affine();
+
+        // Feed L and R into the real transcript
+        transcript.write_point(l)?;
+        transcript.write_point(r)?;
+
+        let challenge = *transcript.squeeze_challenge_scalar::<()>();
+        let challenge_inv = challenge.invert().unwrap(); // TODO, bubble this up
+
+        // Collapse `a` and `b`.
+        // TODO: parallelize
+        for i in 0..half {
+            a[i] = a[i] + &(a[i + half] * &challenge_inv);
+            b[i] = b[i] + &(b[i + half] * &challenge);
+        }
+        a.truncate(half);
+        b.truncate(half);
+
+        // Collapse `G`
+        parallel_generator_collapse(&mut g, challenge);
+        g.truncate(half);
+
+        // Update randomness (the synthetic blinding factor at the end)
+        blind += &(l_randomness * &challenge_inv);
+        blind += &(r_randomness * &challenge);
+    }
+
+    // We have fully collapsed `a`, `b`, `G`
+    assert_eq!(a.len(), 1);
+    let a = a[0];
+
+    transcript.write_scalar(a)?;
+    transcript.write_scalar(blind)?; // \xi
+
+    Ok(())
+}
+
+fn parallel_generator_collapse<C: CurveAffine>(g: &mut [C], challenge: C::Scalar) {
+    let len = g.len() / 2;
+    let (mut g_lo, g_hi) = g.split_at_mut(len);
+
+    parallelize(&mut g_lo, |g_lo, start| {
+        let g_hi = &g_hi[start..];
+        let mut tmp = Vec::with_capacity(g_lo.len());
+        for (g_lo, g_hi) in g_lo.iter().zip(g_hi.iter()) {
+            tmp.push(g_lo.to_curve() + &(*g_hi * challenge));
+        }
+        C::Curve::batch_normalize(&tmp, g_lo);
+    });
+}
+
+
+ + \ No newline at end of file diff --git a/rustdoc/latest/src/halo2/poly/commitment/verifier.rs.html b/rustdoc/latest/src/halo2/poly/commitment/verifier.rs.html new file mode 100644 index 00000000..f7b2550e --- /dev/null +++ b/rustdoc/latest/src/halo2/poly/commitment/verifier.rs.html @@ -0,0 +1,386 @@ +verifier.rs - source + + + +
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+ 32
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+ 41
+ 42
+ 43
+ 44
+ 45
+ 46
+ 47
+ 48
+ 49
+ 50
+ 51
+ 52
+ 53
+ 54
+ 55
+ 56
+ 57
+ 58
+ 59
+ 60
+ 61
+ 62
+ 63
+ 64
+ 65
+ 66
+ 67
+ 68
+ 69
+ 70
+ 71
+ 72
+ 73
+ 74
+ 75
+ 76
+ 77
+ 78
+ 79
+ 80
+ 81
+ 82
+ 83
+ 84
+ 85
+ 86
+ 87
+ 88
+ 89
+ 90
+ 91
+ 92
+ 93
+ 94
+ 95
+ 96
+ 97
+ 98
+ 99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+
+use ff::Field;
+use group::Curve;
+
+use super::super::Error;
+use super::{Params, MSM};
+use crate::transcript::{EncodedChallenge, TranscriptRead};
+
+use crate::arithmetic::{best_multiexp, BatchInvert, CurveAffine};
+
+/// A guard returned by the verifier
+#[derive(Debug, Clone)]
+pub struct Guard<'a, C: CurveAffine, E: EncodedChallenge<C>> {
+    msm: MSM<'a, C>,
+    neg_a: C::Scalar,
+    challenges: Vec<C::Scalar>,
+    challenges_packed: Vec<E>,
+}
+
+/// An accumulator instance consisting of an evaluation claim and a proof.
+#[derive(Debug, Clone)]
+pub struct Accumulator<C: CurveAffine, E: EncodedChallenge<C>> {
+    /// The claimed output of the linear-time polycommit opening protocol
+    pub g: C,
+
+    /// A vector of 128-bit challenges sampled by the verifier, to be used in
+    /// computing g.
+    pub challenges_packed: Vec<E>,
+}
+
+impl<'a, C: CurveAffine, E: EncodedChallenge<C>> Guard<'a, C, E> {
+    /// Lets caller supply the challenges and obtain an MSM with updated
+    /// scalars and points.
+    pub fn use_challenges(mut self) -> MSM<'a, C> {
+        let s = compute_s(&self.challenges, self.neg_a);
+        self.msm.add_to_g_scalars(&s);
+        self.msm.add_to_h_scalar(self.neg_a);
+
+        self.msm
+    }
+
+    /// Lets caller supply the purported G point and simply appends
+    /// [-a] G to return an updated MSM.
+    pub fn use_g(mut self, g: C) -> (MSM<'a, C>, Accumulator<C, E>) {
+        self.msm.append_term(self.neg_a, g);
+
+        let accumulator = Accumulator {
+            g,
+            challenges_packed: self.challenges_packed,
+        };
+
+        (self.msm, accumulator)
+    }
+
+    /// Computes G + H, where G = ⟨s, params.g⟩ and H is used for blinding
+    pub fn compute_g(&self) -> C {
+        let s = compute_s(&self.challenges, C::Scalar::one());
+
+        let mut tmp = best_multiexp(&s, &self.msm.params.g);
+        tmp += self.msm.params.h;
+        tmp.to_affine()
+    }
+}
+
+/// Checks to see if the proof represented within `transcript` is valid, and a
+/// point `x` that the polynomial commitment `P` opens purportedly to the value
+/// `v`. The provided `msm` should evaluate to the commitment `P` being opened.
+pub fn verify_proof<'a, C: CurveAffine, E: EncodedChallenge<C>, T: TranscriptRead<C, E>>(
+    params: &'a Params<C>,
+    mut msm: MSM<'a, C>,
+    transcript: &mut T,
+    x: C::Scalar,
+    v: C::Scalar,
+) -> Result<Guard<'a, C, E>, Error> {
+    let k = params.k as usize;
+
+    //     P - [v] G_0 + S * iota
+    //   + \sum(L_i * u_i^2) + \sum(R_i * u_i^-2)
+    msm.add_constant_term(-v);
+    let s_poly_commitment = transcript.read_point().map_err(|_| Error::OpeningError)?;
+
+    let iota = *transcript.squeeze_challenge_scalar::<()>();
+
+    msm.append_term(iota, s_poly_commitment);
+
+    let z = *transcript.squeeze_challenge_scalar::<()>();
+
+    let mut rounds = vec![];
+    for _ in 0..k {
+        // Read L and R from the proof and write them to the transcript
+        let l = transcript.read_point().map_err(|_| Error::OpeningError)?;
+        let r = transcript.read_point().map_err(|_| Error::OpeningError)?;
+
+        let challenge_packed = transcript.squeeze_challenge();
+        let challenge = *challenge_packed.as_challenge_scalar::<()>();
+
+        rounds.push((
+            l,
+            r,
+            challenge,
+            /* to be inverted */ challenge,
+            challenge_packed,
+        ));
+    }
+
+    rounds
+        .iter_mut()
+        .map(|&mut (_, _, _, ref mut challenge, _)| challenge)
+        .batch_invert();
+
+    let mut challenges = Vec::with_capacity(k);
+    let mut challenges_packed: Vec<E> = Vec::with_capacity(k);
+    for (l, r, challenge, challenge_inv, challenge_packed) in rounds {
+        msm.append_term(challenge_inv, l);
+        msm.append_term(challenge, r);
+
+        challenges.push(challenge);
+        challenges_packed.push(challenge_packed);
+    }
+
+    // Our goal is to open
+    //     msm - [v] G_0 + random_poly_commitment * iota
+    //   + \sum(L_i * u_i^2) + \sum(R_i * u_i^-2)
+    // at x to 0, by asking the prover to supply (a, \xi) such that it equals
+    //   = [a] (G + [b * z] U) + [\xi] H
+    // except that we wish for the prover to supply G as Commit(g(X); 1) so
+    // we must substitute to get
+    //   = [a] ((G - H) + [b * z] U) + [\xi] H
+    //   = [a] G + [-a] H + [abz] U + [\xi] H
+    //   = [a] G + [abz] U + [\xi - a] H
+    // but subtracting to get the desired equality
+    //   ... + [-a] G + [-abz] U + [a - \xi] H = 0
+
+    let a = transcript.read_scalar().map_err(|_| Error::SamplingError)?;
+    let neg_a = -a;
+    let xi = transcript.read_scalar().map_err(|_| Error::SamplingError)?;
+    let b = compute_b(x, &challenges);
+
+    msm.add_to_u_scalar(neg_a * &b * &z);
+    msm.add_to_h_scalar(a - &xi);
+
+    let guard = Guard {
+        msm,
+        neg_a,
+        challenges,
+        challenges_packed,
+    };
+
+    Ok(guard)
+}
+
+/// Computes $\prod\limits_{i=0}^{k-1} (1 + u_i x^{2^i})$.
+fn compute_b<F: Field>(x: F, challenges: &[F]) -> F {
+    let mut tmp = F::one();
+    let mut cur = x;
+    for challenge in challenges.iter().rev() {
+        tmp *= F::one() + &(*challenge * &cur);
+        cur *= cur;
+    }
+    tmp
+}
+
+/// Computes the coefficients of $g(X) = \prod\limits_{i=0}^{k-1} (1 + u_i X^{2^i})$.
+fn compute_s<F: Field>(challenges: &[F], init: F) -> Vec<F> {
+    assert!(!challenges.is_empty());
+    let mut v = vec![F::zero(); 1 << challenges.len()];
+    v[0] = init;
+
+    for (len, challenge) in challenges
+        .iter()
+        .rev()
+        .enumerate()
+        .map(|(i, challenge)| (1 << i, challenge))
+    {
+        let (left, right) = v.split_at_mut(len);
+        let right = &mut right[0..len];
+        right.copy_from_slice(left);
+        for v in right {
+            *v *= challenge;
+        }
+    }
+
+    v
+}
+
+
+ + \ No newline at end of file diff --git a/rustdoc/latest/src/halo2/poly/domain.rs.html b/rustdoc/latest/src/halo2/poly/domain.rs.html new file mode 100644 index 00000000..ece68c19 --- /dev/null +++ b/rustdoc/latest/src/halo2/poly/domain.rs.html @@ -0,0 +1,948 @@ +domain.rs - source + + + +
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+ 32
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+ 41
+ 42
+ 43
+ 44
+ 45
+ 46
+ 47
+ 48
+ 49
+ 50
+ 51
+ 52
+ 53
+ 54
+ 55
+ 56
+ 57
+ 58
+ 59
+ 60
+ 61
+ 62
+ 63
+ 64
+ 65
+ 66
+ 67
+ 68
+ 69
+ 70
+ 71
+ 72
+ 73
+ 74
+ 75
+ 76
+ 77
+ 78
+ 79
+ 80
+ 81
+ 82
+ 83
+ 84
+ 85
+ 86
+ 87
+ 88
+ 89
+ 90
+ 91
+ 92
+ 93
+ 94
+ 95
+ 96
+ 97
+ 98
+ 99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
+399
+400
+401
+402
+403
+404
+405
+406
+407
+408
+409
+410
+411
+412
+413
+414
+415
+416
+417
+418
+419
+420
+421
+422
+423
+424
+425
+426
+427
+428
+429
+430
+431
+432
+433
+434
+435
+436
+437
+438
+439
+440
+441
+442
+443
+444
+445
+446
+447
+448
+449
+450
+451
+452
+453
+454
+455
+456
+457
+458
+459
+460
+461
+462
+463
+464
+
+//! Contains utilities for performing polynomial arithmetic over an evaluation
+//! domain that is of a suitable size for the application.
+
+use crate::{
+    arithmetic::{best_fft, parallelize, BatchInvert, FieldExt, Group},
+    plonk::Assigned,
+};
+
+use super::{Coeff, ExtendedLagrangeCoeff, LagrangeCoeff, Polynomial, Rotation};
+
+use ff::{Field, PrimeField};
+use std::marker::PhantomData;
+
+/// This structure contains precomputed constants and other details needed for
+/// performing operations on an evaluation domain of size $2^k$ and an extended
+/// domain of size $2^{k} * j$ with $j \neq 0$.
+#[derive(Debug)]
+pub struct EvaluationDomain<G: Group> {
+    n: u64,
+    k: u32,
+    extended_k: u32,
+    omega: G::Scalar,
+    omega_inv: G::Scalar,
+    extended_omega: G::Scalar,
+    extended_omega_inv: G::Scalar,
+    g_coset: G::Scalar,
+    g_coset_inv: G::Scalar,
+    quotient_poly_degree: u64,
+    ifft_divisor: G::Scalar,
+    extended_ifft_divisor: G::Scalar,
+    t_evaluations: Vec<G::Scalar>,
+    barycentric_weight: G::Scalar,
+}
+
+impl<G: Group> EvaluationDomain<G> {
+    /// This constructs a new evaluation domain object based on the provided
+    /// values $j, k$.
+    pub fn new(j: u32, k: u32) -> Self {
+        // quotient_poly_degree * params.n - 1 is the degree of the quotient polynomial
+        let quotient_poly_degree = (j - 1) as u64;
+
+        // n = 2^k
+        let n = 1u64 << k;
+
+        // We need to work within an extended domain, not params.k but params.k + i
+        // for some integer i such that 2^(params.k + i) is sufficiently large to
+        // describe the quotient polynomial.
+        let mut extended_k = k;
+        while (1 << extended_k) < (n * quotient_poly_degree) {
+            extended_k += 1;
+        }
+
+        let mut extended_omega = G::Scalar::ROOT_OF_UNITY;
+
+        // Get extended_omega, the 2^{extended_k}'th root of unity
+        // The loop computes extended_omega = omega^{2 ^ (S - extended_k)}
+        // Notice that extended_omega ^ {2 ^ extended_k} = omega ^ {2^S} = 1.
+        for _ in extended_k..G::Scalar::S {
+            extended_omega = extended_omega.square();
+        }
+        let extended_omega = extended_omega;
+        let mut extended_omega_inv = extended_omega; // Inversion computed later
+
+        // Get omega, the 2^{k}'th root of unity (i.e. n'th root of unity)
+        // The loop computes omega = extended_omega ^ {2 ^ (extended_k - k)}
+        //           = (omega^{2 ^ (S - extended_k)})  ^ {2 ^ (extended_k - k)}
+        //           = omega ^ {2 ^ (S - k)}.
+        // Notice that omega ^ {2^k} = omega ^ {2^S} = 1.
+        let mut omega = extended_omega;
+        for _ in k..extended_k {
+            omega = omega.square();
+        }
+        let omega = omega;
+        let mut omega_inv = omega; // Inversion computed later
+
+        // We use zeta here because we know it generates a coset, and it's available
+        // already.
+        // The coset evaluation domain is:
+        // zeta {1, extended_omega, extended_omega^2, ..., extended_omega^{(2^extended_k) - 1}}
+        let g_coset = G::Scalar::ZETA;
+        let g_coset_inv = g_coset.square();
+
+        let mut t_evaluations = Vec::with_capacity(1 << (extended_k - k));
+        {
+            // Compute the evaluations of t(X) = X^n - 1 in the coset evaluation domain.
+            // We don't have to compute all of them, because it will repeat.
+            let orig = G::Scalar::ZETA.pow_vartime(&[n as u64, 0, 0, 0]);
+            let step = extended_omega.pow_vartime(&[n as u64, 0, 0, 0]);
+            let mut cur = orig;
+            loop {
+                t_evaluations.push(cur);
+                cur *= &step;
+                if cur == orig {
+                    break;
+                }
+            }
+            assert_eq!(t_evaluations.len(), 1 << (extended_k - k));
+
+            // Subtract 1 from each to give us t_evaluations[i] = t(zeta * extended_omega^i)
+            for coeff in &mut t_evaluations {
+                *coeff -= &G::Scalar::one();
+            }
+
+            // Invert, because we're dividing by this polynomial.
+            // We invert in a batch, below.
+        }
+
+        let mut ifft_divisor = G::Scalar::from_u64(1 << k); // Inversion computed later
+        let mut extended_ifft_divisor = G::Scalar::from_u64(1 << extended_k); // Inversion computed later
+
+        // The barycentric weight of 1 over the evaluation domain
+        // 1 / \prod_{i != 0} (1 - omega^i)
+        let mut barycentric_weight = G::Scalar::from(n); // Inversion computed later
+
+        // Compute batch inversion
+        t_evaluations
+            .iter_mut()
+            .chain(Some(&mut ifft_divisor))
+            .chain(Some(&mut extended_ifft_divisor))
+            .chain(Some(&mut barycentric_weight))
+            .chain(Some(&mut extended_omega_inv))
+            .chain(Some(&mut omega_inv))
+            .batch_invert();
+
+        EvaluationDomain {
+            n,
+            k,
+            extended_k,
+            omega,
+            omega_inv,
+            extended_omega,
+            extended_omega_inv,
+            g_coset,
+            g_coset_inv,
+            quotient_poly_degree,
+            ifft_divisor,
+            extended_ifft_divisor,
+            t_evaluations,
+            barycentric_weight,
+        }
+    }
+
+    /// Obtains a polynomial in Lagrange form when given a vector of Lagrange
+    /// coefficients of size `n`; panics if the provided vector is the wrong
+    /// length.
+    pub fn lagrange_from_vec(&self, values: Vec<G>) -> Polynomial<G, LagrangeCoeff> {
+        assert_eq!(values.len(), self.n as usize);
+
+        Polynomial {
+            values,
+            _marker: PhantomData,
+        }
+    }
+
+    /// Obtains a polynomial in coefficient form when given a vector of
+    /// coefficients of size `n`; panics if the provided vector is the wrong
+    /// length.
+    pub fn coeff_from_vec(&self, values: Vec<G>) -> Polynomial<G, Coeff> {
+        assert_eq!(values.len(), self.n as usize);
+
+        Polynomial {
+            values,
+            _marker: PhantomData,
+        }
+    }
+
+    /// Returns an empty (zero) polynomial in the coefficient basis
+    pub fn empty_coeff(&self) -> Polynomial<G, Coeff> {
+        Polynomial {
+            values: vec![G::group_zero(); self.n as usize],
+            _marker: PhantomData,
+        }
+    }
+
+    /// Returns an empty (zero) polynomial in the Lagrange coefficient basis
+    pub fn empty_lagrange(&self) -> Polynomial<G, LagrangeCoeff> {
+        Polynomial {
+            values: vec![G::group_zero(); self.n as usize],
+            _marker: PhantomData,
+        }
+    }
+
+    /// Returns an empty (zero) polynomial in the Lagrange coefficient basis, with
+    /// deferred inversions.
+    pub(crate) fn empty_lagrange_assigned(&self) -> Polynomial<Assigned<G>, LagrangeCoeff>
+    where
+        G: Field,
+    {
+        Polynomial {
+            values: vec![G::group_zero().into(); self.n as usize],
+            _marker: PhantomData,
+        }
+    }
+
+    /// Returns a constant polynomial in the Lagrange coefficient basis
+    pub fn constant_lagrange(&self, scalar: G) -> Polynomial<G, LagrangeCoeff> {
+        Polynomial {
+            values: vec![scalar; self.n as usize],
+            _marker: PhantomData,
+        }
+    }
+
+    /// Returns an empty (zero) polynomial in the extended Lagrange coefficient
+    /// basis
+    pub fn empty_extended(&self) -> Polynomial<G, ExtendedLagrangeCoeff> {
+        Polynomial {
+            values: vec![G::group_zero(); self.extended_len()],
+            _marker: PhantomData,
+        }
+    }
+
+    /// Returns a constant polynomial in the extended Lagrange coefficient
+    /// basis
+    pub fn constant_extended(&self, scalar: G) -> Polynomial<G, ExtendedLagrangeCoeff> {
+        Polynomial {
+            values: vec![scalar; self.extended_len()],
+            _marker: PhantomData,
+        }
+    }
+
+    /// This takes us from an n-length vector into the coefficient form.
+    ///
+    /// This function will panic if the provided vector is not the correct
+    /// length.
+    pub fn lagrange_to_coeff(&self, mut a: Polynomial<G, LagrangeCoeff>) -> Polynomial<G, Coeff> {
+        assert_eq!(a.values.len(), 1 << self.k);
+
+        // Perform inverse FFT to obtain the polynomial in coefficient form
+        Self::ifft(&mut a.values, self.omega_inv, self.k, self.ifft_divisor);
+
+        Polynomial {
+            values: a.values,
+            _marker: PhantomData,
+        }
+    }
+
+    /// This takes us from an n-length coefficient vector into a coset of the extended
+    /// evaluation domain, rotating by `rotation` if desired.
+    pub fn coeff_to_extended(
+        &self,
+        mut a: Polynomial<G, Coeff>,
+        rotation: Rotation,
+    ) -> Polynomial<G, ExtendedLagrangeCoeff> {
+        assert_eq!(a.values.len(), 1 << self.k);
+
+        assert!(rotation.0 != i32::MIN);
+        if rotation.0 == 0 {
+            // In this special case, the powers of zeta repeat so we do not need
+            // to compute them.
+            Self::distribute_powers_zeta(&mut a.values);
+        } else {
+            let mut g = self.g_coset;
+            if rotation.0 > 0 {
+                g *= &self.omega.pow_vartime(&[rotation.0 as u64, 0, 0, 0]);
+            } else {
+                g *= &self
+                    .omega_inv
+                    .pow_vartime(&[rotation.0.abs() as u64, 0, 0, 0]);
+            }
+            Self::distribute_powers(&mut a.values, g);
+        }
+        a.values.resize(self.extended_len(), G::group_zero());
+        best_fft(&mut a.values, self.extended_omega, self.extended_k);
+
+        Polynomial {
+            values: a.values,
+            _marker: PhantomData,
+        }
+    }
+
+    /// This takes us from the extended evaluation domain and gets us the
+    /// quotient polynomial coefficients.
+    ///
+    /// This function will panic if the provided vector is not the correct
+    /// length.
+    // TODO/FIXME: caller should be responsible for truncating
+    pub fn extended_to_coeff(&self, mut a: Polynomial<G, ExtendedLagrangeCoeff>) -> Vec<G> {
+        assert_eq!(a.values.len(), self.extended_len());
+
+        // Inverse FFT
+        Self::ifft(
+            &mut a.values,
+            self.extended_omega_inv,
+            self.extended_k,
+            self.extended_ifft_divisor,
+        );
+
+        // Distribute powers to move from coset; opposite from the
+        // transformation we performed earlier.
+        Self::distribute_powers(&mut a.values, self.g_coset_inv);
+
+        // Truncate it to match the size of the quotient polynomial; the
+        // evaluation domain might be slightly larger than necessary because
+        // it always lies on a power-of-two boundary.
+        a.values
+            .truncate((&self.n * self.quotient_poly_degree) as usize);
+
+        a.values
+    }
+
+    /// This divides the polynomial (in the extended domain) by the vanishing
+    /// polynomial of the $2^k$ size domain.
+    pub fn divide_by_vanishing_poly(
+        &self,
+        mut a: Polynomial<G, ExtendedLagrangeCoeff>,
+    ) -> Polynomial<G, ExtendedLagrangeCoeff> {
+        assert_eq!(a.values.len(), self.extended_len());
+
+        // Divide to obtain the quotient polynomial in the coset evaluation
+        // domain.
+        parallelize(&mut a.values, |h, mut index| {
+            for h in h {
+                h.group_scale(&self.t_evaluations[index % self.t_evaluations.len()]);
+                index += 1;
+            }
+        });
+
+        Polynomial {
+            values: a.values,
+            _marker: PhantomData,
+        }
+    }
+
+    // Given a slice of group elements `[a_0, a_1, a_2, ...]`, this returns
+    // `[a_0, [zeta]a_1, [zeta^2]a_2, a_3, [zeta]a_4, [zeta^2]a_5, a_6, ...]`,
+    // where zeta is a cube root of unity in the multiplicative subgroup with
+    // order (p - 1), i.e. zeta^3 = 1.
+    fn distribute_powers_zeta(mut a: &mut [G]) {
+        let coset_powers = [G::Scalar::ZETA, G::Scalar::ZETA.square()];
+        parallelize(&mut a, |a, mut index| {
+            for a in a {
+                // Distribute powers to move into coset
+                let i = index % (coset_powers.len() + 1);
+                if i != 0 {
+                    a.group_scale(&coset_powers[i - 1]);
+                }
+                index += 1;
+            }
+        });
+    }
+
+    // Given a length-`n` slice of group elements `a` and a scalar `g`, this
+    // returns `[a_0, [g]a_1, [g^2]a_2, [g^3]a_3, ..., [g^n-1] a_{n-1}]`.
+    fn distribute_powers(mut a: &mut [G], g: G::Scalar) {
+        parallelize(&mut a, |a, index| {
+            let mut cur = g.pow_vartime(&[index as u64, 0, 0, 0]);
+            for a in a {
+                a.group_scale(&cur);
+                cur *= &g;
+            }
+        });
+    }
+
+    fn ifft(a: &mut [G], omega_inv: G::Scalar, log_n: u32, divisor: G::Scalar) {
+        best_fft(a, omega_inv, log_n);
+        parallelize(a, |a, _| {
+            for a in a {
+                // Finish iFFT
+                a.group_scale(&divisor);
+            }
+        });
+    }
+
+    /// Get the size of the extended domain
+    pub fn extended_len(&self) -> usize {
+        1 << self.extended_k
+    }
+
+    /// Get $\omega$, the generator of the $2^k$ order multiplicative subgroup.
+    pub fn get_omega(&self) -> G::Scalar {
+        self.omega
+    }
+
+    /// Get $\omega^{-1}$, the inverse of the generator of the $2^k$ order
+    /// multiplicative subgroup.
+    pub fn get_omega_inv(&self) -> G::Scalar {
+        self.omega_inv
+    }
+
+    /// Get the generator of the extended domain's multiplicative subgroup.
+    pub fn get_extended_omega(&self) -> G::Scalar {
+        self.extended_omega
+    }
+
+    /// Multiplies a value by some power of $\omega$, essentially rotating over
+    /// the domain.
+    pub fn rotate_omega(&self, value: G::Scalar, rotation: Rotation) -> G::Scalar {
+        let mut point = value;
+        if rotation.0 >= 0 {
+            point *= &self.get_omega().pow(&[rotation.0 as u64, 0, 0, 0]);
+        } else {
+            point *= &self
+                .get_omega_inv()
+                .pow(&[rotation.0.abs() as u64, 0, 0, 0]);
+        }
+        point
+    }
+
+    /// Gets the barycentric weight of $1$ over the $2^k$ size domain.
+    pub fn get_barycentric_weight(&self) -> G::Scalar {
+        self.barycentric_weight
+    }
+
+    /// Gets the quotient polynomial's degree (as a multiple of n)
+    pub fn get_quotient_poly_degree(&self) -> usize {
+        self.quotient_poly_degree as usize
+    }
+
+    /// Obtain a pinned version of this evaluation domain; a structure with the
+    /// minimal parameters needed to determine the rest of the evaluation
+    /// domain.
+    pub fn pinned(&self) -> PinnedEvaluationDomain<'_, G> {
+        PinnedEvaluationDomain {
+            k: &self.k,
+            extended_k: &self.extended_k,
+            omega: &self.omega,
+        }
+    }
+}
+
+/// Represents the minimal parameters that determine an `EvaluationDomain`.
+#[derive(Debug)]
+pub struct PinnedEvaluationDomain<'a, G: Group> {
+    k: &'a u32,
+    extended_k: &'a u32,
+    omega: &'a G::Scalar,
+}
+
+#[test]
+fn test_rotate() {
+    use crate::arithmetic::eval_polynomial;
+    use crate::pasta::pallas::Scalar;
+    let domain = EvaluationDomain::<Scalar>::new(1, 3);
+
+    let mut poly = domain.empty_lagrange();
+    assert_eq!(poly.len(), 8);
+    for value in poly.iter_mut() {
+        *value = Scalar::rand();
+    }
+
+    let poly_rotated_cur = poly.rotate(Rotation::cur());
+    let poly_rotated_next = poly.rotate(Rotation::next());
+    let poly_rotated_prev = poly.rotate(Rotation::prev());
+
+    let poly = domain.lagrange_to_coeff(poly);
+    let poly_rotated_cur = domain.lagrange_to_coeff(poly_rotated_cur);
+    let poly_rotated_next = domain.lagrange_to_coeff(poly_rotated_next);
+    let poly_rotated_prev = domain.lagrange_to_coeff(poly_rotated_prev);
+
+    let x = Scalar::rand();
+
+    assert_eq!(
+        eval_polynomial(&poly[..], x),
+        eval_polynomial(&poly_rotated_cur[..], x)
+    );
+    assert_eq!(
+        eval_polynomial(&poly[..], x * domain.omega),
+        eval_polynomial(&poly_rotated_next[..], x)
+    );
+    assert_eq!(
+        eval_polynomial(&poly[..], x * domain.omega_inv),
+        eval_polynomial(&poly_rotated_prev[..], x)
+    );
+}
+
+
+ + \ No newline at end of file diff --git a/rustdoc/latest/src/halo2/poly/multiopen.rs.html b/rustdoc/latest/src/halo2/poly/multiopen.rs.html new file mode 100644 index 00000000..938b6098 --- /dev/null +++ b/rustdoc/latest/src/halo2/poly/multiopen.rs.html @@ -0,0 +1,1022 @@ +multiopen.rs - source + + + +
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+ 32
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+ 41
+ 42
+ 43
+ 44
+ 45
+ 46
+ 47
+ 48
+ 49
+ 50
+ 51
+ 52
+ 53
+ 54
+ 55
+ 56
+ 57
+ 58
+ 59
+ 60
+ 61
+ 62
+ 63
+ 64
+ 65
+ 66
+ 67
+ 68
+ 69
+ 70
+ 71
+ 72
+ 73
+ 74
+ 75
+ 76
+ 77
+ 78
+ 79
+ 80
+ 81
+ 82
+ 83
+ 84
+ 85
+ 86
+ 87
+ 88
+ 89
+ 90
+ 91
+ 92
+ 93
+ 94
+ 95
+ 96
+ 97
+ 98
+ 99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
+399
+400
+401
+402
+403
+404
+405
+406
+407
+408
+409
+410
+411
+412
+413
+414
+415
+416
+417
+418
+419
+420
+421
+422
+423
+424
+425
+426
+427
+428
+429
+430
+431
+432
+433
+434
+435
+436
+437
+438
+439
+440
+441
+442
+443
+444
+445
+446
+447
+448
+449
+450
+451
+452
+453
+454
+455
+456
+457
+458
+459
+460
+461
+462
+463
+464
+465
+466
+467
+468
+469
+470
+471
+472
+473
+474
+475
+476
+477
+478
+479
+480
+481
+482
+483
+484
+485
+486
+487
+488
+489
+490
+491
+492
+493
+494
+495
+496
+497
+498
+499
+500
+501
+
+//! This module contains an optimisation of the polynomial commitment opening
+//! scheme described in the [Halo][halo] paper.
+//!
+//! [halo]: https://eprint.iacr.org/2019/1021
+
+use std::collections::{BTreeMap, BTreeSet};
+
+use super::*;
+use crate::{
+    arithmetic::{CurveAffine, FieldExt},
+    transcript::ChallengeScalar,
+};
+
+mod prover;
+mod verifier;
+
+pub use prover::create_proof;
+pub use verifier::verify_proof;
+
+#[derive(Clone, Copy, Debug)]
+struct X1 {}
+/// Challenge for compressing openings at the same point sets together.
+type ChallengeX1<F> = ChallengeScalar<F, X1>;
+
+#[derive(Clone, Copy, Debug)]
+struct X2 {}
+/// Challenge for keeping the multi-point quotient polynomial terms linearly independent.
+type ChallengeX2<F> = ChallengeScalar<F, X2>;
+
+#[derive(Clone, Copy, Debug)]
+struct X3 {}
+/// Challenge point at which the commitments are opened.
+type ChallengeX3<F> = ChallengeScalar<F, X3>;
+
+#[derive(Clone, Copy, Debug)]
+struct X4 {}
+/// Challenge for collapsing the openings of the various remaining polynomials at x_3
+/// together.
+type ChallengeX4<F> = ChallengeScalar<F, X4>;
+
+/// A polynomial query at a point
+#[derive(Debug, Clone)]
+pub struct ProverQuery<'a, C: CurveAffine> {
+    /// point at which polynomial is queried
+    pub point: C::Scalar,
+    /// coefficients of polynomial
+    pub poly: &'a Polynomial<C::Scalar, Coeff>,
+    /// blinding factor of polynomial
+    pub blind: commitment::Blind<C::Scalar>,
+}
+
+/// A polynomial query at a point
+#[derive(Debug, Clone)]
+pub struct VerifierQuery<'a, C: CurveAffine> {
+    /// point at which polynomial is queried
+    pub point: C::Scalar,
+    /// commitment to polynomial
+    pub commitment: &'a C,
+    /// evaluation of polynomial at query point
+    pub eval: C::Scalar,
+}
+
+struct CommitmentData<F, T: PartialEq> {
+    commitment: T,
+    set_index: usize,
+    point_indices: Vec<usize>,
+    evals: Vec<F>,
+}
+
+impl<F, T: PartialEq> CommitmentData<F, T> {
+    fn new(commitment: T) -> Self {
+        CommitmentData {
+            commitment,
+            set_index: 0,
+            point_indices: vec![],
+            evals: vec![],
+        }
+    }
+}
+
+trait Query<F>: Sized {
+    type Commitment: PartialEq + Copy;
+    type Eval: Clone + Default;
+
+    fn get_point(&self) -> F;
+    fn get_eval(&self) -> Self::Eval;
+    fn get_commitment(&self) -> Self::Commitment;
+}
+
+type IntermediateSets<F, Q> = (
+    Vec<CommitmentData<<Q as Query<F>>::Eval, <Q as Query<F>>::Commitment>>,
+    Vec<Vec<F>>,
+);
+
+fn construct_intermediate_sets<F: FieldExt, I, Q: Query<F>>(queries: I) -> IntermediateSets<F, Q>
+where
+    I: IntoIterator<Item = Q> + Clone,
+{
+    // Construct sets of unique commitments and corresponding information about
+    // their queries.
+    let mut commitment_map: Vec<CommitmentData<Q::Eval, Q::Commitment>> = vec![];
+
+    // Also construct mapping from a unique point to a point_index. This defines
+    // an ordering on the points.
+    let mut point_index_map = BTreeMap::new();
+
+    // Iterate over all of the queries, computing the ordering of the points
+    // while also creating new commitment data.
+    for query in queries.clone() {
+        let num_points = point_index_map.len();
+        let point_idx = point_index_map
+            .entry(query.get_point())
+            .or_insert(num_points);
+
+        if let Some(pos) = commitment_map
+            .iter()
+            .position(|comm| comm.commitment == query.get_commitment())
+        {
+            commitment_map[pos].point_indices.push(*point_idx);
+        } else {
+            let mut tmp = CommitmentData::new(query.get_commitment());
+            tmp.point_indices.push(*point_idx);
+            commitment_map.push(tmp);
+        }
+    }
+
+    // Also construct inverse mapping from point_index to the point
+    let mut inverse_point_index_map = BTreeMap::new();
+    for (&point, &point_index) in point_index_map.iter() {
+        inverse_point_index_map.insert(point_index, point);
+    }
+
+    // Construct map of unique ordered point_idx_sets to their set_idx
+    let mut point_idx_sets = BTreeMap::new();
+    // Also construct mapping from commitment to point_idx_set
+    let mut commitment_set_map = Vec::new();
+
+    for commitment_data in commitment_map.iter() {
+        let mut point_index_set = BTreeSet::new();
+        // Note that point_index_set is ordered, unlike point_indices
+        for &point_index in commitment_data.point_indices.iter() {
+            point_index_set.insert(point_index);
+        }
+
+        // Push point_index_set to CommitmentData for the relevant commitment
+        commitment_set_map.push((commitment_data.commitment, point_index_set.clone()));
+
+        let num_sets = point_idx_sets.len();
+        point_idx_sets.entry(point_index_set).or_insert(num_sets);
+    }
+
+    // Initialise empty evals vec for each unique commitment
+    for commitment_data in commitment_map.iter_mut() {
+        let len = commitment_data.point_indices.len();
+        commitment_data.evals = vec![Q::Eval::default(); len];
+    }
+
+    // Populate set_index, evals and points for each commitment using point_idx_sets
+    for query in queries {
+        // The index of the point at which the commitment is queried
+        let point_index = point_index_map.get(&query.get_point()).unwrap();
+
+        // The point_index_set at which the commitment was queried
+        let mut point_index_set = BTreeSet::new();
+        for (commitment, point_idx_set) in commitment_set_map.iter() {
+            if query.get_commitment() == *commitment {
+                point_index_set = point_idx_set.clone();
+            }
+        }
+        assert!(!point_index_set.is_empty());
+
+        // The set_index of the point_index_set
+        let set_index = point_idx_sets.get(&point_index_set).unwrap();
+        for commitment_data in commitment_map.iter_mut() {
+            if query.get_commitment() == commitment_data.commitment {
+                commitment_data.set_index = *set_index;
+            }
+        }
+        let point_index_set: Vec<usize> = point_index_set.iter().cloned().collect();
+
+        // The offset of the point_index in the point_index_set
+        let point_index_in_set = point_index_set
+            .iter()
+            .position(|i| i == point_index)
+            .unwrap();
+
+        for commitment_data in commitment_map.iter_mut() {
+            if query.get_commitment() == commitment_data.commitment {
+                // Insert the eval using the ordering of the point_index_set
+                commitment_data.evals[point_index_in_set] = query.get_eval();
+            }
+        }
+    }
+
+    // Get actual points in each point set
+    let mut point_sets: Vec<Vec<F>> = vec![Vec::new(); point_idx_sets.len()];
+    for (point_idx_set, &set_idx) in point_idx_sets.iter() {
+        for &point_idx in point_idx_set.iter() {
+            let point = inverse_point_index_map.get(&point_idx).unwrap();
+            point_sets[set_idx].push(*point);
+        }
+    }
+
+    (commitment_map, point_sets)
+}
+
+#[test]
+fn test_roundtrip() {
+    use group::Curve;
+
+    use super::commitment::{Blind, Params};
+    use crate::arithmetic::{eval_polynomial, FieldExt};
+    use crate::pasta::{EqAffine, Fp};
+    use crate::transcript::Challenge255;
+
+    const K: u32 = 4;
+
+    let params: Params<EqAffine> = Params::new(K);
+    let domain = EvaluationDomain::new(1, K);
+
+    let mut ax = domain.empty_coeff();
+    for (i, a) in ax.iter_mut().enumerate() {
+        *a = Fp::from(10 + i as u64);
+    }
+
+    let mut bx = domain.empty_coeff();
+    for (i, a) in bx.iter_mut().enumerate() {
+        *a = Fp::from(100 + i as u64);
+    }
+
+    let mut cx = domain.empty_coeff();
+    for (i, a) in cx.iter_mut().enumerate() {
+        *a = Fp::from(100 + i as u64);
+    }
+
+    let blind = Blind(Fp::rand());
+
+    let a = params.commit(&ax, blind).to_affine();
+    let b = params.commit(&bx, blind).to_affine();
+    let c = params.commit(&cx, blind).to_affine();
+
+    let x = Fp::rand();
+    let y = Fp::rand();
+    let avx = eval_polynomial(&ax, x);
+    let bvx = eval_polynomial(&bx, x);
+    let cvy = eval_polynomial(&cx, y);
+
+    let mut transcript = crate::transcript::Blake2bWrite::<_, _, Challenge255<_>>::init(vec![]);
+    create_proof(
+        &params,
+        &mut transcript,
+        std::iter::empty()
+            .chain(Some(ProverQuery {
+                point: x,
+                poly: &ax,
+                blind,
+            }))
+            .chain(Some(ProverQuery {
+                point: x,
+                poly: &bx,
+                blind,
+            }))
+            .chain(Some(ProverQuery {
+                point: y,
+                poly: &cx,
+                blind,
+            })),
+    )
+    .unwrap();
+    let proof = transcript.finalize();
+
+    {
+        let mut proof = &proof[..];
+        let mut transcript =
+            crate::transcript::Blake2bRead::<_, _, Challenge255<_>>::init(&mut proof);
+        let msm = params.empty_msm();
+
+        let guard = verify_proof(
+            &params,
+            &mut transcript,
+            std::iter::empty()
+                .chain(Some(VerifierQuery {
+                    point: x,
+                    commitment: &a,
+                    eval: avx,
+                }))
+                .chain(Some(VerifierQuery {
+                    point: x,
+                    commitment: &b,
+                    eval: avx, // NB: wrong!
+                }))
+                .chain(Some(VerifierQuery {
+                    point: y,
+                    commitment: &c,
+                    eval: cvy,
+                })),
+            msm,
+        )
+        .unwrap();
+
+        // Should fail.
+        assert!(!guard.use_challenges().eval());
+    }
+
+    {
+        let mut proof = &proof[..];
+
+        let mut transcript =
+            crate::transcript::Blake2bRead::<_, _, Challenge255<_>>::init(&mut proof);
+        let msm = params.empty_msm();
+
+        let guard = verify_proof(
+            &params,
+            &mut transcript,
+            std::iter::empty()
+                .chain(Some(VerifierQuery {
+                    point: x,
+                    commitment: &a,
+                    eval: avx,
+                }))
+                .chain(Some(VerifierQuery {
+                    point: x,
+                    commitment: &b,
+                    eval: bvx,
+                }))
+                .chain(Some(VerifierQuery {
+                    point: y,
+                    commitment: &c,
+                    eval: cvy,
+                })),
+            msm,
+        )
+        .unwrap();
+
+        // Should succeed.
+        assert!(guard.use_challenges().eval());
+    }
+}
+
+#[cfg(test)]
+mod tests {
+    use super::{construct_intermediate_sets, Query};
+    use crate::arithmetic::FieldExt;
+    use crate::pasta::Fp;
+
+    #[derive(Clone)]
+    struct MyQuery<F> {
+        commitment: usize,
+        point: F,
+        eval: F,
+    }
+
+    impl<F: Clone + Default> Query<F> for MyQuery<F> {
+        type Commitment = usize;
+        type Eval = F;
+
+        fn get_point(&self) -> F {
+            self.point.clone()
+        }
+        fn get_eval(&self) -> Self::Eval {
+            self.eval.clone()
+        }
+        fn get_commitment(&self) -> Self::Commitment {
+            self.commitment
+        }
+    }
+
+    #[test]
+    fn test_coherence() {
+        let points = &[Fp::rand(), Fp::rand(), Fp::rand(), Fp::rand(), Fp::rand()];
+
+        let build_queries = || {
+            vec![
+                MyQuery {
+                    commitment: 0,
+                    point: points[0],
+                    eval: Fp::rand(),
+                },
+                MyQuery {
+                    commitment: 0,
+                    point: points[1],
+                    eval: Fp::rand(),
+                },
+                MyQuery {
+                    commitment: 1,
+                    point: points[0],
+                    eval: Fp::rand(),
+                },
+                MyQuery {
+                    commitment: 1,
+                    point: points[1],
+                    eval: Fp::rand(),
+                },
+                MyQuery {
+                    commitment: 2,
+                    point: points[0],
+                    eval: Fp::rand(),
+                },
+                MyQuery {
+                    commitment: 2,
+                    point: points[1],
+                    eval: Fp::rand(),
+                },
+                MyQuery {
+                    commitment: 2,
+                    point: points[2],
+                    eval: Fp::rand(),
+                },
+                MyQuery {
+                    commitment: 3,
+                    point: points[0],
+                    eval: Fp::rand(),
+                },
+                MyQuery {
+                    commitment: 3,
+                    point: points[3],
+                    eval: Fp::rand(),
+                },
+                MyQuery {
+                    commitment: 4,
+                    point: points[4],
+                    eval: Fp::rand(),
+                },
+            ]
+        };
+
+        let queries = build_queries();
+
+        let (commitment_data, point_sets) = construct_intermediate_sets(queries);
+
+        // It shouldn't matter what the point or eval values are; we should get
+        // the same exact point sets again.
+        {
+            let new_queries = build_queries();
+            let (_, new_point_sets) = construct_intermediate_sets(new_queries);
+
+            assert_eq!(point_sets, new_point_sets);
+        }
+
+        let mut a = false;
+        let mut a_set = 0;
+        let mut b = false;
+        let mut b_set = 0;
+        let mut c = false;
+        let mut c_set = 0;
+        let mut d = false;
+        let mut d_set = 0;
+
+        for (i, mut point_set) in point_sets.into_iter().enumerate() {
+            point_set.sort();
+            if point_set.len() == 1 {
+                assert_eq!(point_set[0], points[4]);
+                assert!(!a);
+                a = true;
+                a_set = i;
+            } else if point_set.len() == 2 {
+                let mut v0 = [points[0], points[1]];
+                let mut v1 = [points[0], points[3]];
+                v0.sort();
+                v1.sort();
+
+                if &point_set[..] == &v0[..] {
+                    assert!(!b);
+                    b = true;
+                    b_set = i;
+                } else if &point_set[..] == &v1[..] {
+                    assert!(!c);
+                    c = true;
+                    c_set = i;
+                } else {
+                    panic!("unexpected");
+                }
+            } else if point_set.len() == 3 {
+                let mut v = [points[0], points[1], points[2]];
+                v.sort();
+                assert_eq!(&point_set[..], &v[..]);
+                assert!(!d);
+                d = true;
+                d_set = i;
+            } else {
+                panic!("unexpected");
+            }
+        }
+
+        assert!(a & b & c & d);
+
+        for commitment_data in commitment_data {
+            assert_eq!(
+                commitment_data.set_index,
+                match commitment_data.commitment {
+                    0 => b_set,
+                    1 => b_set,
+                    2 => d_set,
+                    3 => c_set,
+                    4 => a_set,
+                    _ => unreachable!(),
+                }
+            );
+        }
+    }
+}
+
+
+ + \ No newline at end of file diff --git a/rustdoc/latest/src/halo2/poly/multiopen/prover.rs.html b/rustdoc/latest/src/halo2/poly/multiopen/prover.rs.html new file mode 100644 index 00000000..74a0d740 --- /dev/null +++ b/rustdoc/latest/src/halo2/poly/multiopen/prover.rs.html @@ -0,0 +1,314 @@ +prover.rs - source + + + +
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+ 32
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+ 41
+ 42
+ 43
+ 44
+ 45
+ 46
+ 47
+ 48
+ 49
+ 50
+ 51
+ 52
+ 53
+ 54
+ 55
+ 56
+ 57
+ 58
+ 59
+ 60
+ 61
+ 62
+ 63
+ 64
+ 65
+ 66
+ 67
+ 68
+ 69
+ 70
+ 71
+ 72
+ 73
+ 74
+ 75
+ 76
+ 77
+ 78
+ 79
+ 80
+ 81
+ 82
+ 83
+ 84
+ 85
+ 86
+ 87
+ 88
+ 89
+ 90
+ 91
+ 92
+ 93
+ 94
+ 95
+ 96
+ 97
+ 98
+ 99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+
+use super::super::{
+    commitment::{self, Blind, Params},
+    Coeff, Polynomial,
+};
+use super::{
+    construct_intermediate_sets, ChallengeX1, ChallengeX2, ChallengeX3, ChallengeX4, ProverQuery,
+    Query,
+};
+
+use crate::arithmetic::{eval_polynomial, kate_division, CurveAffine, FieldExt};
+use crate::transcript::{EncodedChallenge, TranscriptWrite};
+
+use ff::Field;
+use group::Curve;
+use std::io;
+use std::marker::PhantomData;
+
+#[derive(Debug, Clone)]
+struct CommitmentData<C: CurveAffine> {
+    set_index: usize,
+    blind: Blind<C::Scalar>,
+    point_indices: Vec<usize>,
+    evals: Vec<C::Scalar>,
+}
+
+/// Create a multi-opening proof
+pub fn create_proof<'a, I, C: CurveAffine, E: EncodedChallenge<C>, T: TranscriptWrite<C, E>>(
+    params: &Params<C>,
+    transcript: &mut T,
+    queries: I,
+) -> io::Result<()>
+where
+    I: IntoIterator<Item = ProverQuery<'a, C>> + Clone,
+{
+    let x_1: ChallengeX1<_> = transcript.squeeze_challenge_scalar();
+    let x_2: ChallengeX2<_> = transcript.squeeze_challenge_scalar();
+
+    let (poly_map, point_sets) = construct_intermediate_sets(queries);
+
+    // Collapse openings at same point sets together into single openings using
+    // x_1 challenge.
+    let mut q_polys: Vec<Option<Polynomial<C::Scalar, Coeff>>> = vec![None; point_sets.len()];
+    let mut q_blinds = vec![Blind(C::Scalar::zero()); point_sets.len()];
+
+    {
+        let mut accumulate =
+            |set_idx: usize, new_poly: &Polynomial<C::Scalar, Coeff>, blind: Blind<C::Scalar>| {
+                if let Some(poly) = &q_polys[set_idx] {
+                    q_polys[set_idx] = Some(poly.clone() * *x_1 + new_poly);
+                } else {
+                    q_polys[set_idx] = Some(new_poly.clone());
+                }
+                q_blinds[set_idx] *= *x_1;
+                q_blinds[set_idx] += blind;
+            };
+
+        for commitment_data in poly_map.into_iter() {
+            accumulate(
+                commitment_data.set_index,        // set_idx,
+                commitment_data.commitment.poly,  // poly,
+                commitment_data.commitment.blind, // blind,
+            );
+        }
+    }
+
+    let f_poly = point_sets
+        .iter()
+        .zip(q_polys.iter())
+        .fold(None, |f_poly, (points, poly)| {
+            let mut poly = points
+                .iter()
+                .fold(poly.clone().unwrap().values, |poly, point| {
+                    kate_division(&poly, *point)
+                });
+            poly.resize(params.n as usize, C::Scalar::zero());
+            let poly = Polynomial {
+                values: poly,
+                _marker: PhantomData,
+            };
+
+            if f_poly.is_none() {
+                Some(poly)
+            } else {
+                f_poly.map(|f_poly| f_poly * *x_2 + &poly)
+            }
+        })
+        .unwrap();
+
+    let f_blind = Blind(C::Scalar::rand());
+    let f_commitment = params.commit(&f_poly, f_blind).to_affine();
+
+    transcript.write_point(f_commitment)?;
+
+    let x_3: ChallengeX3<_> = transcript.squeeze_challenge_scalar();
+
+    let q_evals: Vec<C::Scalar> = q_polys
+        .iter()
+        .map(|poly| eval_polynomial(poly.as_ref().unwrap(), *x_3))
+        .collect();
+
+    for eval in q_evals.iter() {
+        transcript.write_scalar(*eval)?;
+    }
+
+    let x_4: ChallengeX4<_> = transcript.squeeze_challenge_scalar();
+
+    let (f_poly, f_blind_try) = q_polys.iter().zip(q_blinds.iter()).fold(
+        (f_poly, f_blind),
+        |(f_poly, f_blind), (poly, blind)| {
+            (
+                f_poly * *x_4 + poly.as_ref().unwrap(),
+                Blind((f_blind.0 * &(*x_4)) + &blind.0),
+            )
+        },
+    );
+
+    commitment::create_proof(params, transcript, &f_poly, f_blind_try, *x_3)
+}
+
+#[doc(hidden)]
+#[derive(Copy, Clone)]
+pub struct PolynomialPointer<'a, C: CurveAffine> {
+    poly: &'a Polynomial<C::Scalar, Coeff>,
+    blind: commitment::Blind<C::Scalar>,
+}
+
+impl<'a, C: CurveAffine> PartialEq for PolynomialPointer<'a, C> {
+    fn eq(&self, other: &Self) -> bool {
+        std::ptr::eq(self.poly, other.poly)
+    }
+}
+
+impl<'a, C: CurveAffine> Query<C::Scalar> for ProverQuery<'a, C> {
+    type Commitment = PolynomialPointer<'a, C>;
+    type Eval = ();
+
+    fn get_point(&self) -> C::Scalar {
+        self.point
+    }
+    fn get_eval(&self) {}
+    fn get_commitment(&self) -> Self::Commitment {
+        PolynomialPointer {
+            poly: self.poly,
+            blind: self.blind,
+        }
+    }
+}
+
+
+ + \ No newline at end of file diff --git a/rustdoc/latest/src/halo2/poly/multiopen/verifier.rs.html b/rustdoc/latest/src/halo2/poly/multiopen/verifier.rs.html new file mode 100644 index 00000000..06e679e0 --- /dev/null +++ b/rustdoc/latest/src/halo2/poly/multiopen/verifier.rs.html @@ -0,0 +1,328 @@ +verifier.rs - source + + + +
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+ 32
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+ 41
+ 42
+ 43
+ 44
+ 45
+ 46
+ 47
+ 48
+ 49
+ 50
+ 51
+ 52
+ 53
+ 54
+ 55
+ 56
+ 57
+ 58
+ 59
+ 60
+ 61
+ 62
+ 63
+ 64
+ 65
+ 66
+ 67
+ 68
+ 69
+ 70
+ 71
+ 72
+ 73
+ 74
+ 75
+ 76
+ 77
+ 78
+ 79
+ 80
+ 81
+ 82
+ 83
+ 84
+ 85
+ 86
+ 87
+ 88
+ 89
+ 90
+ 91
+ 92
+ 93
+ 94
+ 95
+ 96
+ 97
+ 98
+ 99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+
+use ff::Field;
+
+use super::super::{
+    commitment::{Guard, Params, MSM},
+    Error,
+};
+use super::{
+    construct_intermediate_sets, ChallengeX1, ChallengeX2, ChallengeX3, ChallengeX4, Query,
+    VerifierQuery,
+};
+use crate::arithmetic::{eval_polynomial, lagrange_interpolate, CurveAffine, FieldExt};
+use crate::transcript::{EncodedChallenge, TranscriptRead};
+#[derive(Debug, Clone)]
+struct CommitmentData<C: CurveAffine> {
+    set_index: usize,
+    point_indices: Vec<usize>,
+    evals: Vec<C::Scalar>,
+}
+
+/// Verify a multi-opening proof
+pub fn verify_proof<
+    'b,
+    'a: 'b,
+    I,
+    C: CurveAffine,
+    E: EncodedChallenge<C>,
+    T: TranscriptRead<C, E>,
+>(
+    params: &'a Params<C>,
+    transcript: &mut T,
+    queries: I,
+    mut msm: MSM<'a, C>,
+) -> Result<Guard<'a, C, E>, Error>
+where
+    I: IntoIterator<Item = VerifierQuery<'b, C>> + Clone,
+{
+    // Scale the MSM by a random factor to ensure that if the existing MSM
+    // has is_zero() == false then this argument won't be able to interfere
+    // with it to make it true, with high probability.
+    msm.scale(C::Scalar::rand());
+
+    // Sample x_1 for compressing openings at the same point sets together
+    let x_1: ChallengeX1<_> = transcript.squeeze_challenge_scalar();
+
+    // Sample a challenge x_2 for keeping the multi-point quotient
+    // polynomial terms linearly independent.
+    let x_2: ChallengeX2<_> = transcript.squeeze_challenge_scalar();
+
+    let (commitment_map, point_sets) = construct_intermediate_sets(queries);
+
+    // Compress the commitments and expected evaluations at x together.
+    // using the challenge x_1
+    let mut q_commitments: Vec<_> = vec![params.empty_msm(); point_sets.len()];
+
+    // A vec of vecs of evals. The outer vec corresponds to the point set,
+    // while the inner vec corresponds to the points in a particular set.
+    let mut q_eval_sets = Vec::with_capacity(point_sets.len());
+    for point_set in point_sets.iter() {
+        q_eval_sets.push(vec![C::Scalar::zero(); point_set.len()]);
+    }
+    {
+        let mut accumulate = |set_idx: usize, new_commitment, evals: Vec<C::Scalar>| {
+            q_commitments[set_idx].scale(*x_1);
+            q_commitments[set_idx].append_term(C::Scalar::one(), new_commitment);
+            for (eval, set_eval) in evals.iter().zip(q_eval_sets[set_idx].iter_mut()) {
+                *set_eval *= &(*x_1);
+                *set_eval += eval;
+            }
+        };
+
+        // Each commitment corresponds to evaluations at a set of points.
+        // For each set, we collapse each commitment's evals pointwise.
+        for commitment_data in commitment_map.into_iter() {
+            accumulate(
+                commitment_data.set_index,     // set_idx,
+                *commitment_data.commitment.0, // commitment,
+                commitment_data.evals,         // evals
+            );
+        }
+    }
+
+    // Obtain the commitment to the multi-point quotient polynomial f(X).
+    let f_commitment = transcript.read_point().map_err(|_| Error::SamplingError)?;
+
+    // Sample a challenge x_3 for checking that f(X) was committed to
+    // correctly.
+    let x_3: ChallengeX3<_> = transcript.squeeze_challenge_scalar();
+
+    let mut q_evals = Vec::with_capacity(q_eval_sets.len());
+    for _ in 0..q_eval_sets.len() {
+        q_evals.push(transcript.read_scalar().map_err(|_| Error::SamplingError)?);
+    }
+
+    // We can compute the expected msm_eval at x_3 using the q_evals provided
+    // by the prover and from x_2
+    let msm_eval = point_sets
+        .iter()
+        .zip(q_eval_sets.iter())
+        .zip(q_evals.iter())
+        .fold(
+            C::Scalar::zero(),
+            |msm_eval, ((points, evals), proof_eval)| {
+                let r_poly = lagrange_interpolate(points, evals);
+                let r_eval = eval_polynomial(&r_poly, *x_3);
+                let eval = points.iter().fold(*proof_eval - &r_eval, |eval, point| {
+                    eval * &(*x_3 - point).invert().unwrap()
+                });
+                msm_eval * &(*x_2) + &eval
+            },
+        );
+
+    // Sample a challenge x_4 that we will use to collapse the openings of
+    // the various remaining polynomials at x_3 together.
+    let x_4: ChallengeX4<_> = transcript.squeeze_challenge_scalar();
+
+    // Compute the final commitment that has to be opened
+    msm.append_term(C::Scalar::one(), f_commitment);
+    let (msm, msm_eval) = q_commitments.into_iter().zip(q_evals.iter()).fold(
+        (msm, msm_eval),
+        |(mut msm, msm_eval), (q_commitment, q_eval)| {
+            msm.scale(*x_4);
+            msm.add_msm(&q_commitment);
+            (msm, msm_eval * &(*x_4) + q_eval)
+        },
+    );
+
+    // Verify the opening proof
+    super::commitment::verify_proof(params, msm, transcript, *x_3, msm_eval)
+}
+
+#[doc(hidden)]
+#[derive(Copy, Clone)]
+pub struct CommitmentPointer<'a, C>(&'a C);
+
+impl<'a, C> PartialEq for CommitmentPointer<'a, C> {
+    fn eq(&self, other: &Self) -> bool {
+        std::ptr::eq(self.0, other.0)
+    }
+}
+
+impl<'a, C: CurveAffine> Query<C::Scalar> for VerifierQuery<'a, C> {
+    type Commitment = CommitmentPointer<'a, C>;
+    type Eval = C::Scalar;
+
+    fn get_point(&self) -> C::Scalar {
+        self.point
+    }
+    fn get_eval(&self) -> C::Scalar {
+        self.eval
+    }
+    fn get_commitment(&self) -> Self::Commitment {
+        CommitmentPointer(self.commitment)
+    }
+}
+
+
+ + \ No newline at end of file diff --git a/rustdoc/latest/src/halo2/transcript.rs.html b/rustdoc/latest/src/halo2/transcript.rs.html new file mode 100644 index 00000000..7f03919c --- /dev/null +++ b/rustdoc/latest/src/halo2/transcript.rs.html @@ -0,0 +1,622 @@ +transcript.rs - source + + + +
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+ 32
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+ 41
+ 42
+ 43
+ 44
+ 45
+ 46
+ 47
+ 48
+ 49
+ 50
+ 51
+ 52
+ 53
+ 54
+ 55
+ 56
+ 57
+ 58
+ 59
+ 60
+ 61
+ 62
+ 63
+ 64
+ 65
+ 66
+ 67
+ 68
+ 69
+ 70
+ 71
+ 72
+ 73
+ 74
+ 75
+ 76
+ 77
+ 78
+ 79
+ 80
+ 81
+ 82
+ 83
+ 84
+ 85
+ 86
+ 87
+ 88
+ 89
+ 90
+ 91
+ 92
+ 93
+ 94
+ 95
+ 96
+ 97
+ 98
+ 99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+
+//! This module contains utilities and traits for dealing with Fiat-Shamir
+//! transcripts.
+
+use blake2b_simd::{Params as Blake2bParams, State as Blake2bState};
+use std::convert::TryInto;
+
+use crate::arithmetic::{Coordinates, CurveAffine, FieldExt};
+
+use std::io::{self, Read, Write};
+use std::marker::PhantomData;
+
+/// Prefix to a prover's message soliciting a challenge
+const BLAKE2B_PREFIX_CHALLENGE: u8 = 0;
+
+/// Prefix to a prover's message containing a curve point
+const BLAKE2B_PREFIX_POINT: u8 = 1;
+
+/// Prefix to a prover's message containing a scalar
+const BLAKE2B_PREFIX_SCALAR: u8 = 2;
+
+/// Generic transcript view (from either the prover or verifier's perspective)
+pub trait Transcript<C: CurveAffine, E: EncodedChallenge<C>> {
+    /// Squeeze an encoded verifier challenge from the transcript.
+    fn squeeze_challenge(&mut self) -> E;
+
+    /// Squeeze a typed challenge (in the scalar field) from the transcript.
+    fn squeeze_challenge_scalar<T>(&mut self) -> ChallengeScalar<C, T> {
+        ChallengeScalar {
+            inner: self.squeeze_challenge().get_scalar(),
+            _marker: PhantomData,
+        }
+    }
+
+    /// Writing the point to the transcript without writing it to the proof,
+    /// treating it as a common input.
+    fn common_point(&mut self, point: C) -> io::Result<()>;
+
+    /// Writing the scalar to the transcript without writing it to the proof,
+    /// treating it as a common input.
+    fn common_scalar(&mut self, scalar: C::Scalar) -> io::Result<()>;
+}
+
+/// Transcript view from the perspective of a verifier that has access to an
+/// input stream of data from the prover to the verifier.
+pub trait TranscriptRead<C: CurveAffine, E: EncodedChallenge<C>>: Transcript<C, E> {
+    /// Read a curve point from the prover.
+    fn read_point(&mut self) -> io::Result<C>;
+
+    /// Read a curve scalar from the prover.
+    fn read_scalar(&mut self) -> io::Result<C::Scalar>;
+}
+
+/// Transcript view from the perspective of a prover that has access to an
+/// output stream of messages from the prover to the verifier.
+pub trait TranscriptWrite<C: CurveAffine, E: EncodedChallenge<C>>: Transcript<C, E> {
+    /// Write a curve point to the proof and the transcript.
+    fn write_point(&mut self, point: C) -> io::Result<()>;
+
+    /// Write a scalar to the proof and the transcript.
+    fn write_scalar(&mut self, scalar: C::Scalar) -> io::Result<()>;
+}
+
+/// We will replace BLAKE2b with an algebraic hash function in a later version.
+#[derive(Debug, Clone)]
+pub struct Blake2bRead<R: Read, C: CurveAffine, E: EncodedChallenge<C>> {
+    state: Blake2bState,
+    reader: R,
+    _marker: PhantomData<(C, E)>,
+}
+
+impl<R: Read, C: CurveAffine, E: EncodedChallenge<C>> Blake2bRead<R, C, E> {
+    /// Initialize a transcript given an input buffer.
+    pub fn init(reader: R) -> Self {
+        Blake2bRead {
+            state: Blake2bParams::new()
+                .hash_length(64)
+                .personal(b"Halo2-Transcript")
+                .to_state(),
+            reader,
+            _marker: PhantomData,
+        }
+    }
+}
+
+impl<R: Read, C: CurveAffine> TranscriptRead<C, Challenge255<C>>
+    for Blake2bRead<R, C, Challenge255<C>>
+{
+    fn read_point(&mut self) -> io::Result<C> {
+        let mut compressed = C::Repr::default();
+        self.reader.read_exact(compressed.as_mut())?;
+        let point: C = Option::from(C::from_bytes(&compressed)).ok_or_else(|| {
+            io::Error::new(io::ErrorKind::Other, "invalid point encoding in proof")
+        })?;
+        self.common_point(point)?;
+
+        Ok(point)
+    }
+
+    fn read_scalar(&mut self) -> io::Result<C::Scalar> {
+        let mut data = [0u8; 32];
+        self.reader.read_exact(&mut data)?;
+        let scalar: C::Scalar = Option::from(C::Scalar::from_bytes(&data)).ok_or_else(|| {
+            io::Error::new(
+                io::ErrorKind::Other,
+                "invalid field element encoding in proof",
+            )
+        })?;
+        self.common_scalar(scalar)?;
+
+        Ok(scalar)
+    }
+}
+
+impl<R: Read, C: CurveAffine> Transcript<C, Challenge255<C>>
+    for Blake2bRead<R, C, Challenge255<C>>
+{
+    fn squeeze_challenge(&mut self) -> Challenge255<C> {
+        self.state.update(&[BLAKE2B_PREFIX_CHALLENGE]);
+        let hasher = self.state.clone();
+        let result: [u8; 64] = hasher.finalize().as_bytes().try_into().unwrap();
+        Challenge255::<C>::new(&result)
+    }
+
+    fn common_point(&mut self, point: C) -> io::Result<()> {
+        self.state.update(&[BLAKE2B_PREFIX_POINT]);
+        let coords: Coordinates<C> = Option::from(point.coordinates()).ok_or_else(|| {
+            io::Error::new(
+                io::ErrorKind::Other,
+                "cannot write points at infinity to the transcript",
+            )
+        })?;
+        self.state.update(&coords.x().to_bytes());
+        self.state.update(&coords.y().to_bytes());
+
+        Ok(())
+    }
+
+    fn common_scalar(&mut self, scalar: C::Scalar) -> io::Result<()> {
+        self.state.update(&[BLAKE2B_PREFIX_SCALAR]);
+        self.state.update(&scalar.to_bytes());
+
+        Ok(())
+    }
+}
+
+/// We will replace BLAKE2b with an algebraic hash function in a later version.
+#[derive(Debug, Clone)]
+pub struct Blake2bWrite<W: Write, C: CurveAffine, E: EncodedChallenge<C>> {
+    state: Blake2bState,
+    writer: W,
+    _marker: PhantomData<(C, E)>,
+}
+
+impl<W: Write, C: CurveAffine, E: EncodedChallenge<C>> Blake2bWrite<W, C, E> {
+    /// Initialize a transcript given an output buffer.
+    pub fn init(writer: W) -> Self {
+        Blake2bWrite {
+            state: Blake2bParams::new()
+                .hash_length(64)
+                .personal(b"Halo2-Transcript")
+                .to_state(),
+            writer,
+            _marker: PhantomData,
+        }
+    }
+
+    /// Conclude the interaction and return the output buffer (writer).
+    pub fn finalize(self) -> W {
+        // TODO: handle outstanding scalars? see issue #138
+        self.writer
+    }
+}
+
+impl<W: Write, C: CurveAffine> TranscriptWrite<C, Challenge255<C>>
+    for Blake2bWrite<W, C, Challenge255<C>>
+{
+    fn write_point(&mut self, point: C) -> io::Result<()> {
+        self.common_point(point)?;
+        let compressed = point.to_bytes();
+        self.writer.write_all(compressed.as_ref())
+    }
+    fn write_scalar(&mut self, scalar: C::Scalar) -> io::Result<()> {
+        self.common_scalar(scalar)?;
+        let data = scalar.to_bytes();
+        self.writer.write_all(&data[..])
+    }
+}
+
+impl<W: Write, C: CurveAffine> Transcript<C, Challenge255<C>>
+    for Blake2bWrite<W, C, Challenge255<C>>
+{
+    fn squeeze_challenge(&mut self) -> Challenge255<C> {
+        self.state.update(&[BLAKE2B_PREFIX_CHALLENGE]);
+        let hasher = self.state.clone();
+        let result: [u8; 64] = hasher.finalize().as_bytes().try_into().unwrap();
+        Challenge255::<C>::new(&result)
+    }
+
+    fn common_point(&mut self, point: C) -> io::Result<()> {
+        self.state.update(&[BLAKE2B_PREFIX_POINT]);
+        let coords: Coordinates<C> = Option::from(point.coordinates()).ok_or_else(|| {
+            io::Error::new(
+                io::ErrorKind::Other,
+                "cannot write points at infinity to the transcript",
+            )
+        })?;
+        self.state.update(&coords.x().to_bytes());
+        self.state.update(&coords.y().to_bytes());
+
+        Ok(())
+    }
+
+    fn common_scalar(&mut self, scalar: C::Scalar) -> io::Result<()> {
+        self.state.update(&[BLAKE2B_PREFIX_SCALAR]);
+        self.state.update(&scalar.to_bytes());
+
+        Ok(())
+    }
+}
+
+/// The scalar representation of a verifier challenge.
+///
+/// The `Type` type can be used to scope the challenge to a specific context, or
+/// set to `()` if no context is required.
+#[derive(Copy, Clone, Debug)]
+pub struct ChallengeScalar<C: CurveAffine, T> {
+    inner: C::Scalar,
+    _marker: PhantomData<T>,
+}
+
+impl<C: CurveAffine, T> std::ops::Deref for ChallengeScalar<C, T> {
+    type Target = C::Scalar;
+
+    fn deref(&self) -> &Self::Target {
+        &self.inner
+    }
+}
+
+/// `EncodedChallenge<C>` defines a challenge encoding with a [`Self::Input`]
+/// that is used to derive the challenge encoding and `get_challenge` obtains
+/// the _real_ `C::Scalar` that the challenge encoding represents.
+pub trait EncodedChallenge<C: CurveAffine> {
+    /// The Input type used to derive the challenge encoding. For example,
+    /// an input from the Poseidon hash would be a base field element;
+    /// an input from the Blake2b hash would be a [u8; 64].
+    type Input;
+
+    /// Get an encoded challenge from a given input challenge.
+    fn new(challenge_input: &Self::Input) -> Self;
+
+    /// Get a scalar field element from an encoded challenge.
+    fn get_scalar(&self) -> C::Scalar;
+
+    /// Cast an encoded challenge as a typed `ChallengeScalar`.
+    fn as_challenge_scalar<T>(&self) -> ChallengeScalar<C, T> {
+        ChallengeScalar {
+            inner: self.get_scalar(),
+            _marker: PhantomData,
+        }
+    }
+}
+
+/// A 255-bit challenge.
+#[derive(Copy, Clone, Debug)]
+pub struct Challenge255<C: CurveAffine>([u8; 32], PhantomData<C>);
+
+impl<C: CurveAffine> std::ops::Deref for Challenge255<C> {
+    type Target = [u8; 32];
+
+    fn deref(&self) -> &Self::Target {
+        &self.0
+    }
+}
+
+impl<C: CurveAffine> EncodedChallenge<C> for Challenge255<C> {
+    type Input = [u8; 64];
+
+    fn new(challenge_input: &[u8; 64]) -> Self {
+        Challenge255(
+            C::Scalar::from_bytes_wide(challenge_input).to_bytes(),
+            PhantomData,
+        )
+    }
+    fn get_scalar(&self) -> C::Scalar {
+        C::Scalar::from_bytes(&self.0).unwrap()
+    }
+}
+
+pub(crate) fn read_n_points<C: CurveAffine, E: EncodedChallenge<C>, T: TranscriptRead<C, E>>(
+    transcript: &mut T,
+    n: usize,
+) -> io::Result<Vec<C>> {
+    (0..n).map(|_| transcript.read_point()).collect()
+}
+
+pub(crate) fn read_n_scalars<C: CurveAffine, E: EncodedChallenge<C>, T: TranscriptRead<C, E>>(
+    transcript: &mut T,
+    n: usize,
+) -> io::Result<Vec<C::Scalar>> {
+    (0..n).map(|_| transcript.read_scalar()).collect()
+}
+
+
+ + \ No newline at end of file diff --git a/rustdoc/latest/storage.js b/rustdoc/latest/storage.js new file mode 100644 index 00000000..6b16cbd8 --- /dev/null +++ b/rustdoc/latest/storage.js @@ -0,0 +1 @@ +var resourcesSuffix="";var darkThemes=["dark","ayu"];window.currentTheme=document.getElementById("themeStyle");window.mainTheme=document.getElementById("mainThemeStyle");var settingsDataset=(function(){var settingsElement=document.getElementById("default-settings");if(settingsElement===null){return null}var dataset=settingsElement.dataset;if(dataset===undefined){return null}return dataset})();function getSettingValue(settingName){var current=getCurrentValue('rustdoc-'+settingName);if(current!==null){return current}if(settingsDataset!==null){var def=settingsDataset[settingName.replace(/-/g,'_')];if(def!==undefined){return def}}return null}var localStoredTheme=getSettingValue("theme");var savedHref=[];function hasClass(elem,className){return elem&&elem.classList&&elem.classList.contains(className)}function addClass(elem,className){if(!elem||!elem.classList){return}elem.classList.add(className)}function removeClass(elem,className){if(!elem||!elem.classList){return}elem.classList.remove(className)}function onEach(arr,func,reversed){if(arr&&arr.length>0&&func){var length=arr.length;var i;if(reversed){for(i=length-1;i>=0;--i){if(func(arr[i])){return true}}}else{for(i=0;i=0){updateLocalStorage("rustdoc-preferred-dark-theme",localStoredTheme)}updateSystemTheme()}else{switchTheme(window.currentTheme,window.mainTheme,getSettingValue("theme")||"light",false)} \ No newline at end of file diff --git a/rustdoc/latest/wheel.svg b/rustdoc/latest/wheel.svg new file mode 100644 index 00000000..01da3b24 --- /dev/null +++ b/rustdoc/latest/wheel.svg @@ -0,0 +1 @@ + \ No newline at end of file